Hello!大家好,我是BugBear,一个专注于分享软件测试干货的测试开发。我们已经学习了单元测试和集成测试,今天我们来学习系统测试。
一、系统测试定义
系统测试(SystemTesting),是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试。
系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。
系统测试发现问题之后要经过调试找出错误原因和位置,然后进行改正,是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。
对象不仅仅包括需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。比较常见的、典型的系统测试包括恢复测试、安全测试、压力测试。
二、系统测试与集成测试
在单元上执行集成测试后,这些单元将组合到各个模块中,然后必须将其作为一个完整的系统进行测试,因此需要进行系统测试。
下面我们来看看集成测试与系统测试之间的区别
集成测试
系统测试
测试各个单元的协同工作效果
测试单元和模块作为整个系统(即整个产品)的一部分如何协同工作
与提供预期结果的模块有关
与符合指定要求的最终产品有关
仅执行功能测试
执行功能和非功能测试,例如可用性,性能,负载等
是黑盒测试还是白盒测试,都需要了解单元和界面
一种黑盒测试技术,不需要了解内部结构或代码
由开发人员和测试工程师执行
仅由测试工程师执行
在单元或模块而不是整个系统之间寻找缺陷
寻找并发现与影响整个系统的内部和外部接口有关的缺陷和问题
模拟两个单元之间的交互
模拟真实的测试用例
三、系统测试过程
系统测试过程分为四个阶段:测试计划阶段、测试设计阶段、测试实现阶段、测试执行阶段
测试计划阶段主要是定义测试目标、测试过程中人力资源的安排、测试准入准出条件、每个迭代版本的测试时间、里程碑点、风险分析等信息。测试计划最核心的目的就是控制风险。
测试设计阶段主要是完成测试方案,当测试计划和需求规格说明书完成评审后即开始设计测试方案。测试方案主要包括测试策略(功能、性能或自动化测试的策略)、测试环境搭建、测试数据准备、测试工具使用、优先级等信息;测试方案的核心是测试策略的设计,为测试用例设计做准备。
测试实现阶段主要是完成测试用例、测试规程、测试的预测试项。测试实现阶段最主要的是完成测试用例的设计与测试用例的评审。
测试执行阶段主要是执行系统测试预测试项、系统测试用例,修改发现的问题并进行回归测试,提交系统预测试报告、系统测试报告、缺陷报告。
四、系统测试分析
用户层:围绕用户界面的规范性、友好性、可操作性、系统对用户的支持,以及数据的安全性等方面展开。另外,用户层的测试通常还应注意可维护性测试和安全性测试。
应用层:主要是针对产品工程应用或行业应用的测试。从应用软件系统的角度出发,模拟实际应用环境,对系统的兼容性、可靠性等进行测试。针对整个系统的应用层测试,包含并发性能测试、负载测试、压力测试、强度测试、破坏性测试。
功能层:检测系统是否已经实现需求规格说明中定义的功能,以及系统功能之间是否存在类似共享资源访问冲突的情况。
子系统层:针对产品内部结构性能的测试。
协议/指标层:针对系统所支持的协议,进行协议一致性测试和协议互通测试。
五、系统测试方法
功能测试属于黑盒测试,是系统测试中最基本的测试。功能测试主要根据产品的需求规格说明和测试需求列表,验证产品是否符合需求规格说明。
主要用于分布式系统。在分布式系统中,很多功能的实现是通过多台计算机相互协作来完成的,这要求计算机之间能相互交换信息,所以需要制定一些规则(协议)。对协议进行测试,通常包括:
协议一致性测试
协议性能测试
协议互操作性测试
协议健壮性测试。
主要用于实时系统和嵌入式系统,性能测试是指测试软件在集成系统中的运行性能,目标是量度系统的性能和预先定义的目标有多大差距。
一种典型的性能测试是压力测试,当系统同时接收极大数量的用户和用户请求时,需要测量系统的应对能力。性能测试要有工具的支持,在某种情况下,测试人员必须自己开发专门的接口工具。
又称强度测试,是在各种超负荷的情况下观察系统的运行情况的测试。
在系统正常运行的范围内测试并确定系统能够处理的数据容量。容量测试是面向数据的,主要目的就是检测系统可以处理目标内确定的数据容量。
要验证系统的保护机制是否抵御入侵者的攻击。保护测试是安全性测试中一种常见的测试,主要用于测试系统的信息保护机制。评价安全机制的性能与安全功能本身一样重要,其中安全性的性能主要包括:有效性、生存性、精确性、反应时间、吞吐量。
验证系统从软件或者硬件失效中恢复的能力。失效恢复测试采用各种人为干预方式使软件出错,造成人为的系统失效,进而检测系统的恢复能力。如果恢复需要人为干预,则应考虑平均修复时间是否在限定的范围内。
备份测试是失效恢复测试的补充,目的是验证系统在软件或者硬件失效的实践中备份其数据的能力。
GUI测试与用户友好性测试和可操作性测试有重复,但GUI测试更