您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试技术 > 其他相关 > 正文

系统测试VS端到端测试:哪一个更好?

发表于:2018-06-29 作者:初心 来源:测试窝
端到端测试和系统测试同样重要,但即使是经验丰富的测试人员也会对两种测试方法能提供的优势感到困惑,并且通常我们只能选择其中一种测试方法。

在这篇文章中,我们将会讨论端到端测试和系统测试,为了理解两者之间的区别,我们首先介绍软件开发所经历的不同的阶段。

       

 

在软件行业中,我们总会陷入一个两难的境地,因为我们通常需要在更快的产品发布速度和更高的产品质量之间做出选择和平衡。我们希望能够同时获得发布的高速度和产品的高质量,但是很难达到这一目标。

                                           

 

 

软件的生命周期

软件的生命周期从获得客户需求开始,然后相关的团队就开始对需求进行全面的分析、并进一步设计技术规格。这些规范将帮助技术人员或开发人员开始他们的软件开发工作。下面将介绍涉及的步骤,以便您理解。

步骤1:根据产品描述,可以将软件产品分为不同的模块,然后再分为组件或单元。这些单元可以被独立开发,开发人员就能并行地进行开发工作。

一旦开发完成,需要对这些单元将进行单独测试,即为单元测试。

步骤2:在步骤1中的测试确保了系统的所有单元可以按照预期的功能运行。这些组件、模块或子系统需要与下一级集成,进行集成测试。

步骤3:当系统能够集成为一个完整的系统时,就需要进行系统测试。执行此级别的测试以检查系统的功能性以及非功能性是否符合业务需求。

步骤4:这是一个从客户可接受性角度出发执行的测试,因此称为验收测试。这种测试在将软件交付给客户(即生产环境)之前执行。

                               

 

什么是系统测试?

系统测试是在集成测试之后、验收测试之前进行的测试。系统测试是为了分析系统中相邻组件的协调性,以检验它是否符合质量标准。系统测试的重点是通过对集成产品进行功能性和非功能性测试来检测组件间是否存在缺陷。

进行非功能性测试是为了检验产品是否能够满足业务预期。执行它们是为了确定应用程序的响应时间或检查产品在各个平台上的兼容性或处理安装、性能、回归、可伸缩性、安全性等方面的问题。

应用程序需要清除功能级别和非功能级别的缺陷,以确保其符合市场标准,否则可能会损害公司的声誉。

                      

 

让我们通过Uber这样的出租车预订移动应用程序来解释一下系统测试:

Uber提供在线预订出租车的功能,它具有各种模块,如位置追踪、支付网关、票价计算和驾驶员档案浏览等模块,这些模块可作为单元测试的一部分单独地进行测试。

一旦这些模块能够独立工作,它们将被集成到测试中,并确保它们在集成测试下能彼此协作。

此外,客户的需求只会在系统测试中开始验证,例如客户能够找到离他所在位置最近的一辆出租车,或者他们能够使用他们选择的支付方式向优步付款等。系统测试将涵盖和验证这些场景。

 

 

为什么系统测试是重要的?

系统测试要求开发人员或测试人员在开展下一个测试类型之前进行以下几个方面的测试:

1、需要确保软件作为一个整体运行。

2、需要检查产品是否遗漏了任何一个功能性或非功能性需求。

3、需要在类生产环境中进行产品测试。

4、需要使用类似生产环境下的数据来进行产品测试。

  系统测试包括基于业务风险的场景下的测试,用户使用场景下的测试或高级别的产品行为的测试。与不同系统资源交互的使用案例也应该成为系统测试的一部分。

因此,系统测试应由在架构和业务层面都对产品有完整认识的人员进行。 进行系统测试的人员并不需要编码级别的知识,但必须要掌握系统知识。

通常,系统测试会由一个单独的团队执行,该团队将会设计他们自己的系统测试计划和系统测试用例,这些测试用例与之前的测试用例不同。如果需要,可以在多个环境中执行多次系统测试。

 

什么时候开始系统测试?

系统测试可以在满足以下条件时启动:

1、对于所有没有任何开放性缺陷的单元,单元测试已成功完成。

2、所有经过单元测试的组件都很好地集成在一起,集成测试已成功完成。

3、伪生产环境可用于测试系统产品。

4、系统测试人员知道系统的所有输入/输出,并准备好测试工件。

 

 

 

什么是端到端测试?

对软件进行测试是保证软件质量的重要手段。一个优质的产品总是会给创造者和买家都带来更高的满意度。换句话说,合格产品或优质产品是在每个测试级别彻底回归和消除缺陷的结果。

正如名称本身所解释的,端到端测试是将应用程序流与其依赖的系统一起进行测试的测试级别之一。这样做是为了确保在使用网络后,后端和前端应用程序(如数据库或GUI)能顺畅地交互,因此也被称为“链测试”。

与系统测试不同,用户界面测试在这里没有什么重要作用。一旦产品符合系统测试的条件,通常就可以进行端到端测试。

                               

 

继续使用Uber的例子来说明端到端的测试过程,我们将验证完整的客户使用流程:

在用户手机上打开应用程序 - >输入的目的地寻找出租车 - >在乘车前或乘车过程中进行定位 - >完成乘坐并使用其中一个付款选项付款 - >最后将资金结算到司机的账户中。

使用这种端到端测试流程能够确保满足客户的使用需求。这种类型的测试对于发现与客户体验相关的问题非常重要,特别是与多个系统相关的问题。

 

 

为什么端到端的测试重要?

当产品需要被开发成为分布式系统,并需要在各种环境中与其他系统共同运行时,端到端测试扮演着非常重要的角色。在这种情况下,需要进行360度全面检查以确保软件在不同平台和环境产品能准确地交互。

端到端测试的主要目标包括:

1、确保开发出的产品与其他属于或不属于我们的任何子系统能够良好协调。

2、检查从源系统到目标系统的所有系统流。

3、从最终用户角度验证需求。

4、识别异构环境中的问题。

如果需要,应进行可重复测试以检查应用程序的健康状况。当产品代码发生细微改变时,开发人员和测试人员在关于这些改变所带来的影响上可能会持有不同的意见。开发人员可能认为这种变化很小,但是这种变化足以让我们重新执行完整系统的端到端测试场景。但是,这样做可能会延迟产品的交付日期。

 

什么时候开始执行端到端测试?

端到端测试通常在以下情况下执行:

1、一旦产品符合系统测试的要求,其涵盖了所有的功能。

2、当产品所依赖环境准备好时。

3、当测试人员配备所需的知识和测试工具时。

4、当测试人员有适当的工具可以分析应用数据流。

 

系统测试和端到端测试的区别

我们将两者之间的区别总结在了下面的表格中:

         

 

选择系统测试还是端到端测试?还是两者都选择?

  通常我们认为系统测试和端到端测试是相同的,但实际上不是的。他们是涵盖了不同测试场景的测试类型。端到端的测试检查从头开始直到覆盖所有从属系统的系统末端的活动流,但系统测试将使用不同的输入集检查相同的功能以评估系统的响应。因此两者类型的测试所覆盖的测试场景是不同的。

 

结束语

系统测试人员需要具备真实用户的思维模式,而端到端测试人员需要同时了解上游和下游系统。如上所述,这两种测试类型在产品开发测试周期中同等重要,可以用它们来挖掘不同类别的缺陷。