|
2005-06-18 15:37:25 digman(6310930)
各位,有关接口部分的集成测试应该怎么做,有什么好的建议么
2005-06-18 15:50:54 森林狼(6877439)
选择合适的集成方式,自顶向下或自底向上。
2005-06-18 15:52:26 森林狼(6877439)
选择能够最大程度减少工作量的方式
2005-06-18 16:21:15 digman(6310930)
那具体的接口应该怎么测试呢,测试人员总不能去直接察看代码,看看他们的参数是否符合要求吧
2005-06-18 17:40:57 森林狼(6877439)
你所作的单元测试是什么级别的?
2005-06-18 17:41:37 digman(6310930)
我们没有做单元测试,
目前只要求程序员进行自测
2005-06-18 17:42:11 森林狼(6877439)
你说的接口测试,做的是什么样的接口啊?
2005-06-18 17:43:18 digman(6310930)
就是模块与模块之间的程序接口,需不需要去作呢。
比经代价太高
而且程序员也嫌麻烦
这么做的目的是,为了避免这个模块程序员用两个字符,传到另一个模块变成三个或者其他,或者两个模块的字符数没有保持一致
2005-06-18 17:48:42 森林狼(6877439)
模块到底指的是什么?一个函数?一个源文件?一个类?还是一个子系统?还有你们的系统构架是什么,用什么语言开发的,这都会决定你所谓的“接口”测试的难易程度,究竟应不应该测试人员来做这个东西。
2005-06-18 17:52:07 digman(6310930)
可能是一个很重要的函数,也可能是一个功能单元,我们是pb语言,
不太明白你说的系统架构是指的什么
2005-06-18 17:54:26 森林狼(6877439)
pb?是不是c/s构架,两层的。pb直接操纵sql语句,读写数据库server的。
2005-06-18 17:54:56 digman(6310930)
是的
c/s结构
财务软件
表现形式是单机版,但是包含了网络版的功能
2005-06-18 17:55:56 森林狼(6877439)
那你的接口指的是client与server的接口吗?
2005-06-18 17:56:32 digman(6310930)
我们目前没有server的概念
就是一个单机版
但是大约有六个字系统
各个系统之间也存在接口
各个系统内部的数据传递也存在接口,如果接口有错误,可能影响的地方比较多,而且很不容易发现
2005-06-18 18:00:06 森林狼(6877439)
如果模块之间数据传递这种操作比较多,应该要做单元测试的。如果程序员不肯做单元测试,是件可怕的行为。
2005-06-18 18:01:22 digman(6310930)
是啊,不过这个需要组织来推动,估计我说也白说
2005-06-18 18:01:30 digman(6310930)
走一步说一步吧,
2005-06-18 18:05:02 森林狼(6877439)
程序员不肯做单元测试,应该考虑集成测试策略,自底向上一步一步来做。当然这只是理想情况,一般领导不太原意在测试上花太多时间,他们宁可发布之后再改一个又一个的bug。所以你可以在时间允许的情况下,不必做全部模块的接口测试,对数据传递比较多的模块做接口测试即可。如果还是不能完成的话,就随即抽查几个来做,发现一些问题后,推算大致系统中应该还有多少个bug。提交给领导做决策。
2005-06-18 18:05:58 digman(6310930)
恩,这样也不错,如果这样能发现问题,还能说服程序员去做单元测试
2005-06-18 18:06:03 森林狼(6877439)
我自己觉得应该这么办。呵呵。
2005-06-18 18:06:57 digman(6310930)
我在考虑考虑,多谢了
2005-06-18 18:07:18 森林狼(6877439)
测试人员如果不能发现所有的问题,那就至少向领导给出一些警示信息,避免以后大量bug都赖在你身上,毁了你的英名
==================
2005-06-20 09:45:53 jinchen(27781767)
请问大家一个问题
关于junit的一点疑问
其实,也是对于测试的一点疑问。
对于没有返回类型的方法。
junit 怎样测试? 比如,我在void aMethod() 里有一个System.out.println("test"); 我怎样来确定这个方法是否执行正确。 是否需要把标准输出取出来比较呢?
我读过thinking in java的代码, 作者写了一个Monitor 检查标准输出与Monitor内定义的String 是否一致。
我觉得怎样证明一段代码是可以信赖的,应该有一套完整的理论,遗憾是我基本不懂。
2005-06-20 09:50:49 森林狼(6877439)
jdk 的api应该不用我们测试吧。我们使用这个api就该假定它是正确的,在这个基础上,测试我们的代码。
2005-06-20 09:52:43 jinchen(27781767)
是这样的, 我想验证,我的输出结果和我预料的一直。
比如, 我的程序有一个System.out.priontln("test");
我想用 assertSomeMethod()
{
//来证明刚才的系统输出是"test"
}
2005-06-20 09:54:40 songfun(6975740)
我们QQ共享 里有大量的单元测试的内容,大家可以去下载下来看看。
xUnit那个压缩文件。
2005-06-20 09:54:55 森林狼(6877439)
test能否正常输出到屏幕上去,由system.out.println来保证,我们要保证的是system.out.println("")中的这个参数确实是'test"
你可以assert(sting="test")啊。
string
2005-06-20 09:57:45 jinchen(27781767)
那么
比如说
public class ConstructorExam
{
public ConstructorExam()
{
super();
System.out.println("default Constructor");
}
}
如果我想测试这个构造方法? TestCsae应该怎样写呢?
2005-06-20 10:00:11 森林狼(6877439)
它调用的既然是基类的构造函数,它的test case就应该和基类的构造函数的test case相同。
首先明白构造函数的输入和输出是什么,输入是一个构造行为,输出是初始化了一些成员变量(一般的构造函数是这样的)。
2005-06-20 10:02:41 森林狼(6877439)
你的test case可以这样啊
function testconstruct()
{
construct cs;
assert(cs.member1 = " ");
assert(cs.member2 = " ");
}
2005-06-20 10:04:27 jinchen(27781767)
那么
比如说
public class ConstructorExam
{
public ConstructorExam()
{
super();
System.out.println("default Constructor");
}
}
如果我想测试这个构造方法? TestCsae应该怎样写呢?
如果我写成
public class ConstructorExam
{
prvate String str;
public ConstructorExam(String str)
{
super();
this.str=str;
System.out.println("Contructor with a String paramer\t"+this.str);
}
public String getStr()
{
return str;
}
}
如果我不验证System.out.println()
我是否可以这样来验证结果呢,
.....//
testConstructorWithStringParameter(String str)
{
ConstructorExam o = new ConstructorExam("test");
assert.equals("test",o.getStr());
}
..//
}
2005-06-20 10:04:42 啊涛(33076659)
对于 java中的api 我们可以放心的使用,sun公司对于jdk已经作了完整的测试工作。尤其是1.4以后,这个我们可以放心得。
2005-06-20 10:07:49 森林狼(6877439)
没错,你写的就是我要说的。
我不太熟悉java的语法,写错了。呵呵。
2005-06-20 10:12:19 jinchen(27781767)
那样的话我就得在类里加入相应的属性了。
如果一个方法,返回 void 而且如果方法里用的是局部变量。 那么我怎样来验证这个变量和我预料的相等呢。
这个问题一直想不明白, 怎样验证一个 void 方法的正确性呢? 前提是不能对已经写好的代码,修改。
2005-06-20 10:19:50 森林狼(6877439)
对代码也有白盒测试和黑盒测试。黑盒测试就是只关注函数的入口和输出,内部的临时局部变量是不会被考虑的。当然这种测试本身不能保证函数完全无误,需要测试人员丰富得经验和边界值的正确选取。
对代码的白盒测试应该就是把把函数里的分支都遍历,至少做到语句覆盖,这种情况下测试得很完备,但必然会要修改代码,加检测点。这种单元测试工具表面上没有修改代码,但实际上也做了插桩得操作。
我个人的看法。[]
2005-06-20 10:20:53 gladys(19785708)
其实微观看是这样的。。。
2005-06-20 10:21:07 songfun(6975740)
现在白盒比较常用的就是路径覆盖
2005-06-20 10:21:18 gladys(19785708)
不过要公司做到这么细的测试估计有难度 。
2005-06-20 10:22:42 jinchen(27781767)
明白一点了。 现在想学习一下junit 在工作中试试效果。
有难度啊。。。。。--- ----
2005-06-20 10:23:30 森林狼(6877439)
难的是应该怎样去集成吧。
不大可能把所有的函数都单元测试一遍,以前我们是随机抽查一批函数,然后根据结果,估算整个系统的bug数。
2005-06-20 10:25:45 jinchen(27781767)
hoho ,单元测试都没怎么搞过,集成就别谈了。 我们公司很少做单元测试的。 基本就是程序员自己保证写的代码没问题。 差不多就直接让测试模拟用户去走流程。
基本不作什么测试工作的, 就这样的公司也能过cmm4
汗颜啊
2005-06-20 10:27:15 森林狼(6877439)
呵呵。以前我做过cmm改进组的成员,了解一些有中国特色的cmm认证。
2005-06-20 10:28:30 小鱼(66944928)
我现在就在编cmm中关于缺陷分布和密度的文档,自己都不知道写的是什么[]
2005-06-20 10:28:47 森林狼(6877439)
形式主义太厉害了,实际操作性不高。
2005-06-20 10:29:17 小鱼(66944928)
不过有些概念的引进对我的工作还是有帮助的,
2005-06-20 10:29:44 gladys(19785708)
[|-)]。。。我手上有几张关于CMM的各种各样的培训证,但我确实不知道该怎么做质量。。
2005-06-20 10:34:43 森林狼(6877439)
我就做了cmm2级和3级的一个关键过程域,平常就是各个关键过程域的负责人在一起吵啊,争论啊,理论搞明白了不少,就是不下基层项目组干实事。后来。。。我就忍不住了,跳槽了。。。。。。。
2005-06-20 10:35:43 songfun(6975740)
那你认为干实事是哪些呢?比如……?
2005-06-20 10:38:11 gladys(19785708)
森林狼,你有没有这种感觉呢? 就是理论搞明白了,但离项目组远了,不是你忍不住了。。而是自己的心发慌,怕被在技术方面抛在后面。以后说话没力量呢,而且各人的竞争力也下降尼?
2005-06-20 10:38:20 森林狼(6877439)
cmm是美国软件企业的成功经验,如同马克思主义,本身就是一个框架,需要与中国国情结合起来的,这就是毛泽东思想。
呵呵,我觉得干那个事,我还有点早
2005-06-20 10:40:27 萧 寒(10179451)
我不这么认为。早点动手可以在以后避免很多问题
2005-06-20 10:42:30 森林狼(6877439)
而我恰恰相反,先有问题,才有理论。所以理论都是来解决问题的。
解决不了问题的理论要么被修正要么被打到。
2005-06-20 10:45:49 songfun(6975740)
我比较赞同,理论也是为问题服务的,不能解决问题的理论就是空谈。 |
|