用底层模拟解决单元测试中的内部输入

发表于:2012-12-13 10:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:wangwencong    来源:51Testing软件测试网采编

  底层模拟就是在用例中模拟、控制子函数的行为,使底层函数产生的数据像参数一样可以在用例中设置。

  底层模拟的特点

  1)在用例中用例设定子函数的输出,使子函数的输出可以与参数等输入放在一起,实现真正意义上的内部输入;

  2)无论子函数是否打桩,都可以使用底层模拟,即用户不需要考虑调用的是桩代码还是实际代码;

  3)对于一个子函数,如果某个用例使用了底层模拟,则输出设定的数据,如果未设定,则调用实际代码;

  4)多次调用同一子函数,可以设定不同值;

  5)用户不需要额外编写代码,也不需要维护桩代码,底层模拟的数据的维护与参数一致。

  底层模拟的实现是比较复杂的技术,需要工具的支持,这里不介绍它的实现原理。为了便于理解底层模拟,及进一步理解内部输入,下面用示例来介绍。使用的工具是Visual Unit 3.0(简称VU)。

  示例函数功能及代码如下图:

  点击,打开输入输出代码生成器,生成用例代码。预设的目标温度由成员变量mExpectTemperature保存,设为25(度),假设环境温度为28度,那么参数*pWorkTime的值应为180(秒,温度差1度,运行60秒),返回值表示计算是否成功,设为1,表示成功。

  执行测试后,结果如下图:

  测试不能按预期进行,因为环境温度未正确取得。环境温度由GetTemperature()函数取得,这里调用的是实际代码,但由于取环境温度的硬件不存在,该函数未编写实现,总是返回0,表示取温度失败,并且不输出环境温度。如果GetTemperature()调用的是桩代码,将在内部输入位置显示:Call the Stub!

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号