软件测试管理经验谈 (轉)

某甲问道:「测试作太多的话,会不会使得bug解不完?」

某乙回答:「还不简单。只要不作测试,就没有bug。」

上述对话,反应出许多软件工做人员对于测试的想法。对多数软件开发人员而言,测试大概是仅次于维护以外,最使人讨厌的工做。对软件研发主管来讲,测试是必要之恶:作得不够后患无穷,作得过多又增长成本,延误商机。所以,如何可以规画与执行一个最经济有效的测试工做,当是软件研发主管们须研究的一个课题。

软件测试的困难,在于它不只是产品的测试,更是产品设计程序的检验。因为关乎设计的测试,准则不易寻找,经验未必得以再用,他山之石也有应用的局限性,所以难度颇高。欲提升测试的效益,有赖全盘的规画,确实的执行,与过后的反省改进动做。许多小型软件研发单位,对于软件测试并不重视,但从许多稍具规模的软件公司均配置常设测试人员,乃至于测试品保部门来看,测试工做显然有其学问与价值的。

测试工做没有最佳方法可依循,是由于不一样的软件所需的测试手段不一样。譬如小型软件与大型系统的作法不一样;订制软件与软件包的要求不一样;系统软件的测试每每没法采用应用软件所使用的技巧;游戏软件与库存系统有其各自需面对的测试标的。所以,测试人员必须因应软件的特性与资源的限制,加上过去相关的经验,规画最适合的测试方式。并随着经验的累积,不断改进做法,才能找出最佳的测试方法。

由此可知,要作好有效的测试,不仅是埋头苦干而已,它须要良好的管理,使整件工做获致最佳的成果。关于测试的管理工做,可从组织、规画、执行与反省几个角度来探讨。如下谨就笔者粗浅的经验野人献曝一番,但愿提供读者基本的协助。

测试组织之设计

因为人性总自认为本身的最好最正确,彻底由软件开发人员兼任测试人员,并不值得推荐。实务上每每因软件开发单位的经济规模不够,使得开发人员常常兼任测试人员。但若可行,研发单位应尽量配置专任的测试人员,尤为是独立于开发小组以外的测试负责人员。尽管是否应设置独立测试小组业界仍有争议,许多人甚至觉得保障软件品质惟有从改进软件开发的程序作起,但大部份美国的软件公司均设有独立测试或品保人员乃至于部门,这说明了独立测试仍有其不可摇撼的地位。

许多的软件研发单位将测试视为次等的工做,从而配置次等人员负责相关工做。如此一来,优秀人员无从参与,也缺少意愿参与测试工做。结果软件品质不易度量,研发的成果经常被不佳的品质抵销,实为令软件开发人员泄气之事。主管是否能体认到软件测试的重要性,一般是成功的关键。软件测试当然是支持性工做,仍应配置合理的资源,以获取总体之成效。在当前的环境下,给予测试人员较多的关注,毋宁是必要的做法。

测试工做规画

测试工做的规画,至少包含两项要点:测试目标的订定与测试资源的配置。攻击须要目标,测试亦然。测试的目的在于找出软件的问题,提供改进之参考。目标若不明,测试人员即不知如何着手。

测试目标的订定,最重要的在于软件经过的准则,亦即测试什么时候方可结束。常见的情形是:软件开发的进度不断落后,最后剩余的时间仅有两个星期,因而测试人员的目标就是把最后两周用完,尽人事听天命。究竟测试多完整,隐藏的多少错误,测试工做的生产力如何?皆一律不知。反正产品卖出去或上线后有的是时间改进。然而产品销售后再改进,成本每每大幅增高,甚至原有开发人员离职他调,连亡羊补牢都倍感困难。经验一再显示,事前的测试除错绝对比过后维护省时省钱,惟有卖不出去或不能用的软件例外。

对于测试的要求可简单区分为二:一种是经过目标所订之软件品质;一种是在既定资源内达到最佳成效。前者要求山头必定要攻下,不达目的毫不中止。譬如目标为单位测试时间的错误发现率须低于某数字,若超过了就得延长测试。此种方式适用于品质要求较高的软件。至于后者则是上市时间已宣布,没法更改者,其目标着重于铲除最严重的错误。此种测试较着重测试的准备、常常对测试执行与除错设定时限与数量要求,其中最容易遵循的准则即为:重要功能永远先测。这两类测试的需求不一样,足以影响到测试的计划、测试的顺序与关心的重点。读者不可不察。

至于测试资源配置适当性,则是评估测试目标可否达成的重要参考指标。测试人员须要合理的测试资源,譬如要求总研发人力的20%以上。总时程的1/3以上。人力不足,测试流于形式,时程太短,找到错误也来不及除错,均不可取。除了测试在研发的比重,也需注意测试工做自己在规画管理、规格个案订定、测试执行、回归测试、训练准备工做的人力分配。人员的训练与设备的安排尤为容易轻忽,需加以注意。不一样阶段测试的资源配置,也必须加以考量,如此可避免测试集中于功能测试,忽略系统测试。这些工做的适切安排,有助于协助测试工做时时都执行最重要,也最有效的测试。

测试执行与管理

测试工做执行在管理上,首先需使测试与开发人员了解轻重缓急。测试人员经常不考虑测试的效果,而只依照测试的方便性来进行测试。譬如软件有十大模块,每一模块有50个测试个案,因而他从第一个模块的第一个个案开始测,测完一整个模块,再进行第二个模块的测试,执行所有完成或没法进行为止。事实上,测试应从重要且经常使用的项目测起。

开发人员的除错,则每每从好改的改起。因而100个错误改了90个,系统主要的缺陷仍为克服。测试管理人员需特别注意此事,确保测试工做的效率。

进行测试管理的好处在于随时可掌握情况,并因应需求及时调整测试策略。譬如测试一段时间后,发现某子系统的问题特别多,便可调整人力,加强该部份的测试。或是某些人的测试绩效较差,则可调整工做之分配,以求总体效果。固然,这些数据的取得有赖相关信息的搜集,包括数量与时间之信息。若是可行,可记录不一样测试工做耗用的人力时数,计算耗用成本,以便将来进行测试规划时拥有更精确的参考数据。

进行相关资料的统计与分析,最好运用工具来帮忙,以节省人力并增进效果。若是市面已有的测试管理工具符合需求,也可径行采用。测试结果的统计资料,不妨公布在你们的眼前,使得测试成果可为你们了解,亦能促进工做同仁求取更佳的成绩。附图所显示为一简单的统计图表,显示每周的测试成果、除错成果,与产品残存的问题量,可协助主管决定测试终止及发行产品的时间。



测试结果分析与改进

当(阶段)测试结束后,测试管理人员能够进行测试成果的分析。有关预约目标与实际执行结果的差别,可做为下一版软件测试反省改进的依据。譬如预约开立的测试个案数是否达成目标,执行与经过数是否可接受?投入的测试甚至除错人力是否足够?都可视情况计算依标准工做量,做为将来执行测试工做之预估标准。经由分析软件错误的生命周期,能够研究缩短的方法,例如加速除错与重测周期,或在分析设计阶段减小错误发生的机率,以缩短测试时程。

由测试结果可分析出不一样测试的效益,与应改进之处。如下表为例。单元测试耗用大部份的人力,可能使整合与系统测试不彻底。再以发现的错误数观之,整合测试发现一个错误的成本远低于另两项。因而可知在有限的人力时间下测试,单元测试作得太多,整合测试又太少。此意谓着对于单元测试所需耗用的人力资源过分乐观,或是在测试工做的配置不尽理想,应予改进。


 
                   测试人力时数   测试人力分布比率   错误个数   错误分布比率   平均时数/错误数 
单元测试             227.104             58.6%         49             39.51%              4.635 
整合测试             87.212              23.3%         54             43.55%              1.615 
系统测试             70.184              18.1%         21             16.94%              3.342

合计                 384.5                100%        124             100%                       3.2



除了以上的测试成效分析。如行有余力时应再对错误发生的缘由加以分析,力求从问题的根源加以解决。这包含测试工做的改进与开发工做的流程改进。之前者而言,可考虑对测试人员施以较充分的训练,避免测试工做因准备不周浪费宝贵的人力与时间。测试标准程序的创建,也有助于测试工做效率的提高。至于后者,可由错误发生的缘由研究预防之道。例如对需求变动未确实记载,致使设计错误的问题发生,或是软件的设计未加充分的考虑再撰写程序,致使设计不良形成的大量错误,均应加以预防,如此可望从根本解决软件的问题。

结语

欲提高软件品质与生产力,得先掌握现况。测试工做既是必要之恶,就需拟定最好的方法来面对。有关软件测试方法论的书籍文章为数当然很多,在应用上仍须因应自身的情形加以调整。品管大师戴明认为:得到好品质不能靠检验,而是来自改善工做流程。所以,测试工做只是一项起步。如何藉由测试工做,了解改善软件品质与生产力之道,才是咱们追求的目标。愿祝各位软件品质的捍卫者,在工做岗位顺利前进,为测试工做赢得荣耀,更为大家的成功产品喝采。
相关文章
相关标签/搜索