购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.1 软件测试及相关概念的定义

一|软件质量的定义

不同的图书、不同的环境对软件质量有着不同的定义,其意义也不尽相同。作为一名软件测试人员,主要是按照需求文档去测试软件,而测试后的最终产品是要交付给用户使用的。所以,本书给出的软件质量的定义是指软件开发测试完成后,软件所展现出来的各项功能特性是否符合需求文档,是否满足用户的需求。如果满足,则表明这个软件质量很好;反之,则表明软件质量不好。

二|软件测试的定义

软件测试是一个动态过程,而不单单指某一项测试工作和技术。本书对软件测试定义如下。

软件测试是从前期需求文档的评审,到中期测试用例设计及测试执行,再到后期问题单的提交和关闭等一系列的测试过程。

三|软件错误的定义

测试人员在测试软件的过程中,当发现实际运行的结果和预期的结果不一致时(这个预期的结果其实就是指需求文档里面的要求),就把这个不一致的地方称为软件错误。当然,软件错误不仅是指与需求文档不符的地方,在测试过程中,测试人员发现有影响用户体验和使用的任何地方,都可以把它当作软件错误提出来。在工作中也把软件错误称为Bug(Bug、错误、缺陷、问题,这四类表述是同一个意思)。

四|什么叫80/20原则

就软件测试而言,80/20原则指的是80%的Bug集中在20%的模块里面,经常出错的模块经修复后还会出错。具体分析有如下两点。

(1)80%的Bug集中在20%的模块里面,意思是,如果一个软件中发现了100个Bug,那么其中80个Bug很可能都集中在该软件20%的模块里。为什么这么说呢?打一个比方,在开发一个软件的时候,并不是所有的模块都很复杂,例如,一个软件包括10个模块,可能其中2个模块比较复杂,而剩下的8个模块比较简单,那么复杂模块出现问题的概率就会高一些,如果这2个关键模块没有处理好的话,那么这2个模块的Bug数量可能会占Bug总量的80%。所以在测试软件的时候,记得关注这些Bug高危多发 “地段”,在那里发现软件Bug的可能性会大很多。

(2)经常出错的模块经修复后还会出错,意思是,同一个地方如果经常出现Bug,即便Bug被修复,这个模块可能还是不稳定的,还会产生新Bug。

当然,80/20原则的结论只是经验之谈,也就是说,80/20原则并不是绝对的,只是具有相对的普遍性。 ToCUaLm+hvaJfxb8M97/17oU4/0C/FDEzgs2c1w0asfM0NWIfK+Z+2soG3nzJ5GU



4.2 软件测试的分类

根据不同的分类标准,软件测试会有不同的分类。常见的两种分类方式是按测试原理分类和按测试阶段分类。

4.2.1 按测试原理分类

按测试原理,软件测试可分为黑盒测试和白盒测试,初级软件测试人员很有必要了解它们的意思和区别。

一|黑盒测试

黑盒测试是不关注软件内部代码的结构和算法,只关注这个软件外部所展现出来的所有功能特性的测试。初级软件测试人员可以这样理解:黑盒测试只测试软件外部的功能特性,而不测试软件内部的代码结构。由于QQ邮箱的用户体验做得很好,本节还使用QQ邮箱的登录页面来举例说明。

图4-1是QQ邮箱的登录页面(简化版),那么黑盒测试要测些什么呢?答案是,黑盒测试只测试QQ邮箱登录页面所展示给用户的所有功能点能否正常使用(软件外部功能)。例如,当用户输入正确的用户名和密码时能否正常登录,输入错误的用户名或密码是否不能登录系统等功能点,而不会去测试登录页面的代码结构(软件内部代码)。其内部代码实现逻辑相当于封装在了一个黑盒子里面,只需要关注这个黑盒子的输入和输出是否符合需求定义,黑盒子里面具体的实现逻辑并不需要测试。

图4-1 QQ邮箱登录页面

二|白盒测试

白盒测试的定义刚好与黑盒测试相反,白盒测试是只关注软件内部代码的结构和算法,而不关注这个软件外部所展现出来的功能点的测试。初级软件测试人员可以这样理解:白盒测试只测试代码结构,而不测试软件的外部功能点。下面举例说明。

如图4-2所示,在QQ邮箱的登录页面的空白处单击鼠标右键,在弹出的快捷菜单中选择“查看页面源代码”命令,弹出登录页面所对应的源代码,如图4-3所示。那么白盒测试要测试什么?答案是,白盒测试只测试QQ邮箱登录页面所对应的源代码(图4-3所示的代码)结构有没有问题,而不会去测试登录页面所展示给用户的各项功能点。

图4-2 查看页面源代码

图4-3 源代码

4.2.2 按测试阶段分类

按测试阶段,软件测试可分为4个阶段,分别为单元测试、集成测试、系统测试和验收测试。

一|单元测试

开发人员开发完一小段代码后就能实现一个小的功能模块,开发完多个小段代码后就能实现多个小的功能模块,然后再把这些小的功能模块串联在一起就组成了一个大的功能模块。接着把几个大的功能模块组合在一起就成为最终的软件系统。在这里把最初的一小段代码称为软件系统的最小组成单元,而单元测试就是指对这小段代码进行测试。当开发人员开发完一小段代码后,开发人员会测试它有没有问题。只有通过单元测试才能把这些单元模块集成在一起,形成一个大的功能模块。由此看来,单元测试是测试代码的,采用的是白盒测试的方法(因为白盒测试是基于软件内部代码测试的),主要由开发人员来做。

二|集成测试

单元测试完成后,开发人员就会把已测试完的单元模块组合在一起并形成一个“组合体”。在集成模块的初期,由于集成到一起的单元模块比较少,此时的“组合体”如果出现问题,很多时候可能还要追溯单元模块内的代码,所以初期的集成测试主要由开发人员来执行,采用白盒测试的方法。但到集成的后期就不同了,由于集成到一起的模块越来越多,各模块之间的依赖性越来越强,离目标系统越来越近,软件系统核心模块基本组装完毕,此时软件的部分功能点也已经展现出来,开发人员可对软件进行部分功能测试,一般采用的是黑盒测试的方法。

三|系统测试

随着软件集成的规模越来越大,直至最后组装成为一个完整的软件系统,软件的所有功能点和特性已经就位,这个时候就该项目组的测试人员登场了。系统测试简而言之就是测试人员对这个软件系统做全面测试。本书在第2章介绍过,测试人员对一个软件的全面测试,主要是基于6个方面开展的,即软件的外观界面、功能、性能、安全性、易用性、兼容性。那么系统测试就是测试软件的外观界面、功能、性能、安全性、易用性、兼容性这6个方面是否满足需求文档里的要求。同时由于这6个方面的测试并不需要关注软件内部的代码结构和逻辑,因此,测试人员进行系统测试时采用的也是黑盒测试的方法。由此看来,测试人员是在系统测试这个阶段介入的,如图4-4所示。

图4-4 系统测试

接下来简要描述一下这6个方面测试的基本含义。

(1)软件的外观界面测试(简称UI测试):主要测试软件界面功能模块的布局是否合理,整体风格是否一致,界面文字是否正确,命名是否统一,页面是否美观,文字、颜色、图片组合是否完美等。测试难度:相对简单。

(2)软件的功能测试:主要是测试软件所呈现给用户的所有功能点是否都能正常使用和操作,是否满足需求文档里的要求。测试难度:中等。

(3)软件的性能测试:测试软件在不同环境和压力下能否正常运转,其中有一个很重要的指标就是系统响应时间,例如,多人同时访问某个网页时,网页能否在规定的时间内打开等。测试难度:较高。

(4)软件的安全性测试:测试该软件防止非法侵入的能力。测试难度:较高。

(5)软件的易用性测试:测试软件是否容易操作,主观性比较强,站在用户的角度体验软件产品好不好用。测试难度:相对简单。

(6)软件的兼容性测试:测试该软件与其他软件的兼容能力,作为初级软件测试人员,主要考虑软件与浏览器的兼容能力,包括分辨率的兼容。测试难度:相对简单。

四|验收测试

验收测试由用户开展,测试的内容与系统测试相似,主要测试软件系统是否满足需求文档里的要求、是否满足用户的需求。采用的方法也是黑盒测试。通常验收测试通过之后,软件才能交付投产上线,由于验收工作由用户执行,在这里不做过多阐述。 ToCUaLm+hvaJfxb8M97/17oU4/0C/FDEzgs2c1w0asfM0NWIfK+Z+2soG3nzJ5GU



4.3 初级软件测试人员的定位

关于初级软件测试人员在系统测试中的定位,我们以图4-5为例进行说明。

图4-5 测试人员定位

(1)软件项目的名称:QQ邮箱。

(2)项目组的测试人员:12名。

(3)测试人员要对QQ邮箱进行系统测试。

(4)QQ邮箱的系统测试涵盖了6个方面,分别是QQ邮箱的外观界面测试、功能测试、易用性测试、兼容性测试、安全性测试、性能测试。

(5)测试组的12名测试人员会有不同的分工,有的做功能测试,有的做性能测试,有的做安全性测试等。

(6)初级软件测试人员主要是定位在功能测试,因而初级软件测试人员等同于功能测试人员。

(7)软件的外观界面、易用性、兼容性这3个方面的测试相对简单,大多数情况下也都是由初级软件测试人员来完成的(当然少数的项目组也设立了独立的外观界面测试人员、易用性测试人员和兼容性测试人员)。

(8)由于安全性测试和性能测试的难度相对要高一些,并且需要一定的工作经验,所以这两块的测试工作一般会由测试组中的安全性测试人员和性能测试人员分别完成。

QQ邮箱的功能模块可以细分出很多个功能。初级软件测试人员又是如何分工的呢?

从图4-6可以看出,初级软件测试人员进入项目组后,最终会被安排具体负责一个或多个功能模块的测试工作。

图4-6 测试分工

为了让大家更清楚初级软件测试人员的定位,有以下几点需要说明。

以上示例是虚拟出来的一个项目,其中测试人员配比在实际的项目中并不是固定的,每个项目都会根据实际情况进行相应的安排。

一个项目组中的测试人员除了初级软件测试人员,还有安全性测试人员和性能测试人员等。实际项目中具体包括哪些测试人员,会根据项目实际情况进行相应安排。

在众多的用人单位中,初级软件测试人员都被定义为功能测试人员,主要任务就是测试软件的功能是否符合需求文档里的要求。功能测试是最基础的,也是最重要的测试之一,因为一个软件如果连功能都没有实现的话,就不用谈软件的性能和安全性了。

功能测试是系统测试的一部分,系统测试采用的是黑盒测试,功能测试自然也是采用黑盒测试。如果面试时被问到:你是做黑盒测试的吗?答案是肯定的。如果被问到:你是做功能测试的吗?答案也是肯定的。如果对方问你:你是做系统测试的吗?答案也是肯定的。要能区分清楚三者的关系。当然在很多时候,人们习惯于把黑盒测试称作功能测试。

在功能测试的队伍中有从业时间较久、经验较为丰富的老员工,也有刚入职的初级软件测试人员,测试经理会根据每个人的工作能力进行相应的工作安排,复杂的功能模块会优先安排给经验丰富的功能测试人员;较简单的功能模块则会安排给刚入职不久的初级软件测试人员,并指定相应的导师。 ToCUaLm+hvaJfxb8M97/17oU4/0C/FDEzgs2c1w0asfM0NWIfK+Z+2soG3nzJ5GU

点击中间区域
呼出菜单
上一章
目录
下一章
×