软件测试工作的三重境界(3)

发表于:2014-08-04来源:uml.org.cn作者:不详点击数: 标签:测试计划
首先,分析在我们的软件系统中,哪些功能对用户来说是核心且重要的功能,然后安排合适的测试 工程师 负责这些模块。设计出的测试方案、 用例 进行

  首先,分析在我们的软件系统中,哪些功能对用户来说是核心且重要的功能,然后安排合适的测试工程师负责这些模块。设计出的测试方案、用例进行重点评审,测 试执行过程重点跟踪。每一次软件版本发布时,即使没有更改此部分的代码,也对它们进行回归测试(这种回归需讲究策略与方法),因为它们太重要了,不允许有错误。

  下面是软件测试2-8原则的详细内容。

  1.80%的错误是由20%的模块引起的

  简单、容易的模块或功能是很少引入过多Bug的,而对于存在复杂逻辑的一些关键模块往往会引起系统80%的错误。只有关键模块稳定了,整个系统才可能真正的健壮和稳定。

  这个原则对于测试来说就是站在用户角度(而不是研发实现的角度),正确地选择重要功能模块作为测试的重点,不偏离方向。

  2.80%的测试成本花在20%的软件模块中

  设计测试用例时,常会用日产多少条用例来衡量工程师的工作。用例的多少与需求量有关,而影响软件架构设计的需求描述往往是比较少的。在这种情况下,设计测 试用例时特别需要结合软件的概要设计、详细设计一起考虑。如果用例设计人员为了达到用例的数量,通过大量复制用例,修改个别字眼,而没有真正去设计高效的 测试用例,那么用如此低效甚至更多的用例数量来对待复杂的20%的核心模块,在测试执行过程中必将导致一部分关键Bug找不出来。

  3.80%的测试时间花在20%的软件模块中

  对于复杂的模块,前期的测试设计和思考可能会耗费大量时间,而产出的用例量可能并不大。对于复杂的系统,特别是对于全新系统,必须舍得投入充足的时间来优先考虑设计,前期方案、用例设计的时间越短,后期的风险越大。

  在项目进展到一定阶段后,增加人力并不一定能解决缩短时间的问题。例如,如果复杂且核心模块在项目的后期才开始执行测试,由于Bug较多,而项目又需要短 时间把版本稳定下来,通常的做法是加人。然而加入的新兵需要一段时间的熟悉期,必要时还需要老兵来带,这本身又会影响到老兵的工作。另外一些性能测试、自动化测试工作也只有等版本稳定后才会有更好的效果。

  测试的第三重境界:挑战零缺陷

  孔子说“人无远虑,必有近忧”,用在软件测试上,是什么意思呢?可以这样理解,如果我们不从发生问题的根源上解决问题,认为测试仅仅是找Bug,千方百计找Bug,觉得Bug总是找不完,意识中就会陷入“永无天日”的状态。然而,有小部分测试人员还真希望软件存在多一些问题(唯恐天下不乱),这样可以多提交Bug,认为业绩比没有提交多少Bug肯定要好。无独有偶,有小部分开发人员也把自己犯下的程序错误视为理所当然,甚至还有个别人会戏虐地说“软件如果没有Bug的话,测试人员不就失业了”。这好像在唱一出双簧戏。软件开发的整个过程中,Bug是理所当然要存在的,是这样吗?软件工程中软件危机的根源问题只能通过找到Bug的手段来控制吗?

  实际上,我们都很清楚,任何一个Bug的产生都是有来源的,来源包括需求的设计、软件的设计(含代码的编写)等。相对于前端的设计,测试是事后的验证,是一种“堵”漏洞的措施。然而,在实际工作中,时间与成本并不允许我们去堵住所有的Bug。日本质量大师田口玄一说得好“质量是设计出来的,而不是测试出来的”。如果我们能变被动为主动,在设计之前,就做好设计的防患措施,为设计高质量的软件打下坚实的基础,这便是本节打算向读者介绍的测试的第三重境界:挑战零缺陷。

  1、缺陷的防与堵

  几乎在每次面试测试工程师时,笔者都会问一个这样的问题:“你所负责测试过的模块,是否存在漏测的情况”,几乎每个应聘者都回答说“有”。面对复杂的软件,纷繁复杂的运行环境,在有限时间内进行的测试活动,做到真正的零Bug是 不可能的,也是不现实的。但这些都不是理由,所有的测试活动是有目的的商业活动,每个公司有自己测试通过的一套标准或原则。虽然漏测不可避免,但并不是说 漏测是一种正常现象或应该的现象,出现的漏测问题如果超出公司所能接受的原则,就属于不正常的现象,很有必要进行漏测分析。进行漏测分析活动(需要特别注 意的是它绝不是对漏测人员的批斗会),它的主要目的是通过分析过去的教训,找出问题的根源,分析测试中哪个环节工作存在缺失,以拿出规避的可操作的措施出来。

原文转自:http://www.uml.org.cn/Test/201306184.asp