• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

  浅论单元测试的内部输入问题

发布: 2009-12-17 10:12 | 作者: 不详 | 来源: 领测国际软件测试网采编 | 查看: 11次 | 进入软件测试论坛讨论

领测软件测试网

      代码的重点在于success = GetTemperature(&temperature);,这行代码调用GetTemperature()取环境温度,如果操作成功,success等于1,操作不成功,success等于0;取得的环境温度保存在局部变量int temperature中。假设在实际环境中测试,调用的都是实际代码。我们首先要设定预期的温度gExpectTemperature,例如设为25,这是全局变量,容易做到。我们还要测试各种环境温度下程序的行为,例如,至少要测试25,大于25和小于25三种情况,显然,这是很困难的,真实的环境温度在短时间内很难大幅变化,即使大幅变化,也未必符合测试需求,这就是不可控。

  失真的内部输入

  失真是打桩造成的,是打桩的必然后果。上面的示例,假如GetTemperature()未实现,或者由于解耦合的目的必须隔离,或者试图解决不可控的问题打桩来代替,桩代码大致是这个样子(代码清单4.4.cpp):

  int GetTemperature(int* pTemperature)

  {

  return 0;

  }

  直接返回0,此外什么也不做。调用GetTemperature()后,success总是为0,环境温度temperature未初始化,测试无法进行。

  一种思路是修改桩代码,使它实现一些功能,例如,给每个用例起一个名字,桩代码判断当前用例名并做合适的操作。这种方法比较麻烦,并且只能适应简单情形。一个桩可能被多个被测函数调用,一个被测函数又可能调用多个桩,要维护用例名与桩行为之间的匹配关系,无疑是一场噩梦。

  难于设定的内部输入

  前面介绍自然内部输入时提到:如果圆的外接正方形a1要得到某个预期的值,要传递合适的半径r,这是通过外部输入来获得预期的内部输入,即需要倒推外部输入。很多时候,这个工作是很困难的,例如,要设定圆的面积为10.00,半径应该是多少?另外,很多时候,为了获得一个简单的内部输入,需要做复杂的初始化工作,请看下面的示例(代码清单4.5.cpp):

  /*

  函数说明:

  功能: 将PERSON对象指针保存到表格中,如果名字已存在,则不

  保存并返回0

  参数: pData, 需保存的对象指针

  map, 保存对象指针的映射表

  返回: 如果加入失败,返回0,否则返回非0值

  */

  int AddPerson(PERSON* pData, CPersonMap2* map)

  {

  

文章来源于领测软件测试网 https://www.ltesting.net/

65/6<123456>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网