51Testing软件测试论坛
标题:
15期 单元测试样例
[打印本页]
作者:
adong1982
时间:
2006-12-1 14:41
标题:
15期 单元测试样例
昨天老师布置的作业不知大家做的如何?
这里先把我的分享给大家,
为了大家便于理解,在VC中我省略很多点缀的地方,只把骨留下了。
大家下载后,把三个压缩包解压
先把TCL脚本和VC文件放到一个英文路径下,最好是D盘,方便嘛
然后把TCL脚本的data文件和result文件的路径修改,
再在VC++环境下修改添加TCL的lib、.h文件,就可以使用了。
data文件中的数据我只给个范例。大家可自由添加用例
解析:1、VC中unittest.cpp文件是我们的驱动函数。
test.cpp文件和集成测试中的一样。
TCL扩展命令为UNITTEST
unittest.cpp中实现该扩展命令的函数也是UNITTEST
2、很多人会疑问,为什么我要在TCL脚本中对3个输入参数要转换,这是为了减少在 unittest.cpp转换的工作量,
如何对输入参数预处理方法有三。
一、在data文件中,输入用例时就先转换。例如将true变为1。
在数据量庞大时,不容易理解维护,是最次的一种方式,不建议使用。
二、在TCL脚本中,由于编程规范简单,无变量类型的区别,转换容易
适合初学者。建议大家使用。
三、 在VC++中修改,降低TCL中脚本处理参数的过程,但需要对VC++使用熟练,适合有编程基础的人使用。
还有一种,就像周锋老师说的,在main中实现,更容易,直接调用被测函数,可以手动输入,一次送一个用例,也可以采用文 件读取方式,类似于TCL读取data文件一样,实现对用例的批处理,有机会再将(VC的和用main的)发给大家,我这太冷,手懒人更懒啊。(汗!!!)
3、至于参数校验,我在unittest.cpp中只对后三个参数(标志位)进行取整校验,但省略对第一参数(输入内容)进行校验,留给大家发挥。
其实我个人觉得,如果在TCL脚本处理阶段,就已经把参数处理好了,就可省略在.cpp中对参数的校验,但是如果为了以后.cpp良好的可重用性、还是写的完美些比较好。
4、对ISCODELINE函数驱动的问题,大家要明白我们是针对这个函数。送入输入,得到输出,然后与预期期望比较,将结果返回。因此应该只调用这个函数。
因此我选择了将CCounter实例化,对象名为m_Counter(名字可随便取)。所谓实例化,即在实例化之前,CCounter不存在,就想图纸和盖成的大楼之间的关系一样。这个不懂的要补C++了,再不懂的要补C了。
5、为什么要创建这个对象呢,是因为CCounter类中有ISCODELINE这个函数,我们要测这个函数,就要先把它调出来。不调它出来,要么我们无法测,要么调用StatCommLine函数间接调用它,那就不是单元测试了。 这点大家切记。
6、也许有同学会问,上次集成测试,在CounterTestv.cpp的TclEx_Counter函数中, 我们创建的是CTest的实例化对象Mytest啊;
其实这是集成测试的需要,我这里不多说了,大家自己慢慢体会。
但有一点,我要指出,最终CTest也是先生成用CCounter的实例化对象m_Counter。这点可在test.cpp文件中得到验证。
以上就是我的一点心意,抛砖引玉,希望对大家学习有所帮助。
希望大家发点成熟的用例给我看看,bug我到找了几个,都是读代码读出来的,写用例没完整的思路,我这人笨。
课间能共享给我看就更好了,多谢了。
经常上论坛的同学不要潜水啊,白雪、大鹏还有很多网名不认识的,大家都发表下各自观点,彼此会有更大收获的。
最后喊出俺的口号,也是PCL常说的,
大家有问题,别皱眉头,咋办啊,找社团啊。
----阿冬
作者:
adong1982
时间:
2006-12-1 14:42
标题:
第二部分
第二压缩包
作者:
adong1982
时间:
2006-12-1 14:43
标题:
第三压缩包
第三压缩包
作者:
intothehit
时间:
2006-12-1 15:08
沙发!!想了一早上如何用 c 来读取data.txt, 然后把结果写到result.txt 里, 感觉蛮复杂的, 还是用 MFC 好
作者:
tinafang0000
时间:
2006-12-4 22:21
下了!~~~
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2