目录
一、软件测试基础主要内容
1、软件测试
2、测试与质量保证
3、测试用例
4、测试策略
5、测试的原则
6、软件测试模型
7、软件测试分类
二、软件测试
1、软件测试的定义
-
73年的Bill Hetzel给出了软件测试的第一个定义,他认为软件测试是为了向人证明程序能够按照预定的、设想的运行而建立信心的。( 为了表明软件是正确而测试的正向性测试)
-
79年的Myers认为,软件测试是为了发现错误而执行的一个程序或者系统的过程。( 为了表明软件是错误而测试的反向性测试)
-
1983年Bill Hetzel将软件测试的定义修改为,以评价一个程序和系统的特性或能力,并确定它是否达到预期的结果为目的的任何行为就是软件测试。( 按照需求来进行测试,符合需求的则认为测试通过,不符合的则认为有bug。)
-
2014年IEEE发布的软件工程知识体系3.0中,认为软件测试就是动态验证计算机程序对有限的测试用例集是否可产生期望的结果的过程。( 到现在都用的行业标准:测试不单纯是一个发现错误的过程。主要是从软件质量的角度来测试。)
注意:在2014年IEEE发布的软件工程知识体系3.0中对软件测试标准的定义是 动态检测程序的,没有涉及静态测试。所以在后面讲到的测试标准中都不涉及到静态测试的标准。
2、软件测试的对象
-
软件测试的对象自然是软件。
-
基于国家标准相关的定义,软件包含程序、数据、文档。
3、软件测试的目的
-
软件测试的目的就是为了保证、提高软件的质量。具体来讲就是保证软件和系统符合相关法律技术标准,应用需求的,从而降低软件的产品风险和应用风险。
-
软件测试的目的是为了检验软件系统是否满足需求。它再也 不是一个一次性的,而且只是 开发后期的活动, 而是与整个开发流程融合成一体。
4、考点
(1)软件测试的目的
![](https://i-blog.csdnimg.cn/blog_migrate/722dbae16c2a534683636ea1d4805d84.png)
(2)软件测试的对象
![](https://i-blog.csdnimg.cn/blog_migrate/bba14098d55b9a17d54ef2f37015e244.png)
三、验证与确认
下面是基于国家推荐性标准(GB/T190000-2016)给出的验证和确认的标准(双V标准)。
1、验证(Verification)
-
验证主要是为了看程序是否满足需求规格说明书中的要求。
-
验证就是去找相关的客观的证据来证实规定的需求在程序中已经得到了满足。
2、确认(Validation)
-
确认是通过提供客观证据来证明针对某一功能或者某一特定应用需求得到了满足。
-
确认是检查程序是否有效,能否满足用户预期的用途。
3、验证与确认的区别
-
验证是针对需求来进行测试的。
-
确认是针对某一具体功能或者某一特定应用需求进行测试的。
注意:需求不一定准确,也就是客户提出的需求验证通过了,但是确认不一定通过,因为按照需求做出来的功能可能无法实现用户特定的应用场景。
4、考点:相关术语的含义
![](https://i-blog.csdnimg.cn/blog_migrate/05ff4e2ca48ff0848b559490fbccb082.png)
四、软件缺陷
1、软件缺陷分类(之前)
-
故障
-
失效
-
缺陷
-
问题
2、软件缺陷的概念
(1)基于IEEE729-830标准
-
从产品的内部看,软件缺陷就是产品开发和维护过程中存在的一些错误、缺陷等一些内部问题。
-
从产品的外部看,软件缺陷就是要求实现的某个功能出现了失效,产生了违背的现象。
(2)基于国家推荐性标准GB/T32422-2015
-
工作产品中出现了瑕疵、缺点导致这个软件或者系统无法满足用户的需求或规格说明书,需要修复的瑕疵、缺点就是缺陷。
3、主要产生软件缺陷的阶段
![](https://i-blog.csdnimg.cn/blog_migrate/37ef69241cbaa439da69118b3c30159e.png)
(1)需求分析阶段
-
产生缺陷的原因
1)需求不明确;
2)在软件开发或者测试的过程中,需求可能会频繁的更改;
3)用户与软件开发人员之间沟通理解存在问题;
4)不同获取需求的方式得到的需求质量不同,部分需求质量有待提高;
-
解决办法
1)进行需求评审,可以降低需求阶段的缺陷。
(2)设计阶段
-
产生缺陷的原因
1)这个阶段的一些缺陷会比较隐蔽,在设计和检查的过程中很难发现。
-
解决办法
1)进行设计评审,可以尽可能的减少设计阶段的缺陷。
(3)编码阶段
-
产生缺陷的原因
1)这个阶段的缺陷比较容易发现。
-
解决办法
1)通过某一些测试用例可以很快验证程序是否有问题。但是设计及和需求阶段的一些缺陷还是难以发现,因为测试是基于需求和设计阶段进行编写的。
4、修复代价
-
越早期发现缺陷,修复的代价越小。
-
一般来说,跨阶段的发现缺陷,那么修复代价是呈指数级的上升。
-
缺陷产生和发现的时间间隔越短,修复的代价越小。
5、缺陷分类属性
![](https://i-blog.csdnimg.cn/blog_migrate/ff003f543c7ac32362b7dbebed3f1071.png)
-
在软件质量体系中会用到一些相关的特征(属性)对缺陷进行描述。
6、缺陷的优先级
![](https://i-blog.csdnimg.cn/blog_migrate/2b16e3c21c7140a0a718a176a67a8bf0.png)
-
优先级:用于表达评估、解决、关闭缺陷的优先程度。
7、缺陷的严重性
![](https://i-blog.csdnimg.cn/blog_migrate/4f73714be578e9b777bb6a6d206e65de.png)
-
严重性:缺陷产生后最大的影响程度。
8、考点:对严重性和优先级的理解
![](https://i-blog.csdnimg.cn/blog_migrate/d1849837302aa72b01d604e63107deb8.png)