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

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

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

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

  下面我们再来看另一份有问题的代码:

  如果读者对上面我的分析过程能够正确地理解,相信对于这份代码的bug也是不难找到的:问题出在条件判断上面。

  这个条件判断貌似少点什么!没错,分支只判断c是否等于k,而根本没有考虑(k-c)的奇偶问题;换句话说,代码少考虑情况了!那么Challenge就变得很容易了,只要把代码中缺少的部分提炼出来即可,例如示例中的第三组测试数据originalWord="aaa", finalWord="bab",k=4,按照这份代码的结果会是"IMPOSSIBLE",而实际上(k-c)是偶数,应该返回"POSSIBLE",这样我们的Challenge又成功了!不过这次与上一次的Challenge是有所不同的,因为这份代码并非所有测试用例都通过不了,例如示例中的第二个测试用例,当originalWord与finalWord相同的时候,代码是可以通过的。因此我们称这种仅能通过部分测试用例的情况为对需求的片面分析或需求项分析不足。

  我们的Challenge过程很好地阐述了如何针对这种情况设计测试用例:将需求项分析不足的地方提取出来,专门设计这方面的用例。当然,真实应用中,我们会设计大量测试用例,但需求项的覆盖问题依然是重中之重,因为如果测试人员在解读需求的时候不能将其完全覆盖,设计的测试用例必然有所遗漏,可能会造成测试失败。所以,测试用例对需求的完全覆盖,即恰当地进行逻辑测试是测试人员必须加以重视的内容。

  正确的代码总是相同的,而错误的代码则各有各的问题,我们再来看另一份代码:

  判断部分似乎真的没什么问题,只是形式和我的例程有所差异,那这份代码是怎么被成功Challenge的呢?细心的读者可能一眼就能发现问题所在,前面的循环有问题!结束条件居然是i<length-1,这就意味着最后一个字符不在循环处理范围内!

32/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号