一位测试工程师对测试的理解

发表于:2010-10-20 13:28

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

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

  3、测试的主要内容与常用方法

  有一次文学考试,问高尔基是哪国人。一考生乐极而吟:“尔基啊尔基,你若不姓高,我怎知你是中国人。”这是一种瞎猜法。如果这种方法用于软件测试,人累死也测不出什么结果来。

  不论是对软件的模块还是整个系统,总有共同的内容要测试,如正确性测试,容错性测试,性能与效率测试,易用性测试,文档测试等。“白盒测试”是指开发人员从程序内部对上述内容进行测试,而“黑盒测试”是指独立的测试人员从程序外部对上述内容进行测试。很多软件工程教材讲述了各种各样的测试方法并例举了不少示例。

  (1)正确性测试

  正确性测试又称功能测试,它检查软件的功能是否符合规格说明。由于正确性是软件最重要的质量因素,所以其测试也最重要。

  基本的方法是构造一些合理输入,检查是否得到期望的输出。这是一种枚举方法。倘若枚举空间是无限的,那可惨了,还不如回家种土豆有盼头。测试人员一定要设法减少枚举的次数,否则没好日子过。关键在于寻找等价区间,因为在等价区间中,只需用任意值测试一次即可。等价区间的概念可表述如下:

  记(A, B)是命题f(x) 的一个等价区间,在(A, B)中任意取x1进行测试。

  如果f (x1) 错误,那么f (x) 在整个(A, B)区间都将出错。

  如果f (x1) 正确,那么f (x) 在整个(A, B)区间都将正确。

  上述测试方法称为等价测试,来源于人们的直觉与经验,可令测试事半功倍。

  还有一种有效的测试方法是边界值测试。即采用定义域或者等价区间的边界值进行测试。因为程序员容易疏忽边界情况,程序也“喜欢”在边界值处出错。

  例如测试的一段程序。凭直觉等价区间应是(0, 1)和(1, +∞)。可取x=0.5以及x=2.0进行等价测试。再取 x=0以及x=1进行边界值测试。

  有一些复杂的程序,我们难以凭直觉与经验找到等价区间和边界值,这时枚举测试就相当有难度。

  在用“白盒测试”方式进行正确性测试时,有个额外的好处:如果测试发现了错误,测试者(开发人员)马上就能修改错误。越早改正错误,付出的代价就越低。所以大多数软件公司要求程序员在写完程序时,马上执行基于单步跟踪的“白盒测试”。

  (2)容错性测试

  容错性测试是检查软件在异常条件下的行为。容错性好的软件能确保系统不发生无法意料的事故。

  比较温柔的容错性测试通常构造一些不合理的输入来引诱软件出错,例如:

  ① 输入错误的数据类型,如“猴”年“马”月。

  ② 输入定义域之外的数值,上海人常说的“十三点”也算一种。

  粗暴一些的容错性测试俗称“大猩猩”测试,除了不能拳打脚踢嘴咬,什么招术都可以使出来。这里我举不出例子,因为我没有对程序粗暴过,并且这辈子也不打算学会粗暴。

  (3)性能与效率测试

  性能与效率测试主要是测试软件的运行速度和对资源的利用率。有时人们关心测试的“绝对值”,如数据送输速率是每秒多少比特。有时人们关心测试的“相对值”,如某个软件比另一个软件快多少倍。

  在获取测试的“绝对值”时,我们要充分考虑并记录运行环境对测试的影响。例如计算机主频,总线结构和外部设备都可能影响软件的运行速度;若与多个计算机共享资源,软件运行可能慢得像蜗牛爬行。

  在获取测试的“相对值”时,我们要确保被测试的几个软件运行于完全一致的环境中。硬件环境的一致性比较容易做到(用同一台计算机即可)。但软件环境的因素较多,除了操作系统,程序设计语言和编译系统对软件的性能也会产生较大的影响。如果是比较几个算法的性能,就要求编程语言和编译器也完全一致。

  性能与效率测试中很重要的一项是极限测试,因为很多软件系统会在极限测试中崩溃。例如,连续不停地向服务器发请求,测试服务器是否会陷入死锁状态不能自拔;给程序输入特别大的数据,看看它是否吃得消。

43/4<1234>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • chenxiangming
    2010-11-08 13:51:17

    精辟!!!

  • giibit
    2010-10-28 14:51:48

    “黑盒测试”就象通过提问题来判断一个人是否是个疯子,但无法知道他为什么成了疯子。
    这个也说的好~

  • chinachris
    2010-10-21 15:59:57

    精辟

  • ta1017
    2010-10-21 14:09:28

    博士会去公司面试 吗。?????好像很贬低博士啊。虽然我不是博士

  • haoshanshan
    2010-10-21 13:27:14

    医生可以把他的错误埋葬在地下了事,但程序员不能。我们必须要学会测试与改错,并且把测试与改错工作做好。


    太经典了

  • haoshanshan
    2010-10-21 13:25:59

    医生可以把他的错误埋葬在地下了事,但程序员不能。我们必须要学会测试与改错,并且把测试与改错工作做好。
    太经典了

  • zhuruize
    2010-10-21 11:54:29

    写的太好了!

  • hyd_bpmf
    2010-10-21 09:35:48

    独到

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号