关于自动化测试

发表于:2012-2-01 11:34

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

 作者:余昭辉    来源:51Testing软件测试网采编

  概述

  常见的三类自动化测试有:单元测试,集成测试以及功能测试

  单元测试

  单元测试是一个白盒测试,一般是针对一个方法单元进行的测试,单元测试要求运行快,编写简单。所以一般单元测试有这么一些特质:

  ● 不连接数据库

  ● 不访问磁盘文件

  ● 不访问远程网络

  能够在很短时间内运行完毕(比如三秒内)

  集成测试

  集成测试可以称之为灰盒测试,是指对系统中几个模块集成起来进行测试。有很多时候,单元测试无法发现的问题,通过集成测试能发现。

  功能测试

  功能测试是黑盒测试,完全从系统的功能边界外,不对系统内部做任何假设,就以用户的方式对系统进行使用测试。功能测试运行是最慢的,编写和维护都非常困难。但是对交付成功的软件的价值确实最大的。

  测试能给我们带来收益,但是测试也需要我们投入很多精力。如何能在投入和收益间找到平衡,就需要我们在系统中结合这三种测试。一般,系统中单元测试最多,集成测试次之,最少的是功能测试。这就是经典的测试三角。

  对自动化测试的误解

  自动化测试能防止bug

  这是对测试最常见的误解,测试不能帮助我们防止bug,写了很多测试,并不意味着我们的系统就不会出现bug。自动化测试是防止我们在演进系统的过程中,引入新的bug。因为人工的测试非常缓慢,如果我们修改了代码,需要等待很长时间才能知道我们的修改是否正确,这就会给修改代码带来很大的风险,有可能我们就不等待人工测试的结果就交付产品。如果我们有一套能很快运行的自动化测试集,我们就能更快的验证我们的修改是否对已有功能造成破坏,是否引入了新的bug。认识到这一点,那就要调整一下心态:有可能有人看到长期以来,测试也没有帮住我们什么,就不愿意写测试,觉得不值得。我觉得这是好事,那说明我们开发能力很高,很少出现bug。如果bug很多,自动化测试并没有起到防止引入bug的作用,我们就应该调研,如何写质量更高的测试。

  总结:自动化测试是一种快速反馈的手段。

  测试代码不是交付的一部分

  很多人认为,我们编写的产品代码才是我们要交付给最终用户的东西,而测试代码不是。所以我们可以以随便的态度编写自动化测试代码,在产品代码中应用的一些最佳实践或原则,我们可以不应用到测试代码中。这个观点也是错误的,不维护的自动化测试,比没有自动化测试更有危害。

  第一,不维护的自动化测试很难跟随产品代码同演进,可能已经丧失了他原有的作用,而我们心里却以为我们有自动化测试,但实际上那只是摆设,只会误导我们。

  第二,如果需求改变了,我们需要修改测试,让它体现最新的需求,但是因为测试年久失修,变得很难看懂,很难修改。那么最大的可能就是:删除测试代码,那么我们花在自动化测试上的时间就付诸东流了。只在最后阶段运行测试

  其实这一条和第一条有相似之处,很多人认为既然是测试,那么就应该在测试阶段跑,而我们现在在开发产品代码,这是开发阶段,我们不应该运行测试。按照第一条最后的总结,自动化测试是一种反馈手段,那么我们更应该持续不断地,频繁的运行测试。当我们对代码有修改时,就运行测试;当发现测试失败后,立即修复,以免将这些债留到后期,那个时候修复的成本将更高昂。

21/212>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号