51Testing软件测试论坛

标题: 最近图书内容连载《完美测试:软件测试系列最佳实践》 [打印本页]

作者: 博文视点    时间: 2012-4-10 11:06
标题: 最近图书内容连载《完美测试:软件测试系列最佳实践》
软件测试的金字塔体系--1个中心到5个要素

很小的时候就对埃及的金字塔感兴趣,不仅是因为它的规模宏伟、结构精密,而且它的兴起和演变至今只是一个传说,成为千古之谜。这其中就有神奇的黄金分割数Φ,其值是个无穷小数,若只取三位小数便是0.618如用金字塔的高除以底边长,即1÷1.618 = 0.618。而金字塔许多特征数据,和13世纪数学家法布兰斯所提到的奇异数字的组合,有许多巧合之处。这些奇异数字的组合是1123581321345589144233它们任何两个连续的比率都接近0.618,如3/55/834/5555/8989/144等。而且金字塔有一个顶点、五个面、八个边,总数为十三个层面,这些特征数据也和上述奇异数字非常吻合

回到软件测试,也感觉和金字塔有一种神秘的关系,为什么这样说呢?且听下面给您细细阐述。

首先,软件测试的出发点就是质量,软件测试的一切工作应该围绕质量而开展。质量是软件测试的中心,可以看做是金字塔的顶点,如图1-1所示。测试的其他部分就是支撑这个顶点的测试人员、测试资源、测试技术和测试流程。因此,构成软件测试的5个要素就是:质量、人员、技术、资源、流程。

这样,5个要素构成了5个面,每个面由3个要素构成,代表着软件测试的工作面。具体是怎样的工作面?请往下看,自然会越来越清楚。

在这金字塔构成中,还有每两个要素构成的8条边,每条边代表两个要素之间的关系,如何处理这些关系,也就决定着测试能否获得成功。基于要素、工作面、要素之间的关系,我们确定了13项软件测试原则、21个关键域。针对软件测试关键域,每个软件组织可以了解自己在这个领域的水平,持续进行改进。最后,列出目前所使用的各种软件测试方法,并将这些方法应用于软件测试实际工作之中。所以软件测试可概括为:


1中心à5要素à5工作面à8关系à13原则à21关键域à34个方法

1个中心到5个要素

质量(quality)是软件测试的中心,这是毋庸置疑的。测试是质量保证的重要手段之一,测试本身就是为质量服务的。测试能否通过,其检验的标准是用户的需求,也就是质量的标准。所以,在软件测试的5个要素中,质量是核心,其他4个要素要服务于质量,服从于质量。

如果要问,除了质量,还有什么是最重要的?那自然是测试人员。人是决定的因素,决定了技术和流程的执行。像软件开发这样的智力活动,要强调“以人为本”的管理文化,才能真正发挥每个人的潜力,以最有效的方法完成测试工作。

如果继续追问下去,在软件测试过程中,哪两样东西是我们必须关注的?答案应该是“测试覆盖率”和“效率(productivity)”。如何保证质量,一个重要的衡量方法就是测试的覆盖率,包括用户实际需求的覆盖率和代码覆盖率。在保证质量的前提下,确定任务的优先级,采取正确的策略和方法,包括自动化测试方法,以高效的方法完成测试。

一而再、再而三,关注了“测试覆盖率”和“效率”,拿什么来保证呢?这不外乎三个方面,就是测试人员、测试流程和测试的技术。就人员来说,要从招聘、培训和考核等各个环节来培育良好的团队文化,树立正确的工作态度,强化质量意识,提高团队的战斗力,构建卓越的测试团队。无论是采用敏捷的测试流程还是传统的测试流程,一定要结合具体的产品和技术特点,因地制宜,形成适合自己的、有效的测试流程。测试技术比较丰富,因而下面各章的讨论会很多,从客户端到服务器端,从黑盒测试到白盒测试,从静态测试到动态测试,全力构造一个完整的测试技术体系,使之满足测试工作的需要。这些内容,可以用图1-2形象地描述,使我们一目了然。

软件测试的金字塔体系可以基于上一节的描述进行扩充,得到如下结构,更接近于一串神秘的数字。


1个中心 à1人(以人为本)à
2个目标(关注点)à3个支撑 à

5要素或5个工作面 à8关系 à13原则 à21关键域 à34个方法




作者: 博文视点    时间: 2012-4-10 11:06
本帖最后由 博文视点 于 2012-4-10 11:10 编辑

最后,总结一下软件测试的5个要素。1
质量:软件质量是软件测试的目标,也是软件测试工作的中心,一切从质量出发,也就是一切从客户需求出发。任何违背质量的东西都是问题,测试就是要找出这些问题。2
人员:人是决定的因素,测试人员的态度、素质、能力决定着测试的效果,对测试产品的质量也有很大的影响。测试人员因素包括测试组织结构、角色和责任的定义。3
技术:软件测试技术,包括方法、工具。4
资源:主要是指测试环境中所需要的硬件设备、网络环境,甚至包括测试数据。另外一个重要因素就是测试时间,时间也是测试的资源,但测试人员不能看做资源,每个人的能力千差万别,不同的测试人员担任不同的角色,不能相互代替。这也是软件图书的经典之作——《人件》的作者反对将人作为资源对待的原因。
流程:从测试计划和测试用例的创建、评审到测试的执行、报告,设定每个阶段的进出标准。5个工作面基于软件测试金字塔的构成,我们好好研究其5个工作面,1
质量-人员-技术:团队建设,包括人员的招聘、培训、考核等。2
质量-人员-资源:成本管理,人员和软硬件资源都是测试的投入,但同时必须将人和软硬件资源区别对待,不要将人也作为软硬件资源那样处理,否则会带来较多的问题。3
质量-技术-流程:技术和流程结合起来就是一种测试架构或测试框架,通过技术,将流程融入系统或工具中,流程的执行才能稳定、有效。技术通过框架固化,技术才能发挥最大效益。4
质量-流程-资源:基础设施,构建测试环境,将测试建立在坚固、流程的基础设施之上。5
人员-技术-流程-资源:项目管理,在一定的质量标准下,如何平衡这些要素、如何获得最大的生产力,就是软件测试项目管理的主要任务。  
本文节选自《完美测试:软件测试系列最佳实践》一书。《完美测试:软件测试系列最佳实践》一书已由电子工业出版社正式出版,本书由朱少民
主编



作者: 博文视点    时间: 2012-4-24 14:07
什么是测试架构

当我们用iPhone玩一个很有名的游戏——坚守阵地(FieldRunners)时,防御的布局非常重要。如果布局不好,如图2-1所示,就玩得很累,看着“生命”一个一个死去,即使采用了一些小的技巧,最后也过不了关。


2-1  不好的布局决定着失败

而如果换一个思路,进行不同的布局,如图2-2所示,不采用自然的竖直排序,而采用斜线排序,充分利用空间,而且进攻部队前进的速度会大大降低,结果就很不一样,游戏者便能轻松过关。


2-2  良好的布局是成功的一半

这里的布局,是指处理问题的全局规划、整体设计。全局规划如何、整体设计效果如何,自然关系到后面的整个过程,所以总会受到我们重视。

说到架构,我们会想到软件架构,如C/S架构、SOA架构,甚至会想到以架构设计为中心的RUP。软件架构的概念由来已久,软件架构师的头衔容易被大家认可,但“测试架构”的概念还不够清晰,人家会有很多的问题要问:

l 什么是测试架构?

l 测试架构对软件测试有什么帮助?

l 软件公司需要设置“软件测试架构师”职位吗?

l 软件测试架构师做哪些事情?

当人们知道微软公司、阿里巴巴集团等设有“测试架构师(TestArchitect)”职位时,可能会惊奇地问:什么? 测试团队也设立“架构师”头衔吗?人们对开发团队设立架构师已经比较习惯了,因为大家知道,在设计一个软件系统时,需要考虑整个产品架构如何设计、系统各个组件如何集成在一起、如何相互协调工作,而这些都需要“软件架构师”来完成,但对测试团队为何要设立“架构师”头衔还是不够清楚,主要是因为不了解测试架构从何而来。

在日常测试工作中,如何选择测试工具和如何建立统一的自动化测试框架?这是经常困扰我们的问题。除此之外,我们还会碰到如下的一系列问题:

l 如何帮助开发人员提高产品设计和代码的可测试性?

l 如何找到更有效的办法来设计测试用例?

l 如何通过一些技术手段来提高测试的覆盖率?

l 如何完成复杂系统的非功能性(性能、安全性、兼容性、可靠性等)测试任务?

l 如何通过分析系统测试结果,找出系统存在的问题?

l 能否对测试技术的发展趋势做出正确判断,从而更有针对性地提高测试团队的技术能力?

举例、暗喻

测试架构从何而来?其实它就是为了解决上述问题而产生的。从基本的观点看,测试架构是由软件系统技术架构和软件测试框架(特别是自动化测试框架)构建的需求而定。这些需求,决定了以下从不同方面所形成的测试架构。

l 大家都能理解,越早进行测试,就能越早地发现缺陷,对提高产品质量、降低企业成本就越有利,更重要的是越能预防系统设计时出现严重的缺陷。如果所设计的系统架构存在严重的缺陷,直到系统集成测试时才发现,所造成的返工将是可怕的。这就需要测试人员对设计进行复审、评审。测试人员应参与系统架构及其组件接口等设计的审查,包括是否全面考虑非功能特性、各个特性的可测试性评估、设计的合理性等。

l 软件系统来看,如何验证系统的性能、安全性、可靠性和可伸缩性等,例如网站能否支持扩展到100M的点击率,投票系统是否安全等都需要对系统架构进行分析,建立测试概念模型,从而科学、有效地完成认证。

l 现在的系统越来越复杂,其设计往往不是一蹴而就的,需要不断地重构和优化,而这些工作是基于以前版本的测试结果(包括发现的问题)来实施的。测试人员在完成系统测试后,可以通过对测试结果的分析发现问题,如系统性能瓶颈、安全漏洞等,进而可以对系统的性能、可靠性、安全性等改善提出有价值的建设性意见。

l 在系统功能测试时,需要对功能进行合理的划分、归类,建立用例模型,设计合理的测试结构。  

l 从测试工作自身来看,需要建立合适的测试管理系统,包括测试用例库的设计、缺陷跟踪机制等。

l 设计自动化测试框架,包括集成测试环境、测试脚本分层处理、执行结果自动生成报告等。

l 掌握测试技术发展趋势,研发新的测试方法,并借助测试工具来实现,例如,在安全性测试上如何采用合适的模糊测试方法。


作者: fish_yy    时间: 2012-4-24 21:46

作者: fenglj520    时间: 2012-5-10 22:01
说的很有道理 顶起 期待继续更新
作者: phoebe_kaka    时间: 2012-5-11 11:26
还接着更新吗?
作者: xahuanyu008    时间: 2012-5-23 18:17
不错,学习了,期待更新
作者: lintongyan    时间: 2012-8-30 18:14





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2