51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 70115|回复: 123
打印 上一主题 下一主题

编写驱动模块及桩模块程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2004-7-16 12:35:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初涉及测试,听说测试还需要编写驱动模块及桩模块程序等测试程序,有不知道难不难,公司是作通迅产品的,那位可告诉我大体上驱动模块是怎样写的,用什么语言写?基于公司的产品测试,学习语言更应测重那一方面?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2

该用户从未签到

2#
发表于 2004-7-16 13:40:54 | 只看该作者
驱动模块主要完成以下事情:
1、接受测试输入;
2、对输入进行判断;
3、将输入传给被测单元,驱动被测单元执行;
4、接受被测单元执行结果,并对结果进行判断;
5、将判断结果作为用例执行结果输出测试报告。

被测单元用什么语言,驱动就用什么语言写。

总而言之,写驱动和桩不需要太高深编程知识。如果有模板或框架作为参考的话,差不多就成了一个体力活。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2004-7-16 14:18:08 | 只看该作者

谢谢天网

谢谢天网
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2004-7-16 14:20:50 | 只看该作者
天网能不能给予我一个驱动的例子
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2004-7-16 15:04:35 | 只看该作者
一个简单例子:

/*被测程序*/
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[1],&i))
   {
              return TCL_ERROR;            
   }

   if (TCL_OK != Tcl_GetInt(interp,argv[2],&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;
}
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2004-7-18 05:17:41 | 只看该作者
天网真是好人啊。

我是新手,我也问你一个问题吧,如果要一个被测程序是一个void Fun(int in)
,函数没有return value,那么该怎么测出它的bug呢?能不能用例子说明一下。

多谢了。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2018-2-28 18:04
  • 签到天数: 40 天

    连续签到: 1 天

    [LV.5]测试团长

    7#
    发表于 2004-7-18 22:06:14 | 只看该作者
    函数没有返回值?
    不明白。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2004-7-19 05:04:13 | 只看该作者
    比如说,该如何测试下面一个函数:

    public void Fun(int in){
    System.out.println("This is fun() method.");
    }

    或者

    public void Fun(int in){
    throw new Exception("Exception occured");
    }

    我最近一直在想类似于这种返回值是void的method该如何测,但是毫无办法。因为函数本身没有返回值,就无法确定期望值,这样给测试带来了一定的难度。

    我是测试新手,不知道用什么方法可以解决,希望高手能帮一把。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2004-7-19 09:38:46 | 只看该作者
    建议函数一般增加返回值,除非是功能比较简单,代码量很小的函数,并且函数于外面没有接口的情况下,可以采用VOID返回类型。

    另外,少于30代码行的函数不需要做单元测试,只要代码走读即可。此外,这两个函数也有问题,函数的参数在函数体内没有使用过,如果参数在函数体内被使用了,那么在使用之前应该对参数的合法性检查,如果不合法返回失败,如果检查合法,继续执行,最后返回成功。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2004-7-19 09:58:18 | 只看该作者
    呵呵,这是一个好问题。
    单元测试是测试在单元内走不同路径时其功能是否实现,那么单元的功能是否实现是我们需要关注的。前面解释的是验证返回值是否和期望一致,对于被测单元的调用函数来讲,也许关注该返回值就行了。
    但在lhtia的问题中,没有返回值,那么这里关注的功能实现结果肯定不是返回值了,具体关注什么需要根据具体单元功能而定,例如单元实现是为了改变某些全局变量,从而影响软件其他部分,那么验证期望结果时是需要验证该全局变量是否和期望值一致;又例如单元实现的功能是向其他单元发送消息,那么单元测试时需要在驱动模块创建接受消息函数,用来接受被测单元发送的消息,从而验证是否实现了预期功能。

    希望上面解释能回答这个问题。

    [ Last edited by 天网 on 2004-7-20 at 10:25 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2004-7-19 19:26:13 | 只看该作者
    谢谢站长和天网的解答。

    天网的解决方案太棒了! 我明白你说得第一种办法,就是“验证该全局变量是否和期望值一致”;你说得第二种“单元实现的功能是向其他单元发送消息”,返回值是void的函数应该不能传送消息的吧,这种方案是不是用于“验证返回值是否和期望一致”,如果我理解错了,请多多指点。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2004-7-20 09:38:59 | 只看该作者
    很好的贴子,学到了不少具体操作的思路,谢谢搂主,天网,站长
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2004-8-12 09:40:09 | 只看该作者

    我也谢一下

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2004-8-13 10:27:39 | 只看该作者
    诚谢,关注Ing
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2004-8-13 10:56:49 | 只看该作者
    请教TCL的全称是什么?谢。
    是tool command language的缩写么?

    [ Last edited by lovelyruo on 2004-8-13 at 11:00 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2004-8-17 12:45:35 | 只看该作者
    好厉害!但基本看不懂啊!测的是纯软件的东西吗?好像是白盒测试吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2004-8-17 13:46:41 | 只看该作者

    行外话

    我也不太明白,感觉反正就是验证单元的功能和预期结果是否一至吧,如果这段代码要实现的功能是:改变某个全局变量,那就看它是否实现了这个功能,实现了就对了,那如果他可以实现这个功能,是不是通过开发一个驱动程序,就可以对被测试单元进行控制了呀?需不需要对驱动程序进行测试呢,哪果驱动程序开发的有问题,那怎么办呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2004-9-8 10:56:57 | 只看该作者
    读过受益菲浅啊,小弟初次接触测试,还有那位大哥能给介绍一下 桩模块程序 啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2004-9-14 16:21:07 | 只看该作者
    不错.!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2004-9-16 12:55:43 | 只看该作者
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-9 07:47 , Processed in 0.094733 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表