质量风险分析(上) 软件测试
RBCS公司Rex Black总裁的说法
任何实际应用系统的测试都可能是一项无限量的工作。在这个可能测试的无限集合中,测试主管需要关注的是系统质量方面的最重大风险。潜在的错误可能发生在实际使用过程中或者可能在错误发生时耗费大量资源。这篇文章描述了分析系统质量风险的实际方法,提供了指导执行有效和高效测试的方法。
关键词:风险、质量、测试、分析
简介
对很多实际应用系统来说,毋庸置疑地可以运行无限多的测试。如何选择最好的测试集呢?用一个智能的方法选择那些可以解决最重大风险的测试。
测试可以减轻系统质量方面的风险。它能帮助识别系统中哪些方面运行的很好(即,通过测试),也能帮助识别出完善系统的机会(即,测试失败,检测出缺陷)。因此,一些敏锐的测试主管会问:“我们如何才能测试系统最关键的方面,并找到最关键的缺陷呢?”
本文将解释如何应用风险分析和风险管理的强大技术。作者提供了分析质量风险的5项技术。利用这些技术,人们可以做出把测试重点置于何处的明智、客观的决策。通过对项目的重要里程碑做风险的重新评估,人们可以在系统的整个开发生命周期内不断优化测试的有效性和效率。作者用了3个案例分析来阐明自己的观点。
为什么进行风险分析-以及测试需要做什么
任何重大项目都会涉及风险。风险会随着系统复杂性、投入的人力、付出的努力、预算和时间的增加而增加。Capers Jones (1995) 指出软件项目失败的概率范围在2%到85%之间。他认为,不充分的测试是4个导致失败因素中的一个,还有不充分的预算、计划和项目跟踪。
很多主管都对项目风险管理很熟悉。例如,他们管理像关键人员流失和物品采购滞后这样的风险。传统的风险管理会采用积极的手段(如人员的交叉培训)和被动的手段(如多余的部件采购)来减小这些风险。人们可以通过积极的审查手段和被动的测试手段来减小系统的质量风险。
作者倾向于J. M. Juran对质量的定义:适合于使用。质量是能够满足用户、顾客和其他利益相关者的那些存在的东西,以及不能满足他们的那些不存在的东西。一个高质量的系统能符合用户的意图,提供需要的功能,可能还包括少许重要的漏洞(Juran 1988)。
风险是一种潜在的不良结果。所以,风险对系统质量来说是一个潜在的问题,这些问题可能导致系统达不到期望的质量要求(Black 2003)。
刚开始测一个系统时,他或她根据特殊的功能、特性和运转情况对系统质量进行评价。虽然存在一些预期缺陷,但想要确切地知道如何找到这些缺陷却是个挑战。
随着测试的进行,发现了一些缺陷。这些已知的缺陷不再属于风险,它们现在属于实际的不良后果。可以通过修复这些缺陷来提高系统质量。系统整体风险降低。
在运行测试时,也能发现哪里不存在缺陷。测试通过表明在测试条件下系统达到了预期效果。系统整体风险再次降低。
系统的测试进行的越彻底,就会发现越多的剩余缺陷。发现的缺陷越多,被修复的缺陷就越多。系统的测试进行的越彻底,就会识别出更多的运行良好的地方和已通过测试的条件。因此,测试进行的越多,系统的质量风险就越低。但是风险绝不会降到零,因为测试不能穷尽。
我们应该担心哪方面的质量风险?
因为不可能对任何事物都进行测试,所以有必要从整个测试集中选择一个子集来运行。质量风险分析可以帮助人们关注测试工作的重点。
虽然“质量风险分析”这个词听起来是难以理解的、琢磨不透的、复杂的,但是基本的思想和技术是不需要的。简而言之,质量风险分析是一个对系统中潜在的质量问题(即,缺陷)进行识别、分析和优先分类的过程。
因为质量风险是潜在问题--有0到100%的可能性--一个影响风险相对重要性的因素是出现不良后果的可能性。换句话说,系统中可能会存在各种类型的缺陷;如果这些缺陷存在,用户有可能遇到这些缺陷吗?
另外一个影响风险相对重要性的因素是不良后果对用户、客户或利益相关者的影响。换句话说,如果系统中存在各种类型的缺陷并且被用户遇到了,缺陷的各种症状将如何影响用户的正常使用呢?这些缺陷对系统的影响从微不足道的到灾难性的,甚至是致命的。
例如,假设开发了一个在线银行应用系统。这个系统允许用户在互联网上登录他们的银行账户。他们可以支付账单,在两个账户间转账,下载报表。
对于这种应用系统,安全显然是一个最重要的质量特性。在安全方面,系统质量风险包括:刑事黑客未经授权访问其他客户帐户,或黑客拦截数据中心和客户电脑之间的账户信息的可能性。
就像从大量的互联网黑客攻击事件中发现的一样,发生这种事情的可能性非常高。当这些问题发生时,就会对用户、企业和其他利益相关者有严重的影响。显然,这个系统必须是可靠的,人们应该通过类似方式对系统进行开发和测试,减小这些风险的发生。
质量风险分析技术
现在,有各种各样的风险分析技术可供使用。每种技术都有其优势和弱点,这依赖于项目组的需求和应用。因此,选择合适的技术是至关重要的。
所有这些技术都会在测试条件下对系统的质量风险进行识别和优先排序。一般地,这些风险会根据主要风险类别,比如功能、性能、安全等等,进行分组或组织。项目利益相关者中的一个跨职能小组通常会进行风险识别。这而不依赖于利益相关者的意见和想法,风险分析也会运用已完结项目的历史缺陷和失败数据,客户、竞争者或当事人的需求和设计规范、销售数据、市场调研,和传闻信息。
风险一旦被识别,每个风险都会被分级--测量其重要性等级。在后面的章节中,作者会讨论影响风险等级的因素,以及如何把这些因素结合起来衡量风险,如何运用总体风险衡量的结果来决定花费在测试上的工作。下面有五种风险分析的技术(参见表1):
1.非正式的质量风险分析技术并没有超出本章节的内容。这种技术为开始进行质量风险分析提供了一个便利的途径。虽然这可能会遗漏一些重要的风险,尤其是在早期风险分析期间,但使用非正式技术比完全不使用风险分析技术能找到更佳的测试重点和范围。
2.拿ISO9126质量风险分析技术来说,可使用ISO9126质量标准体系中描述的质量特性和子特性作为风险分析的种类。6种主要的质量特性如下:
- 功能
- 可靠性
- 可用性
- 有效性
- 可维护性
- 可移植性
每个种类都有一个或多个子特性。ISO9126提供了一个更有条理的方法,减少了遗漏一些重要风险因子的可能性,但它也增加了一些时间和书写工作量。
3.暴露成本的质量风险分析技术集中于以下几个问题:与各种风险相关的预期损失是什么?以及花多少时间可以减少这些风险?预期损失是产品损失的概率乘以损失的成本。这种技术使项目管理团队做出一个精明的、经济的测试决定。然而,想要这种技术工作良好,风险分析小组必须能够准确地估算出各种损失的概率和成本。
4.失效模式和效应分析超出了讨论的风险范围。使用这种技术,风险分析小组试图找出可能使系统失败的各种方式,以及这些失败对顾客、客户、企业、社会等可能的影响。这项技术相当的详尽,它能产生优秀精准的测试,但也需要大量的书写工作,投入大量的时间。
5.危险性分析技术与失效模式和效应分析一样,但已经落后了。一个人从影响--风险--着手开始,并试图找到落后的原因。按照这种方法,这些原因的可能性应该很清楚了。虽然,在某些情况下,有很多原因导致不同类的不良结果,但是在少数情况下,这项技术会逐渐适应系统并趋于良好。
案例分析:质量风险分析
提供了从这些技术中产生的文件和资料的一个思想,看看两个案例分析:错误!参考源未找到和表1。这些数据摘自这两个文件的作者和他的助手开发的这些项目。
网络应用中非正式质量风险分析过程产生的文件的一部分。这种设备允许用户发送和接受邮件、浏览网页、登陆电子商务网站购买物品等等。
非正式质量风险分析之后,失效模式及效应分析技术过程产生的文件的一部分。作者分析在删除文件的基础上,强制完全擦除所有与文件相关的数据信息,以确保个人计算机文件的安全。
文章来源于领测软件测试网 https://www.ltesting.net/