SWTBOK測试实践系列(1) -- 測试在项眼下期的评审投入划算吗?
測试策略:静态測试还是动态測试?
[对话场景]
成功公布某个软件版本号之后,项目团队召开了项目的经验教训总结大会。在会议期间,项目经理小项和測试经理小測进行了例如以下的对话:
小项:“小測,我们的项目时间压力非常大。測试运行是我们的关键路径,測试团队能否够在測试运行阶段投入很多其它的人力和物力?”限定时间和人力资源同等条件。
小測:“啊!假如添加我们的測试运行时间,在整个周期不变的情况下。我们就须要压缩前期的学习和评审投入的时间和工作量,是吗?”
小项:“是的,你看是否可行?”
小測:“……”
[场景分析]
上述场景中,项目经理小项希望測试经理小測在眼下的人力和时间情况下。通过压缩前期的学习和评审时间,来添加測试运行的时间。但从项目的成本和产品质量角度而言。这并非一个有效的手段。
測试应该贯穿于整个软件开发生命周期,而不只关注在測试运行阶段,这已经成为了软件測试的一个基本原则。
评审作为静态測试的一种有效手段(静态分析也是常见的一种静态測试手段。在本文中以评审作为解说的对象),它能够有效的减少成本和提高质量,应该成为每一个项目參与人员的共识。
假如能够通过量化的方式阐述评审的重要意义。不仅能够有效的回答项目经理小项的问题,并且能够更加有效的开展软件測试的各个測试活动。本文以通用的V模型作为样例。量化分析评审是怎样提高质量和减少成本的。
通用V模型有需求规格说明、系统功能设计、系统技术设计、组件规格说明、编码、组件測试、集成測试、系统測试和验收測试等阶段组成。图1是量化评审在减少成本和提高质量方面的模型图。
当中的概念部分能够觉得直接来自用户的要求和需求。而用户使用现场指的是产品公布给用户之后在实际环境中使用。
图1 量化评审作用的模型图
图中的每一个图例的解释和含义。请參考图2。
图2 图例说明
依据图1能够看出评审和动态測试是用来发现和移除缺陷的两个主要測试活动:评审主要应用于软件开发的早期阶段(在V模型的左边),而动态測试应用于測试对象能够执行之后的阶段(在V模型的右边)。图1至少体现了两个软件測试的实践经验:
1)首先。缺陷的放大效应(即缺陷的雪崩效应)。
2)其次,缺陷发现和修复的成本随着开发阶段的演进而高速的上升;
虽然图1中提供的缺陷放大系数和缺陷在不同阶段的修复成本,并不一定适合不同的组织和项目,可是,作为案例分析评审在减少成本和提高质量的原理是适合的。以下首先对图中的一些基本概念和数字进行描写叙述:
l 静态測试主要指的是评审活动,动态測试包含了4个測试级别;
l 不同阶段的缺陷修复的成本分布,依次为1、2、5、10、15、22、50、100和500。
l 不同阶段引入的缺陷数目,以及缺陷数目的放大系数。
当中左边的放大系数为1.5。而右边为1。而缺陷的移除率,为了简单起见。左边和右边都定义为50%;
图中的方框内的数字分别表示为:
(1)左上角为上个阶段遗漏的缺陷数目。在V模型的右边。通常缺陷数目会是缺陷放大效应之后的数目;
(2)左下角为为本阶段引入的缺陷数目。在需求和设计阶段,缺陷存在于规格说明中。在实现阶段。缺陷来自于代码中。而測试阶段,缺陷主要来自缺陷的改动之后引入;
(3)右上角为本阶段的缺陷移除率(以%表示)。
(4)右下角为本阶段移除缺陷之后剩余的缺陷数目;
通过在软件开发生命周期的早期开展评审活动,在项目早期发现和修复缺陷,将能够大大的减少成本。减少成本不仅是因为早期发现和修复缺陷的成本,比在后期发现和修复的成本低。而且也能够更好的预防缺陷的雪崩效应,即减少前期的缺陷遗留到兴许的阶段。
下表通过数据和计算的方式,来分析通过评审的引入是怎样减少成本的。
表1 开展评审怎样减少成本和提高质量
阶段 |
开展评审活动 |
没有评审活动 |
||||
总的缺陷 |
移除缺陷 |
成本 |
总的缺陷 |
移除缺陷 |
成本 |
|
需求规格说明 |
100 |
50 |
50 |
100 |
0 |
0 |
系统功能设计 |
195 |
97 |
194 |
270 |
0 |
0 |
系统技术设计 |
297 |
148 |
740 |
555 |
0 |
0 |
组件规格说明 |
424 |
211 |
2110 |
1033 |
0 |
0 |
编码 |
618 |
308 |
4620 |
1849 |
0 |
0 |
组件測试 |
329 |
164 |
3608 |
2793 |
1397 |
30724 |
集成測试 |
185 |
92 |
4600 |
1417 |
708 |
35414 |
系统測试 |
113 |
56 |
5600 |
728 |
364 |
36414 |
验收測试 |
77 |
38 |
19000 |
384 |
192 |
96035 |
部署 |
39 |
|
|
192 |
|
|
Total |
|
|
40522 |
|
|
198588 |
从上表中。能够清楚的看到:在软件开发生命周期的每一个阶段开展评审活动,并在測试阶段相同开展动态測试活动。其花费的总成本是40522。而假如仅仅在測试阶段开展动态測试活动,而没有在早期进行评审活动,其花费的总成本是198588。两者数据进行比較,能够发现开展评审活动之后减少的成本是很可观的。当然前期投入评审也是须要成本的,因此在採用评审作为主要静态測试手段的时候,測试策略须要平衡评审成本和收益。实现静态測试和动态測试的动态平衡。
开展评审活动能够非常好的提高产品质量,也是非常明显的。
在软件开发生命周期的早期开展评审活动,其遗留到客户现场的缺陷数目是39个,而没有开展评审活动,其遗留到客户现场的缺陷数目是192个。也就是说,通过在软件开发生命周期的早期进行评审活动,能够使得遗留到客户现场的缺陷数目大大减少,从而提高产品的质量。
SWTBOK測试实践系列(1) -- 測试在项眼下期的评审投入划算吗?的更多相关文章
- SWTBOK測试实践系列(4) -- 软件測试技术的黑白之道
白盒測试和黑盒測试往往是项目中最受争议的两种測试类型,每一个人偏爱各不同.现实生活中行业人员大多喜欢白盒測试而忽视黑盒測试,那么项目中又应该怎样平衡这两类測试呢?我们先来看两个案例. 案例一: 某移动 ...
- SWTBOK測试实践系列(5) -- 项目中使用手动和自己主动化的策略
手动測试和自己主动化測试永远是一个非常热门的话题.自己主动化也一直被人们捧上神坛.自己主动化測试和手动測试从技术上来说本质事实上都是測试用例设计.仅仅只是终于形式一个是人工运行,一个是代码运行罢了.这 ...
- atitit.jndi的架构与原理以及资源配置and单元測试实践
atitit.jndi的架构与原理以及资源配置and单元測试实践 1. jndi架构 1 2. jndi实现原理 3 3. jndi资源配置 3 3.1. resin <database> ...
- (4.5.4)Android測试TestCase单元(Unit test)測试和instrumentationCase单元測试
Android单元和instrumentation单元測试 Developing Android unit and instrumentation tests Android的单元測试是基于JUnit ...
- Nagios学习实践系列——基本安装篇
开篇介绍 最近由于工作需要,学习研究了一下Nagios的安装.配置.使用,关于Nagios的介绍,可以参考我上篇随笔Nagios学习实践系列——产品介绍篇 实验环境 操作系统:Red Hat Ente ...
- Nagios学习实践系列——配置研究[监控当前服务器]
其实上篇Nagios学习实践系列——基本安装篇只是安装了Nagios基本组件,虽然能够打开主页,但是如果不配置相关配置文件文件,那么左边菜单很多页面都打不开,相当于只是一个空壳子.接下来,我们来学习研 ...
- 【转】RHadoop实践系列之二:RHadoop安装与使用
RHadoop实践系列之二:RHadoop安装与使用 RHadoop实践系列文章,包含了R语言与Hadoop结合进行海量数据分析.Hadoop主要用来存储海量数据,R语言完成MapReduce 算法, ...
- 【转】RHadoop实践系列之一:Hadoop环境搭建
RHadoop实践系列之一:Hadoop环境搭建 RHadoop实践系列文章,包含了R语言与Hadoop结合进行海量数据分析.Hadoop主要用来存储海量数据,R语言完成MapReduce 算法,用来 ...
- ASP.NET Web API实践系列04,通过Route等特性设置路由
ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...
随机推荐
- 36.创建模板mylist
node.h #pragma once //创建模板 template <class T> class Node { public: T t;//数据 Node *pNext;//指针域 ...
- Android项目实战(五十七):Glide 高斯模糊效果
核心需要高斯模糊的库 compile 'jp.wasabeef:glide-transformations:2.0.1' 针对于3.7的版本 使用方法为: //加载背景, Glide.with(Mus ...
- 由浅入深讲解数据库中Synonym的使用方法
1.Synonym的概念 Synonym(同义词)是SQL Server 2005的新特性.推出已经有几年的时间了.我们可以简单的理解Synonym为其他表的别名.本文中使用Northwind数据库为 ...
- UVa 1599 Ideal Path【BFS】
题意:给出n个点,m条边,每条边上涂有一个颜色,求从节点1到节点n的最短路径,如果最短路径有多条,要求经过的边上的颜色的字典序最小 紫书的思路:第一次从终点bfs,求出各个节点到终点的最短距离, 第二 ...
- Python3基础笔记--生成器
目录: 一.列表生成器 二.生成器 三.迭代器 一.列表生成器 a = [x for x in range(10)] b= [y*2 for y in range(10)] def f(n) retu ...
- SPOJ8222 NSUBSTR - Substrings 后缀自动机_动态规划
讲起来不是特别好讲.总之,如果 $dp[i+1]>=dp[i]$,故$dp[i]=max(dp[i],dp[i+1])$ Code: #include <cstdio> #inclu ...
- [POI2002][HAOI2007]反素数 数论 搜索 好题
题目描述: 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4, ...
- php八大设计模式之职责链模式
当发生一种事情时,我们需要要对应职责的事物去处理对应的事情. 或者去找最近的类(就是级别最低的)去解决,如果解决不了就顺着往上找职责更高的,直到解决为止. 注意:一定是要有一个职责最高的类,否则会有问 ...
- Windows10通过VNC远程连接Ubuntu18.04
1.打开终端输入:sudo apt-get install xrdp vnc4server xbase-clients dconf-editor 2.接着在终端输入: 进入到下面这个界面: 接着按照这 ...
- ubutun lunix 64安装neo4j 图形数据库
借鉴链接: https://my.oschina.net/zlb1992/blog/915038