51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1773|回复: 2
打印 上一主题 下一主题

[原创] 从代码内部窥探bug的产生

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-5-9 17:31:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家都知道,程序主要包括三种语句:顺序,条件,循环(不提倡goto语句),目前所有的语言都包含这三类语句。
*顺序语句是最基本,最简单的语句,一般很少因为它本身出现bug。
*条件语句相比顺序语句就容易出错得多。
举个例子:if(A) {B;}
在这个语句中,最常见的错误就是表达式A的边界逻辑错误,特别是“大于/大于等于”;“小于/小于等于”这类判断。
边界逻辑错误还会引起嵌套条件语句错误,如:
if(A)
{ B; }
else if(C)
{ D; }
else
{ E; }
理论应该执行D语句,实际执行了B语句。
所以对待条件语句,需要多使用边界测试手段。
*循环语句相比其他语句是最消耗系统资源的,但是又不能没有它。它同样可能出现边界错误,如:
for(a; b; c) { d; }
b表达式容易出现边界错误,造成循环的次数不对。
它还可能出现死循环,当出现死循环的时候,系统的内存一般会被耗尽。
举几个死循环的例子:
while(true)
{
B;
}
不要以为这种错误不会出现,把true换成复杂些的表达式就极可能出现。
for(int i=0; i<6; i++)
{
   for(int j=3; j<i; j++)
   {
      i--;
   }
}
运行到i=4的时候会出现死循环。
所以对待循环语句,需要注意是否出现死循环。
至于goto语句,我不想过多的说它,它不仅破坏了程序的可读性,而且比一般的循环语句更容易出现死循环。
说了这么多,大家以为我是在讨论白盒测试,其实黑盒测试,也可以考虑这些方面。很多时候,从系统的界面就可以猜测到系统的内部结构,这就是“反向工程”。
举几个例子来判断运用了哪些语句?
1.循环语句
这类最好判断,凡是具有批处理功能的地方,多数就涉及循环语句,如:批量删除,批量导入,批量导出...
2.条件语句
状态变化,下拉框选择...都会涉及条件语句。
作黑盒测试,我们不要总把系统当做透明的,应该多运用一些以前学过的知识,试着分析系统内部的原理和结构,这样的黑盒测试,可能会更有意思,更有收获。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-5-9 21:50:29 | 只看该作者
受教了!
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    3#
    发表于 2010-5-9 22:32:31 | 只看该作者
    在测试中黑盒和白盒兼用,这样测试效率、效果可能会更好!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-4 13:47 , Processed in 0.084883 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表