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