编写驱动模块及桩模块程序
初涉及测试,听说测试还需要编写驱动模块及桩模块程序等测试程序,有不知道难不难,公司是作通迅产品的,那位可告诉我大体上驱动模块是怎样写的,用什么语言写?基于公司的产品测试,学习语言更应测重那一方面? 驱动模块主要完成以下事情:1、接受测试输入;
2、对输入进行判断;
3、将输入传给被测单元,驱动被测单元执行;
4、接受被测单元执行结果,并对结果进行判断;
5、将判断结果作为用例执行结果输出测试报告。
被测单元用什么语言,驱动就用什么语言写。
总而言之,写驱动和桩不需要太高深编程知识。如果有模板或框架作为参考的话,差不多就成了一个体力活。
谢谢天网
谢谢天网 天网能不能给予我一个驱动的例子 一个简单例子:/*被测程序*/
int Fun(int in)
{
if (in >= 0)
{
return 1;
}
else
{
return -1;
}
}
那么通过TCL进行扩展指令编写时,针对该被测函数,驱动如下:
/*用户自己扩展的用户指令,用来驱动被测函数*/
int Ex_TestFun(ClientData clientData,Tcl_Interp * interp,int argc,char* argv[])
{
int i;
int ret,iExceptedRet;
//打开测试结果记录文件
FILE * out;
out = fopen("D:\\result.txt","a");
//第一步:检查用户输入参数个数是否正确
if (3 != argc)
{
fputs("Parameters error",out);
fflush(out);
return TCL_ERROR;
}
//第二步:取出用户输入参数
if (TCL_OK != Tcl_GetInt(interp,argv,&i))
{
return TCL_ERROR;
}
if (TCL_OK != Tcl_GetInt(interp,argv,&iExceptedRet))
{
return TCL_ERROR;
}
//第三步:将参数传递给被测函数
ret = Fun(i);
//第四步:将被测函数执行结果和输入的期望结果进行比较,根据比较结果作为用例执行结果输出到测试报告中
if (ret != iExceptedRet)
{
fputs("test fail",out);
fflush(out);
}
else
{
fputs("test success",out);
fflush(out);
}
return TCL_OK;
} 天网真是好人啊。
我是新手,我也问你一个问题吧,如果要一个被测程序是一个void Fun(int in)
,函数没有return value,那么该怎么测出它的bug呢?能不能用例子说明一下。
多谢了。 函数没有返回值?
不明白。。。 比如说,该如何测试下面一个函数:
public void Fun(int in){
System.out.println("This is fun() method.");
}
或者
public void Fun(int in){
throw new Exception("Exception occured");
}
我最近一直在想类似于这种返回值是void的method该如何测,但是毫无办法。因为函数本身没有返回值,就无法确定期望值,这样给测试带来了一定的难度。
我是测试新手,不知道用什么方法可以解决,希望高手能帮一把。 建议函数一般增加返回值,除非是功能比较简单,代码量很小的函数,并且函数于外面没有接口的情况下,可以采用VOID返回类型。
另外,少于30代码行的函数不需要做单元测试,只要代码走读即可。此外,这两个函数也有问题,函数的参数在函数体内没有使用过,如果参数在函数体内被使用了,那么在使用之前应该对参数的合法性检查,如果不合法返回失败,如果检查合法,继续执行,最后返回成功。 呵呵,这是一个好问题。
单元测试是测试在单元内走不同路径时其功能是否实现,那么单元的功能是否实现是我们需要关注的。前面解释的是验证返回值是否和期望一致,对于被测单元的调用函数来讲,也许关注该返回值就行了。
但在lhtia的问题中,没有返回值,那么这里关注的功能实现结果肯定不是返回值了,具体关注什么需要根据具体单元功能而定,例如单元实现是为了改变某些全局变量,从而影响软件其他部分,那么验证期望结果时是需要验证该全局变量是否和期望值一致;又例如单元实现的功能是向其他单元发送消息,那么单元测试时需要在驱动模块创建接受消息函数,用来接受被测单元发送的消息,从而验证是否实现了预期功能。
希望上面解释能回答这个问题。
[ Last edited by 天网 on 2004-7-20 at 10:25 ] 谢谢站长和天网的解答。
天网的解决方案太棒了! 我明白你说得第一种办法,就是“验证该全局变量是否和期望值一致”;你说得第二种“单元实现的功能是向其他单元发送消息”,返回值是void的函数应该不能传送消息的吧,这种方案是不是用于“验证返回值是否和期望一致”,如果我理解错了,请多多指点。 很好的贴子,学到了不少具体操作的思路,谢谢搂主,天网,站长:)
我也谢一下
诚谢,关注Ing 请教TCL的全称是什么?谢。是tool command language的缩写么?
[ Last edited by lovelyruo on 2004-8-13 at 11:00 ] 好厉害!但基本看不懂啊!测的是纯软件的东西吗?好像是白盒测试吧