让你的测试用例将软件bug一网打尽

发表于:2012-10-09 14:01

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

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

  显然这段代码不能完全实现题目中的需求,我们只需设计一个测试用例使得最后一个字符左右了程序的输出结果即可。例如,originalWord="aaa", finalWord="aab",k=0,如果没有最后一个字符,显然应该返回"POSSIBLE",然而最后一个字符的存在使得结果变成了"IMPOSSIBLE",而这一切对于上面的代码而言就好像在比较originalWord= finalWord ="aa"一样,所以该测试用例成功Challenge了该代码!

  对于这份代码的问题,我们通常叫做边界问题处理不当。边界可能的含义有很多,例如输入变量的范围,例如系统的吞吐量极限等等,在这个问题中,边界的意义就是循环的初始和结束条件。很显然,被我们成功Challenge的代码初始条件做的没有问题,但结束条件却是错的,因为最后一个字符没有被处理!而我们设计测试用例的时候便顺水推舟,将最后一个字符起决定作用的测试用例设计出来,软件的bug就暴露了!所以任何测试一定不能放过边界问题的处理,对边界条件设置测试用例势在必行。

  看来Challenge不是一件多难的事,那么来看下面一位选手的代码吧:

  相信一看到这份代码,大家会十分吃惊,居然代码只有两行,这能实现要求的功能吗?话说回来,我当初看到这份代码的时候也觉得看来这两行儿戏般的代码凶多吉少了,于是将之作为重点Challenge对象。不过细细读来,你和我都会发现,没那么简单,这是因为这份代码对需求的实现没有问题,囊括了所有需求项,边界处理也很得当,任何用例都不可能Challenge成功,这份代码是正确的。因此,只要我们的测试遵循原则,尊重需求,没有遗漏,考虑边界,不仅能够找到软件的bug,也可以证明软件实现需求的正确性。

  说了这么多,相信读者对设计有效的测试用例应该有了一定的了解,不过真实系统中遇到的问题远比算法设计题目要复杂得多,设计的测试用例也要涵盖更多内容,例如除了功能测试、逻辑测试和边界测试外,还可能有余量测试、接口测试、强度测试、容错性测试等。不过,万变不离其宗,任何测试都是基于对需求的准确、完整的分析;而测试人员在测试过程中也应该坚持心思缜密的作风,这样软件bug将无处遁形,被我们一网打尽!

33/3<123
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • liling4888
    2012-11-27 13:46:33

    题目描述:现有两个字符串originalWord和finalWord,仅由字母'a'或'b'组成,我们把将originalWord中的某个字符由'a'变作'b'或者由'b'变作'a'称为一次move;另有整型数k,问能否通过恰好k次move将originalWord变为finalWord?如果能够实现,返回字符串"POSSIBLE",否则返回"IMPOSSIBLE"。

    仔细阅读了全文,回头再看题目描述时,忽然想到:用例设计是不是缺少了对originalword和finalword的字符串长度进行判断,从题目也就是需求来看,并未对这点进行定义,尽管很明显 如果字符窜长度不同永远为impossible 但是用例设计的角度 是不是应该考虑这点呢?

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号