软件测试基础(2)

书接上回

上一篇咱大概了解了一下什么是软件测试,接下来的内容可能会更加详细,以及如何开展软件测试

一、软件的分类

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.对于测试人员的要求

  1. 基本要求

在编写测试用例时,要求步骤描述清晰、准确、易读、预期结果明确,如果有特殊的位置、预置条件等要明确的写出。输入数据要给出明确的数值,如果有附件要给出附件存放的位置以及名称。

  1. 高标准要求

测试用例编写的有条理,逻辑性强。可以按照功能点分类,操作顺序等逻辑编写,不要一会测试这儿一会测试那儿。功能覆盖要全面、深入,能够发现软件中更多的缺陷。

6.2 等价类划分法的总结

每一类的代表性数据,也就是被选为编写测试用例的数据,在测试中的作用都等价于这类中的其它值。

如果等价类中的一个测试能够捕获一个缺陷,那么该等价类中的其它测试也能够捕获该缺陷。

如果等价类中的一个测试不能捕获缺陷,那么选择该等价类中的其他测试也不会捕获缺陷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

槿皓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值