第一章 软件测试基础知识
软件测试的对象:程序、数据和文档。
测试停止的依据
1、测试用例全部执行结束
2、测试覆盖率达到要求
3、测试超出了预定时间
4、查出了预定数目的故障
5、执行了预定的测试方案
第一节 基于结构的测试
(1)白盒测试
白盒测试设计中,共有语句覆盖,条件覆盖,判定/条件覆盖(分支覆盖),条件组合覆盖和路径覆盖。且强度依次加强。
逻辑覆盖标准:语句覆盖、判定覆盖(又称为分支覆盖)、条件覆盖、条件判定覆盖、修正条件判定覆盖(MC/DC覆盖)、条件组合覆盖和路径覆盖等。
基本规则:
- 满足条件组合覆盖则一定满足判定条件覆盖
例题:用白盒测试方法对如下图所示的流程图进行测试。若要满足分支覆盖,则至少需要( 问题1:B )个测试用例,正确的测试用例对是(问题2:B )(测试用例的格式为(A,B,X:X)。
问题1:
(A) 1 (B) 2
(C) 3 (D)4
问题2:
(A)(1,3,3:3)和(5,2,15:3)
(B)(1,1,5:5)和(5,2,20:9)
(C)(2,3,10:5)和(5,2,18:3)
(D)(5,2,16:3)和(5,2,21:9)试题解析:
第1题:
1、两个测试用例,一个走真分支,一个走假分支即可。
2、看分支1:要走两个分支,则一个用例中A>2,另一个用例A<=2(此时,可排除D),看分支2:要走两个分支,则其中一个用例必须满足A=5和X>3,
结合两个分支,则有一个用例为A=5,满足第一分支条件,且执行了X=X/A 后满足X>3,(X是int型)推出X>=20(此时,可推出选择B)。
可以再验证一下:
用例1:(1,1,5;5)
不满足分支1,也不满足分支2,走N—N;
用例2:(5,2,20;9)
满足分支1,X=X/A,则X=20/5=4;
继续执行,满足分支2,执行X=X+5=9,输出X=9。
二、性能测试的分类
1、负载测试:
通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试
2、压力测试
通过逐步增加系统负载,测试系统性能变化,并最终确定在什么负载条件下系统性能处于失效状态,以此来获得系统能提供的最大服务级别的测试。
3、强度测试
又称“疲劳强度测试”,采用系统稳定运行情况下能够支撑的最大并发用户数,或日常运行用户数,持续执行一段时间业务,保证达到系统疲劳强度需求的业务量,通过综合分析交易执行和资源监控指示,来确定系统处理最大工作量强度性能的过程。
4、容量测试
又称“大数据量测试”,包括独立的数据量测试和综合数据量测试,独立数据量测试是指针对系统存储、传输、统计、查询等业务进行的大数据量测试;综合数据量测试是指和压力测试、负载测试、疲劳强度测试相结合的综合测试。
四、软件开发模型
五、分层架构软件测试
1、易用性测试
包括:可辨识性、易学性、易操作性、用户差错防御性、用户界面舒适性、易访问性、易用性的依从性。
2、安全测试
主要针对的漏洞有:SQL注入,信息泄漏,身份认证,访问控制,明文传输等
例题1、 阅读下列说明,回答问题1至问题4(20分)
【说明】某在线购物平台的计费子系统提供购物车管理、账户信息管理和结算管理功能,主要功能如下:
(1)购物车管理:可展示特定用户已选购商品的列表,包含商品的名称、单价、数量等基础信息;并提供选购商品的增、删、改、查等基础管理操作。
(2)账户信息管理:可展示特定用户的收货地址、持有的优惠券、账户余额等基本信息。
(3)结算管理:可从购物车中选取商品进行结算,依据商品单价、数量及选择的优惠券计算所需支付的货款总额。
系统面向全国用户服务,并以微服务的分布式架构部署于某公有云平台,采用公有云提供的分布式数据库和分布式文件系统进行数据存储。
【问题1】(3分)请列举系统部署采用分布式架构部署的三大有点。
参考答案:支持大量并发用户,容错和灾备能力,可灵活扩展。
【问题2】(6分)
(1)系统的存储的可扩展性是否需要测试?请简要说明原因。
参考答案:不需要。其存储是有公有云提供,存储的可扩展性由公有云负责管理,所以无须进一步测试。
(2)系统的存储访问接口是否需要测试?请简要说明原因。
参考答案:需要,存储访问接口为系统新开发的接口,需要进行测试。
【问题3】(5分)为保证系统功能的正确性,测试人员对购物车管理、账户信息管理和结算管理分别进行了单元测试和接口测试,并准备进行整个购物平台系统的系统集成测试,在此之前,还赢进行什么测试?在测试中,将某商品的单价从10元修改为11元,与此同事,甲乙两个用户分别在北京和上海两地,在不适用任何优惠券的情况下,对包含3个商品的订单进行结算操作,甲看到的总价为30元,乙看到的总价为33元。这个错误说明系统设计时存在什么缺陷?
参考答案:(1)要进行各子系统的系统测试。(2)数据一致性的相关缺陷。
【问题4】(6分)为测试系统的功能性,测试人员进行以下测试:
(1)在北京地区搭建测试系统,对系统的结算管理模块的功能进行测试,但未测试其他两个模块。
(2)在上海地区搭建不同硬件配置的测试系统,对系统的购物车管理模块的功能进行测试,但未测试其他两个模块。以上测试方案是否存在问题?如存在问题,请简要说明原因。
参考答案:存在问题。分布式架构系统需要支持大量的用户或业务的同时进行,需要考虑并发和互斥的问题。在不同的地方测试不同的模块,无法体现分布式架构系统的并发与互斥方面的问题。
W模型
W模型指出:当需求被提交后,就需要确定高级别的测试用例来测试这些需求,当详细设计编写完成后,就需要确定测试条件来查找该阶段的设计缺陷。
V模型
V模型对应的关系如下图所示:
前置测试模型
第十二节 软件测试新技术应用
移动应用软件测试的测试类型:
(1)易用性测试 (2)性能测试 (3)信息安全测试 (4)网络测试 (5)可移植性测试
(6)功能测试
物联网安全架构基础知识:
例题:以下属于物联网的安全架构中通信层要遵从的原则的是(D)。
(A)处理复杂的、安全性要求高的任务的前提条件是设备智能化
(B)远程控制和更新的安全保障
(C)设备需要具备识别、认证和加密的功能
(D)信息的安全保障
试题解析:
通信层:是指安全发送/接收数据的媒介,即物联网解决方案中的连接网络。物联网安全架构的通信层具有以下两项原则:
(1)启动与云端的连接安全保障
(2)信息的安全保障
大数据系统测试:
大数据概念:是指将包含结构化、非结构化甚至多结构化的海量数据进行整合,并通过对这些数据的分析来发现数据中隐藏的相关信息,进而优化业务和管理。
大数据特征:数据类型多样、数据体量巨大、处理速度高速、价值密度低
常用工具:Hadoop、HPCC(高性能计算集群)、Cloudera、Cassandra、Storm
可信软件:
概念:是指一个系统即使在运行环境发生崩溃、操作人员出现操作错误、系统遭到恶意攻击、系统存在设计和实现错误的情况下,也能够按照预期的方式运行,那么该系统是可信的。
可信软件的验证工具:Spin、NuSMV、Atelier-B
人工智能辅助测试:
人工智能辅助测试技术包括基于约束的技术和启发式搜索算法。
人工智能启发式搜索算法有:遗传算法、蚂蚁算法、模拟退火算法。
第二章 软件测试应用技术
第一节 测试过程和管理
测试的过程阶段为:初测期、细测期、和回归测试期。
初测期:测试主要功能和关键的执行路径,排除主要障碍。
细测期:依据测试计划和测试用例,逐一测试大大小小的功能、方方面面的特性、性能、用户界面、兼容性、可用性等等。预期可发现大量不同性质、不同严重程度的错误和问题。
回归测试期:系统已达到稳定,在一轮测试中发现的作物已十分有限;复查已知错误的纠正情况,未引发任何新的错误时,终结回归测试。
第二节 基于规格说明的测试技术
第三节 基于结构的测试
第四节 分层架构软件测试
第五节 事件驱动架构软件测试
第六节 微内核架构软件测试
第七节 分布式架构软件测试
分布式架构系统:是若干独立计算机的集合,这些计算机对于使用者来说就像是单个计算机系统。分布式架构系统本质上有两大特点:
(1)系统内部由多个独立的计算机组成;
(2)系统外部呈现为单个的系统。
分布式架构系统的优点:支持大量并发用户、容错和灾备能力、可灵活扩展,但是额外增加的复杂性是分布式架构最主要的代价。
分布式架构软件测试的质量目标:容错、容量、响应速度、弹性。
分布式架构系统的主要类型有:web系统、对等网络(区块链)、并行计算、大数据和机器学习,这些系统的应用领域不同,其质量特性要求和目标也各有侧重。
例题:(B)系统瑟吉欧若干独立计算机的集合,这些计算机对于使用者来说就像是单个计算机系统。
(A)分层架构
(B)分布式架构
(C)微内核架构
(D)事件驱动架构
例题:以下关于分布式架构的叙述中,不正确的是(C)。
(A)支持大量并发用户
(B)可灵活扩展
(C)接口数量减少
(D)容易出现强耦合导致维护性差
试题分析:
本题考查软件测试的基础知识。
分布式结构导致接口数量的爆炸增加,而不是减少。
第八节 面向对象软件测试
第九节 Web应用测试
第十节 网络测试
1、网络测试的概念
网络测试:是指针对软件运行的底层网络环境进行的测试,常见的测试指标包括网络可用性、网络带宽、吞吐量、延时、丢包率、背靠背性能等。
1、吞吐量:是指被测试设备或被测试系统正不丢包的情况下,能够达到的最大包转发速率;
2、丢包率:通过测试由于缺少资源而未转发的包的比例来显示高负载状态下系统的性能;
3、延时:指测量系统在有负载条件下转发数据包所需的时间;即指报文从开始进入网络到它离开网络之间的时间。
4、背靠背性能:指通过以最大帧速率发送突发传输流,并测量包丢失时的最大突发长度(总包数量)来测试缓冲区容量。
2、网络测试类型
网络测试的类型:网络可靠性测试,网络可接受性测试、网络瓶颈测试、网络容量规划测试、网络升级测试、网络功能/特性测试、网络吞吐量测试、网络响应时间测试、衰减测试、网络配置规模测试、网络设备评估测试等。
(1)网络容量的测试:包括有效容量和最大容量的测试;
(2)网络响应时间测试:检测网络系统完成一系列任务所需要的时间;
(3)网络可靠性测试:在较长运行时间内经受较大负载,然后监视网络中发生错误和故障,验证高强度下网络系统的存活能力;
(4)网络吞吐量测试:测量网络的性能,检测每秒传输数据的字节数和数据报数;
(5)网络配置规模测试:通过反复比较不同的运行性能,选择最佳的运行性能配置的测试;
(6)网络瓶颈测试:寻找导致系统性能下降的瓶颈的测试,类似于“木桶原理”;
(7)衰减测试:测试贯穿整个通信或信道的信号衰减,在连接的一端发送一定长度的信号,在连接的另一端测试信号长度,确定衰减值。
3、网络测试对象
网络测试包括以下4中类型:
(1)网络平台:包括网络操作系统、文件服务器和工作站;
(2)应用层:是指应用程序的客户端、桌面操作系统和数据库软件等;
(3)子系统:主要是指路由器、集线器、交换机和网桥;
(4)全局网路径:则是整个网络系统中重要的点对点路径
例题:以下不属于网络测试的测试指标是(C)。
(A)吞吐量
(B)延时
(C)并发用户数
(D)丢包率
试题分析:
并发用户数是一个整体的性能指标,它跟软件、平台、硬件配置、网络环境都相关,不属于网络测试的指标。
例题:网络测试不能解决的问题是(C)。
(A)连通性
(B)丢包
(C)全表扫描
(D)延迟
试题分析:
全表扫描是数据库的概念,指对无索引的表中的每条记录都进行匹配,直至返回所有复核查询条件的记录为止,与网络测试无关。
例题:以下不属于网络测试的测试指标的是(B)。
(A)吞吐量
(B)内存占用率
(C)背靠背性能
(D)丢包率
延迟的概念考察
例题:在网络应用测试中,网络延迟是一个重要指标。以下关于网络延迟的理解,正确的是(B)。
(A)就是指响应时间
(B)指从报文开始进入网络到它开始离开网络之间的时间
(C)指报文从客户端发出到服务器接受的间隔时间
(D)指报文从客户端发出到客户端接受到服务器响应的间隔时间
试题解析
网络延迟是指从报文开始进入网络到它开始离开网络之间的时间。
第十一节 文档测试
1、文档的分类
分类:开发文档、管理文档、用户文档
(1)、开发文档:产生于软件开发过程,是前一阶段的工作成果表现,是前一阶段的工作成果体现,也是后一阶段工作的依据
(2) 、用户文档是为用户准备的软件使用、操作、维护的资料
例题:软件文档按照其产生和使用的范围可分为开发文档、管理文档和用户文档。其中开发文档不包括(C)。
(A)软件需求说明
(B)可行性研究报告
(C)维护修改建议
(D)概要设计说明书
例题:以下关于文档测试的说法中,不正确的是(D)。
(A)文档测试需要仔细阅读文档,检查每个图形
(B)文档测试需要检查文档内容是否正确和完善
(C)文档测试需要检查标记是否正确性
(D)文档测试需要确保大部分示例经过测试
试题解析
文档中的示例应像用户一样载入和适用使用样例。如果是一段程序,就输入数据并执行它以每一个模块制作文件,确认它们的正确性。
2、评价
编制评价规格说明的活动由下列3个子活动组成:
(1)分析产品的描述
(2)规定对产品及部件执行的测量
(3)按照评价需求验证编制的规格说明
评价需求:的主要内容是描述评价的目标、特别是描述了产品的质量需求。
评价规格说明:是确定对软件机器部件实行的所有分析和测量,标识要分析和测量的软件部件。
评价记录:是评价执行计划时详细记载的动作组成。
评价报告:主要内容是执行测量和分析的结果,以及能被重复和重新评价的必要信息。
3、概要设计说明书评测内容
可追溯性:分析该软件的系统结构、子系统结构,确认该软件设计是否覆盖了所有已确定的软件需求,软件每一成分是否可追溯到某一项需求。
接口:分析软件各部分之间的联系,确认该软件的内部接口与外部接口是否已经明确定义,模块是否满足高内聚和低耦合的要求,模块作用范围是否在其控制范围之内。
· 风险:确认该软件设计在现有技术条件下和预算范围内是否能按时实现。
实用性:确认该软件设计对于需求的解决方案是否实用。
技术清晰度:确认该软件设计是否以一种易于翻译成代码的形式表达。
可维护性:从软件维护的角度出发,确认该软件设计是否考虑了方便未来的维护。
质量:确认该软件设计是否表现出良好的质量特征。
各种选择方案:看是否考虑过其他方案,比较各种选择方案的标准是什么。
限制:评估对该软件的限制是否现实,是否与需求一致。
其他具体问题:对于文档、可测试性、设计过程等进行评估。
例题:(B)属于概要设计说明书的评测内容。
(1)分析该软件的系统结构、子系统结构,确认该软件设计是否覆盖了所有已确定的软件需求,软件每一成分是否可追溯到某一项需求。
(2)系统定义的目标是否与用户要求一致。
(3)从软件维护的角度出发,确认该软件设计是否考虑了方便未来的维护。
(4)是否所有界面与更高级别文档中的需求一致。
(A)(1)(2)(3)
(B)(1)(3)(4)
(C)(2)(3)(4)
(D)(1)(2)(3)(4)
4、需求说明书评测内容