学习测试的基本技能

完善的测试依赖全面的测试计划

前面讲述了测试对软件开发的重要性。那么在开发项目管理的运作中,究竟如何执行具体的测试呢?答案是:每个软件都有它的功能设计,通过它们为用户解决某些问题或提供某些服务。测试的目的有两个:第一是要确证这些为用户解决某些问题的功能设计被正确无误地开发出来了,也就是说,如果用户按照所设计的使用方法和过程(我们称为User Scenario,即使用方案),的确能够利用这些功能所提供的服务和解决问题;第二是保证软件在被使用的情况下,如果使用者并不按照所设计的使用方案在使用软件,它不应该由于任意的使用、或其它外部影响造成任何问题,包括出现差错,比如数据遗失、数据错误、 甚至造成系统崩溃等等。
为了达到这两个不同的测试目的,在执行具体的测试时就要采用不同的测试方法。为达到第一个目的、也是最主要的目的,最佳的方法是根据所设计的每个功能和使用方案,设计一个相对应的测试执行过程,去验证这个功能或使用方案是能够从头到尾完成的。这个测试执行过程的定义和描述我们称它为测试方案或测试案例(Test Case)。要能够确证所有功能的确是准确地被开发出来了,唯一的办法就是为每一个使用方案都设计出大量的、一套完整的测试案例(在微软的产品开发中往往都是几百甚至上千的测试案例在测试中被使用),然后通过对这些测试案例的按部就班的执行来证明软件的确可以完成所设计的功能。测试案例的全面性和完整性最终决定了为达到第一个目的测试的质量。
要能够做到制定完整的测试案例,就需要有一个可以作为依据的纲领性指南,帮助测试人员设计这些案例。这样的纲领性指南是由一份叫做测试计划的文件来总结的。测试计划在软件的设计规范书的基础上进行总结和撰写,根据具体的软件和使用要求,制定出整个软件产品的总体测试构思和设想、测试总体范围、对测试方法和测试自动化工具的要求和定义等等。在测试计划的基础之上,测试工程师们根据它再进一步制定详细的具体测试方案。至于测试计划该怎样写,该包括什么内容,我在《软件开发项目管理》一书的第十一章里有详细的测试计划文件的模版你可以参照使用,这里我就不再重复了。

应该同时满足测试的两个不同目的

但是光进行测试案例的执行、按照事先设计好的使用步骤来测试软件的使用状况,只能达到上面所讲的第一个目的,却无法满足第二个目的。原因是,当你的软件在众多的使用者手中被使用时,用户们不见得一定会按照你所设计好的、或所期望的步骤来使用软件,而是任意地使用的。这个时候软件就有可能由于设计得不当或内部的缺陷而发生各种不同严重程度的问题。这一类的问题光用测试案例的执行不见得可以找得出来、而且通常往往是找不出来的。所以与执行测试案例的执行相并列的,还需要进行一系列的与正常的使用方案并不一样、甚至毫无关系的测试。这一类的测试是尽量找出在非正常或随意任意使用的情况下可能出现的Bug。
对这样的测试目的,我们采用两种手段来达到:第一种手段是由测试团队设计并执行各种非正常性的测试,包括边界测试、压力测试、安全测试、以及进行一定数量的随机任意性测试(这些测试种类的详细定义见书中的解释)。这样的一些测试可以找出很多在正常使用情况下无法发现的缺陷。但是光靠测试团队的有限人力和资源,还是无法照顾到大量的随机任意性状态下可能发生的出错情况。所以你还得想办法“动员群众”来达到最好效果。微软的企业文化在这方面有两个很有意思的传统,值得国内业界的借鉴:
第一个叫“抓虫大扫除”(Bug Bash):在某一个版本的发行里程碑到达之后,在发行之前项目经理向全体开发组织发出通知,告诉大家哪一天的某个时间是Bug Bash的时间,到时候全体成员,包括开发、测试、文档等团队、甚至市场部门的员工,全都放下手中的工作,在规定的那一个或几个小时的时间里,每个人把自己当作是用户一样来使用这个未成品的软件,并且进行竞赛,看谁能找到最多的Bug。这样做的目的是,不是按照测试方案的顺序来检查软件,而是通过像真正的用户那样来使用软件,即完全是任意性的、无规则的顺序,看看在这样的使用条件下,还有没有仍旧没有被发现的严重的Bug。 我们往往采用谁找到最严重的Bug 就得奖的方法来鼓励大家尽力找出Bug。抓虫大扫除一结束,项目经理马上进行新呈交的Bug数量的统计,然后向开发组织中的全体员工公布。得奖的小有免费的咖啡、午餐、电影票等,大有各种礼物。所以每次Bug Bash 大家都踊跃参加,找到很多测试案例执行时没找到的问题。
抓虫大扫除对任意性的手动式的测试很有效,但对任意性的自动测试则效率有限。所以我们又采用第二个手段:“分享大家的计算机”(Machine Share):当我们在测试服务器产品时,需要模拟成千上万的使用者同时使用服务器的情况、或是需要模拟大量的黑客攻击的情况。这时候测试团队的机器往往不够用,还需要大量额外的机器加入到这样模拟中来。这时测试团队就会去逐个请求其他员工、 请他们在下班后不使用计算机的时候,在他们的机器上运行模拟大量使用或攻击的程序。谁的机器上的程序造成了服务器的崩溃或造成攻击成功,这个机器的主人就会得到一个免费的冰淇淋。有个人的机器连续三次攻击成功,测试团队还制作了一个巨大的冰淇淋画像挂在他办公室门前的走廊上,第二天上班大家都看到、并昵称他为黑客大王。  

总结以上综述,完善的测试是保证软件质量的关键手段,而要做到测试的完善,需要制定完善的测试计划,同时还需要开发团队为达到两种测试的目的进行带创意的各种执行手段来找出各种缺陷和差错 。
 
这里对测试计划的管理理念以及TDD等概念作了一个简单的介绍。有关测试计划的细节、测试方法的种类等,你可以进一步参阅《软件开发项目管理》一书。在后面的连载文章里,我会再来阐述和讨论采用敏捷模式进行开发的一些实践指南。你要是对如何进一步提高你的软件质量有兴趣或有责任负责推动项目管理的改革,可以通过网络进一步了解业界在这方面的发展以及最新的动态。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值