admin管理员组文章数量:1579415
书接上回
上一篇咱大概了解了一下什么是软件测试,接下来的内容可能会更加详细,以及如何开展软件测试
一、软件的分类
1.1 什么是软件
软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它是包括程序(program)和文档(document)的完整集合。
程序是按事先设计的功能和性能要求执行的指令序列。
文档就是与开发、维护和使用有关的图文材料。
还是上一篇咱提到过的公式:软件=程序+文档
1.2 软件的分类
1、系统软件
(1)操作系统
PC:Windows Linux Unix Mac DOS
手机:ios Android 鸿蒙 miui eiui coloros orginos 塞班 黑莓
(2)操作系统的补丁程序
A漏洞——A补丁
B漏洞——B补丁
.......
每发现一个漏洞,就会开发对应的补丁。
(3)驱动程序
2、应用软件
1)单机软件
不基于网络就可以使用的,或者可用可不用的。
2)分布式软件
必须基于网络才可以使用的
C/S(Client/Server 客户端服务器结构)软件
B/S(Brower/Server 浏览器服务器结构)软件
C/S结构和B/S结构的区别:
C/S结构的软件需要安装专门的客户端在电脑中。
B/S结构的软件只需要通过浏览器,即可访问。
1.3 软件测试概述
在已有的软件中寻找缺陷的过程。
二、软件缺陷
2.1 缺陷的定义
定义一:
所谓软件缺陷,就是计算机软件或程序中存在的某种破坏正常运行能力的问题、错误、或者隐藏的功能、性能缺陷。
定义二:(美国电气和电子工程协会对缺陷的定义)
从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题。
从产品外部看,缺陷是系统所需要的实现的某种功能的失效或违背。
定义三:只要满足下列5个规则之一,则称发生了一个软件缺陷。
1、软件未实现产品说明书要求的功能。
2、软件实现了产品说明书未提到的功能。
3、软件出现了产品说明书指明不应该出现的错误。
4、软件未实现产品说明书虽未明确提及但应该实现的功能。
5、软件难以理解、不宜使用、运行缓慢,从测试人员的角度看,最终用户会认为不好。
2.2 缺陷报告
当测试人员发现一份缺陷,需要填写一份“缺陷报告”来记录这个缺陷,并通过这个缺陷报告告知开发人员所发生的问题——缺陷报告是测试人员和开发人员交流沟通的重要工具。
2.3 缺陷报告的组成
1.缺陷ID
也叫缺陷编号,一般自动生成编号。
2.BUG 标题
简明扼要的描述一下该BUG。
3.所属产品
在测试哪个产品时发现的BUG。
4.所属项目
在测试哪个项目时发现的BUG。
5.所属模块
在测试哪个功能模块是发现的BUG。
6.影响版本
该BUG影响了项目的哪个版本,或者在测试程序的哪个版本时发现的。
7.创建
该BUG由谁创建提交的(写发现者的名字)。
8.当前指派
该BUG指派给谁处理。
一般情况下,测试人员发现BUG,提交缺陷报告,指派给开发负责人,开发负责人验证该BUG后,再把该BUG指派给BUG所在模块的开发人员进行修改。
9.BUG类型
该BUG属于哪种类型的。
在禅道中,主要包括:代码错误、界面优化、设计缺陷、配置相关、安装部署、安全项目、性能问题、标准规范、测试脚本、其他。
10.操作系统
在哪些操作系统中会出现这个BUG。
如:Windows、Linux、Unix、10S、Android。
11.严重程度
指明该缺陷对软件造成的影响程度有多大。
例如:
Urgent 造成死机、系统崩溃等问题。
Veryhigh 很严重的问题。
High 比较严重的问题。
Medium 一般的问题。
Low 小的问题。
每个类别代表的具体含义每个公司可能是不一样的,应该在测试计划或者是在专门的文档中定义好,以便测试人员和开发人员达成一致。
12.优先级
希望该缺陷什么时间内或者哪个版本程序员可以解决。
例如:
Urgent 立刻解决。
Veryhigh 当前版本修复。
High 下个版本修复。
Medium 发布之前修复。
Low 允许发布中存在。(级别可以很低,可以不修复)
同样,优先级别的每个级别代表的具体含义每个公司可能是不一样的,应该在测试计划或者是在专门的文档中定义好。
思考:
对于严重程度和优先级是不是成正比、也就是严重程度越高的优先级越高?
答:一般情况下严重程度和优先级是成正比的,也就是严重程度越高,优先级越高,但是在一些界面问题上,严重程度可能很低,但是优先级很高,比如:logo。
对于严重程度和优先级定义好之后,还会不会修改?
答:严重程度定义好之后就不会再更改了。
优先级在定义好之后,可能会因为一些外在因素进行修改。
13.BUG状态
该BUG目前处于什么状态,间接反映了缺陷的处理情况。QC中,对于BUG的状态,有一下几种:
New 新提交的缺陷
Open 打开的缺陷,
Rejected 被拒绝的缺陷
Reopen 重新打开的缺陷
Fixed 已修复的缺陷
Closed 已关闭的缺陷
14.重现步骤
把发现这个缺陷的步骤、结果记录下来,并给出预期结果,使开发人员通过你的描述,可以看到这个缺陷,以便他去解决这个缺陷。
要求:描述清晰、准确、易读,使开发人员容易读懂,并可以重现,初学者练习的重点和难点。
2.4 缺陷报告的处理流程
测试人员发现缺陷,提交缺陷报告给开发经理,缺陷报告的状态为New。开发经理收到New状态的缺陷报告,会进行验证。
·验证通过,证明该缺陷是真缺陷,开发经理将缺陷报告指派给相应的开发人员进行修复,缺陷报告的状态为Open。
·验证不通过,证明该缺陷可能是假缺陷,开发经理会将缺陷报告的状态改为Rejected。被拒绝的缺陷,会进行商讨,确认开发经理拒绝的是否正确。如果开发经理拒绝的正确,是一个假缺陷,会由测试经理或者项目经理将缺陷报告的状态改为Closed,缺陷处理完成,如果经商讨,开发经理拒绝错误,是一个真缺陷,开发经理会将缺陷报告指派给相应的开发人员进行修复,缺陷报告的状态为Open。
开发人员收到Open状态的缺陷报告,会根据缺陷报告的内容复现缺陷,定位缺陷,修复缺陷。修复完成后,先进行自测,确认自己修复完成,之后将缺陷报告的状态改为Fixed,并指派给相应的测试人员。
测试人员收到Fixed状态的缺陷报告,会将缺陷是否修复进行验证,验证的过程叫返测。
- 返测通过,证明缺陷已经修复完成,测试人员会将缺陷报告的状态改为Closed,缺陷报告处理完成。
- 返测未通过,正确缺陷还未修复完成,测试人员会将缺陷报告指派给相应的开发人员,缺陷报告的状态为Reopen。收到Reopen状态的缺陷报告,开发人员会再次重现并修复缺陷。修复完成后,再次指派给测试人员进行验证,缺陷报告的状态是Fixed。然后测试人员再次进行返测,该过程理论上可以反复多次,直到测试人员返测通过,将缺陷报告的状态改为Closed,缺陷处理完成。
练习:使用缺陷报告的状态表示流程,梳理出缺陷报告有几条处理流程。
New→Open→Fixed→Closed
New→Open→Fixed→Reopen→Fixed→Closed
New→Rejected→Closed(由测试经理或者项目经理关闭)
New→Rejected→Open→Fixed→Closed
New→Rejected→Open→Fixed→Reopen→Fixed→Closed
2.5总结
通过对即时贴程序进行测试,发现了很多缺陷,并编写了缺陷报告,但在测试过程中发现了以下问题:
1.不知道是否较为全面的测试了所有的内容,不知道所有功能点是否都测试到了,不清楚每个功能点是否测试全面了。
2.存在大量的冗余测试,影响测效果。
3.对新版本的重复测试很难实施。
4.测试的覆盖率无法衡量,测试的好与坏不得而知
2.6 缺陷报告的总结
1.缺陷报告的用途
1) 记录软件的缺陷。
2) 跟踪管理软件缺陷。
3) 对软件缺陷进行分类统计,用于缺陷的分析和总结。
2.常见的问题
1) 小的BUG也要报告。
2) 对于不可重现的BUG要报告。
3) 报告缺陷时,不要带有评价。
4) 不是所有已知的缺陷都会被修复。
5) 缺陷的严重程度和优先级一般成正比,但是在界面缺陷上,不成正比。
三、测试用例
在对即时贴进行测试的过程中,发现很多问题,为了解决这些问题,就要使用测试用例。
1.什么是测试用例
测试用例主要记录了测试的过程、步骤、输入的数据、预期结果等内容。它是在执行测试之前由测试人员编写的指导测试的重要文档。
解决要测试、怎么测和如何衡量的问题。
2.编写测试用例的方法
等价类划分法
边界值法
场景法
3.编写测试用例参考内容
需求文档、开发文档、用户手册。
参考已经开发出来的软件,也就是早期的版本。
与相关人员讨论。
四、等价类划分法
4.1 穷举测试
穷举测试是最完善的测试方案,将所有可能输入的数据全部测试一遍,覆盖了所有的功能点、测试点,但是在实际中穷举测试的测试方案是无法完成的,因为数据是无穷大的,不可能全部都测试,就算是有限的数据,全部测试的话也会花费大量的时间,性价比很低,所以穷举测试在实际中是不可取的。
但是在实际的工作中,有些测试方案还是会运用到穷举测试的思想,比如游戏在测试阶段会通过发放大量的内测账号,供玩家使用,在游戏里过程中需要帮助游戏公司提出改进意见,通过大量玩家游戏时产生的数据,覆盖更多的场景。
像安装软件时,很多软件都会有“体验计划”“帮助我们改善软件”诸如此类的选项,都是通过收集大量用户的使用数据,来完成类穷举的测试。
4.2 等价类划分法:
由于数据是无穷大的,不可能为每一组数据设计测试用例,所以需要通过等价类划分法将无穷的测试变成有限的测试。
4.3 等价类划分法的概念
等价类划分法属于典型的功能测试方法,根据程序对数据的要求,把程序的输入域划分成若干个部分,区分出哪些数据是有效的,哪些数据是无效的,从每个部分中选取少数代表性的数据作为测试用例,这样每一类代表性数据在测试中的作用都等价于这类中的其他值。
有效等价类:
对程序的规格说明有意义、合理的输入数据集合。
如果用户输入有效等价类中的数据,程序应该正确的计算、执行。
无效等价类:
对程序的规格说明不合理的或者无意义的输入数据集合。
如果用户输入无效等价类中数据,程序应该给予错误提示或者根本不允许用户输入。
4.4 应用场合
只要有数据输入的地方,就可以采用等价类划分的方法。按照需求,把无穷多的数据进行分类,从中挑选出代表性数据进行测试。
4.5 等价类划分法的使用步骤
两位整数加法计算器需求:
①第一个数和第二个数都只能输入-99到99的整数。
②不能为空,如果为空,给出明确的提示。
③对于输入小于-99或者大于99的数据,给出明确的提示。
④对于输入的小数,给出明确的提示。
⑤对于输入的非法数据,给出明确的提示。
1.明确测试对象
测试对象:第一个数文本框
在测试第一个数文本框时,先假设第二个数文本框中的数据默认使用有效的数据。
2.划分等价类
根据需求划分出等价类区域。
有效等价类:-99到99的整数。
无效等价类:为空、大于99的整数,小于-99的整数,非整数
3.细化等价类
有效等价类:-99到-1的整数,0到99的整数
无效等价类:为空,大于99的整数,小于-99的整数,小数,字母,汉字,特殊符号
4.建立等价类表
有效等价类 | |||
序号 | 取值 | 代表性数据(随便一个就是代表性数据) | 用例编号 |
1 | -99到-1的整数 | -32 | 1 |
2 | 0到99的整数 | 49 | 3 |
无效等价类 | |||
序号 | 取值 | 代表性数据 | 用例编号 |
3 | 为空 | 为空 | 2 |
4 | 大于99的整数 | ||
5 | 小于-99的整数 | ||
6 | 小数 | 33.285 | 4 |
7 | 字母 | ||
8 | 汉字 | ||
9 | 特殊符号 |
5.编写测试用例
从每个等价类区域中,至少选取一个数据作为测试用例的数据。
练习:编写两条测试用例,一条0-99的整数,1条小数。
练习:测试第二个数文本框,三条,有效2条,无效1条。
1.明确测试对象
第二个数文本框,同理假设第一个数文本框的数据默认为有效。
2.划分等价类:
有效等价类:-99到99的整数。
无效等价列:为空,大于99的整数,小于-99的整数,非整数。
3.细化等价类
有效等价类:-99到-1的整数,0到99的整数。
无效等价类:为空,大于99的整数,小于-99的整数,小数,字母,汉字,特殊符号
4.建立等价类表
有效等价类 | |||
序号 | 取值 | 代表性数据(随便一个就是代表性数据) | 用例编号 |
1 | -99到-1的整数 | -30 | 1 |
2 | 0到99的整数 | 45 | 2 |
无效等价类 | |||
序号 | 取值 | 代表性数据 | 用例编号 |
3 | 为空 | ||
4 | 大于99的整数 | ||
5 | 小于-99的整数 | ||
6 | 小数 | ||
7 | 字母 | VRM | 3 |
8 | 汉字 | ||
9 | 特殊符号 |
5.编写测试用例
练习:微信红包-金额需求
1.明确测试对象
金额文本框
2.划分等价类:
有效等价
0.01-200.00
无效等价
小于0.01的数
大于200.00的数
超过两位小数
非数字
3.细化等价类
有效等价:
1-200的整数
0.01-200的小数
无效等价:
小于0.01的数
大于200.00的数
超过两位小数
字母
汉字
特殊符号
4.等价类表
有效等价类 | |||
序号 | 取值 | 代表性数据 | 用例编号 |
1 | 1-200的整数 | 100 | |
2 | 0.01-200的小数 | 0.52 | |
无效等价类 | |||
序号 | 取值 | 代表性数据 | 用例编号 |
3 | 小于0.01的数 | ||
4 | 大于200的数 | 300 | |
5 | 超过两位小数 | ||
6 | 字母 | ||
7 | 汉字 | ||
8 | 特殊符号 |
5.创建测试用例
练习:
祝福语文本框,需求如下:
1-200个字符,可以为空。
字符:键盘上所有可以输入的内容,统称字符。
有效等价类 | |||
序号 | 取值 | 代表性数据 | 用例编号 |
1 | 1-200个字符 | ||
2 | 为空 | ||
无效等价类 | |||
序号 | 取值 | 代表性数据 | 用例编号 |
3 | 大于200个字符 |
五、边界值法
5.1边界值法的概念
有效数据和无效数据的分界点,往往作为程序员编写程序的判断点,是程序员容易犯错误的地方,也是测试人员重点测试的内容,将这些分界点的值找到,并给每一个数据都设计测试用例,这种方法叫做边界值法。
5.2应用场合
有数据输入的地方,一般就需要使用边界值法。
边界值法往往和等价类划分法一起使用,形成一套较为完善的测试方案。
说明:
边界值数据本质上就是属于等价类数据的范畴,但是在测试的时候应该单独的考虑,这种情况起始是一种冗余,但是这种冗余在工程中是必须的。
5.3使用步骤
1.明确测试对象
测试对象:第一个数文本框
在对第一个数文本框测试的时候,先假设第二个数文本框输入的数据是正确的,如:-50。
2.找到边界值数据
找到测试数据的边界,也就是有效等价类和无效等价类的分界点,对边界点数据专门进行测试。
一般情况下,需要对边界值以及边界值两边的数分别进行测试。(如-100、-99、-98和98、99、100)
3.列出边界值表
取值 | 称呼 |
-100(min-) | 无效次最小边界值 |
-99(min) | 最小边界值 |
-98(min+) | 有效次最小边界值 |
98(max-) | 有效次最大边界值 |
99(max) | 最大边界值 |
100(max+) | 无效次最大边界值 |
4.编写测试用例
5.4数据管理
在实际工作中,等价类划分法和边界值法往往需要综合应用,在设计到控件比较多的情况下,如果没有对这些数据进行有效的管理,会造成测试数据覆盖的遗漏或者是数据的冗余,影响测试质量和测试效率。
1.测试用例的优化
对于不同控件的一个有效等价类或者有效边界值,可以在一条测试用例中同时测试,也就是不同控件的有效等价类可以组合在一起测试,这样可以在保证测试质量的前提下,尽量减少用例的数量。
对于不同控件的一个无效等价类或者无效边界值,如果一开始就采用组合的方式,会导致前面控件的错误提示出现后,后面控件的错误提示就不出现了,这样就无法检查后面控件的错误处理的正确性。
但是如果不对控件的无效数据进行组合测试,用户在使用时又确定会这样操作,那系统将会给出怎样的反应,就没有测试到。
所以在初期对于无效等价类和无效边界值将单独测试,确保单个的无效数据,所测试的功能是正确的,后期再通过用例的加强,来测试更多无效数据的情况。
2.优化用例时,等价类区域选取规则。
1)有效等价类
测试不用控件的有效等价类时,可以组合测试,也就是在一条测试用例中测试不同控件的有效等价类区域。
2)无效等价类
测试无效等价类时,每个控件的每个无效等价类都要单独测试,也就是在测试某个控件的无效等价类时,要确保其他控件的数据是有效的
3)边界值
边界值也属于等价类的区域,也具有有效性和无效性,在选取数据时,要按照有效等价类和无效等价类的选取规则进行测试,主要有效的边界值是可以和有效等价类组合测试的。
练习:将红包的金额和祝福语使用数据管理进行数据分析
使用测试用例编号覆盖红包的等价类区域,计算出需要多少条用例进行测试。
练习:信息注册 (数据分)
1.明确注册对象
信息注册—输入姓名文本框
2.划分等价类
有效等价类:1-20个字符,不包含数字
无效等价类:数字、为空、特殊符号
3.细化等价类
有效等价类:1-20个英文字符、1-20个汉字字符
无效等价类:大于20字符、小于1个字符、数字、为空、特殊符号
4.等价类表
1.明确注册对象
信息注册—输入年级文本框
2.划分等价类
有效等价类:18-60之间的整数
无效等价类:大于60的数、小于18的数、非整数、为空
3.细化等价类
有效等价类:18-60之间的整数
无效等价类:大于60的数、小于18的数、为空、字母、汉字、小数、特殊符号
4.等价类表
有效等价类 | |
序号 | 取值 |
1 | 18-60的整数 |
无效等价类 | |
2 | 大于60的整数 |
3 | 小于18的整数 |
4 | 为空 |
5 | 字母 |
6 | 汉字 |
7 | 小数 |
8 | 特殊符号 |
使用测试用例编号覆盖信息注册系统的等价类区域,计算需要多少条测试用例进行测试。
控件名称 | 数据需求 | 有效等价类 | 无效等价类 | 边界值 | 用例编号 |
姓名 | 1-20个字符,不能包含数字,不为空 | 1-20个字符,不能包含数字 | 1 | ||
为空 | 6 | ||||
包含数字(全部) | 7 | ||||
包含数字(部分) | 8 | ||||
大于20个字符 | 9 | ||||
1个字符 | 2 | ||||
2个字符 | 3 | ||||
19个字符 | 4 | ||||
20个字符 | 5 | ||||
21个字符 | 10 | ||||
年龄 | 18-60的数,不为空 | 18-60的整数 | 1 | ||
为空 | 11 | ||||
大于60的整数 | 12 | ||||
小于18的整数 | 13 | ||||
小数 | 14 | ||||
字母 | 15 | ||||
汉字 | 16 | ||||
特殊符号 | 17 | ||||
17 | 18 | ||||
18 | 2 | ||||
19 | 3 | ||||
59 | 4 | ||||
60 | 5 | ||||
61 | 19 |
编写测试用例,1条有效,1条无效,1条边界值。
练习:系统设置-操作员管理-用户列表-新建
写出新建的数据分析。15分钟。
六、总结
6.1 测试用例的总结
1.无效等价类
2.测试用例的用途
1)防止遗漏
使软件测试的实施重点突出,目的明确,确保需求功能不被遗漏。
2)版本重复测试
快速正确的进行版本重复测试
3)监督过程
可以准确有效的评估测试的工作量
4)评估结果
对产品进行评估,对测试完成情况进行评价。
5)提高效率
避免盲目的测试。
6)缩短周期
版本更新和升级时,只需要修改少部分的测试用例,资源复用。
3.注意问题
在编写测试用例之前,还要明确项目对测试用例的具体要求。比如测试用例编号如何命名,测试用例应该提交到什么地方,测试用例中的附件命名规定以及存放的位置。
测试用例是需要更新和维护的,是一个不断修改完善的过程。
测试用例需要正式的评审。
测试用例覆盖系统的程度决定了测试的覆盖程度。
4.对于测试人员的要求
- 基本要求
在编写测试用例时,要求步骤描述清晰、准确、易读、预期结果明确,如果有特殊的位置、预置条件等要明确的写出。输入数据要给出明确的数值,如果有附件要给出附件存放的位置以及名称。
- 高标准要求
测试用例编写的有条理,逻辑性强。可以按照功能点分类,操作顺序等逻辑编写,不要一会测试这儿一会测试那儿。功能覆盖要全面、深入,能够发现软件中更多的缺陷。
6.2 等价类划分法的总结
每一类的代表性数据,也就是被选为编写测试用例的数据,在测试中的作用都等价于这类中的其它值。
如果等价类中的一个测试能够捕获一个缺陷,那么该等价类中的其它测试也能够捕获该缺陷。
如果等价类中的一个测试不能捕获缺陷,那么选择该等价类中的其他测试也不会捕获缺陷。
版权声明:本文标题:软件测试基础(2) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727854531a1133883.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论