老徐最近翻译的Mercury“最佳功能测试实践”-第一部分

简介:

1       概述

       测试过程作为功能测试的最佳实践,用于实施不同机构的功能测试工作。它可以作为测试计划工作的基础,应用于每个软件开发的项目。在这个测试过程中描述的活动既可以用于新开发的组件,亦可以用于改进现有的回归测试。

2       测试管理

为了能顺利地获得测试的结果,将测试作为独立管理的过程是非常必要的。测试管理可以分为下面四个领域。

1)测试计划

2)测试执行

3)测试控制

4)测试过程改进

用于支持测试管理各个领域的工具可以采用 TestDirector

1.1测试策略和计划
    在制定测试策略时,要基于被测软件的质量目标。质量目标就是测试的需求。它们决定了测试的阶段和质量的目标。要想最优化测试的活动并制定一个切实可行的测 试计划,需要将被测软件分解成为一个一个的业务功能。在进行业务功能分解时,要以黑盒的方法来看待被测软件的功能,即独立于软件的实现方法。若想计算测试 的效果并且保证测试的活动适合于特定业务的需要,则需要引入风险评估的手段。

1.1.1   需求
    测试的必要条件是要确定预期结果或者需求。
为了能更好的了解需求,将需求进行分类是非常有帮助的。以我们的观点,可以将需求分为功能性需求和质量需求(非功能性需求)。功能性需求描述了在业务上期望如何使用新的软件系统,且该系统中应该包括哪些功能。质量需求包括的是软件系统的通用特性,且独立于功能。
1.1.1.1      功能性需求
    功能性需求以业务设计图的方式记录于文档中。为了在TestDirector中将需求作为测试的基础,需要将需求导入到TestDirector中。相应的业务设计图作为需求的附件存在,并作为将来测试活动的依据。
1.1.1.2             质量需求
    质量需求由两部分构成,
一部分是为整个产品或者项目定义的质量目标,另一部分是每个业务功能的质量需求,这些业务功能的质量需求取决于风险评估的结果。
1.1.1.2.1       质量目标
1)适应性
组件被修改以适应新需求的难易程度。

2)完整性
组件实现所有需要的能力的程度。

3)正确性
a)        组件在规格分析、设计和实现过程中无错误的程度
b)        组件满足需求或者用户需要与期望的程度
c)        基于给定输入产生相应输出的能力,并且这个过程符合或者满足需求

4)有效性
当组件完成指定任务时,能最少使用所需资源的程度。

5)可维护性
组件被修改以纠正错误,提高性能或其他属性,或者适应被改变了的环境的难易程度

6)模块性
软件系统由离散的组件组成的程度,即改变一个组件时能将对其他组件的影响降至最低。

7)可移植性
软件系统或组件能被转移到其他硬件平台或者软件平台上的难易程度。

8)可靠性
组件在一定的时间内、一定的条件下执行所需完成功能的能力。

9)可用性
用户对软件组件的理解和操作的难易程度。

1.1.1.2.2       业务功能的质量需求
    业务功能的质量需求是依据业务的风险进行定义的。
业务风险和技术复杂度 的信息存储在测试的需求中。 这两个参数决定了测试的程序和测试的工作量。 另外,针对业务功能分配测试员,并且将测试活动的当前状态落实到纸面上。 只有这样做才能在针对业务功能的整个测试过程中监控测试的状态。
1.1.2   测试阶段的定义
    依据已经定义的质量目标,我们需要将测试阶段进行合理的划分。
通常情况有以下几个阶段:

1)开发员自测试阶段(不在我们的考虑范围之内)
2)业务功能测试(单元测试)
3)业务流程测试(应用级的集成测试)
4)业务集成测试(端到端的集成测试)
5)性能测试
6)系统集成测试

下面的表中描述了每个测试阶段需要达到的质量目标:

 

   业务功能测试和业务流程测试是在软件项目开发过程中完成的。而业务集成测试和系统集成测试则组合成回归测试,用于软件系统上线前或者发布为产品前来检验软件的质量。


1.1.3   质量门
    测试是在不同的阶段中完成的。划分不同阶段的原因就是将不同的质量目标分配到不同的阶段中,从而能将测试的执行尽可能的提前。所以,在相邻的测试阶段中设置一个质量门就成为保障成功的关键要素。

下面的图中展示了每两个相邻阶段的质量门是如何设定的:

 


下面是对质量门的一种详细定义:

1)在业务功能测试之后

u 业务功能测试的测试用例执行了80%以上

u 业务功能测试的测试用例(A级风险)执行了100%

u 少于5个服务器端错误

u 少于30个中级错误

u 无致命性缺陷

2)在业务流程测试之后

u 业务功能测试通过

u 业务流程执行了100%

u 无业务流程完全失效,所有的错误都可以被修复

u 无致命性缺陷

3)在业务集成测试之后

u 业务流程测试通过

u 业务集成流程执行了100%

u 无致命性缺陷

1.1.4   功能分解
        在计划测试活动之前,功能分解应该作为第一个要完成的活动。
进行功能分解时,应该邀请业务方面和需求分析方面的代表共同参加。通常情况下,要遵从下面的原则:

1) 每个用户情形都是一个业务功能

2) 如果一组用户情形非常相似,那它们应该组合在一起形成一个业务功能

3) 如果一个用户情形非常大或者非常复杂,则应该将其分解为两个或者更多的业务功能
    
进行功能分解的思路体现在“将测试的单元确定为包含少量功能点的单位”,这样,每个测试单元的测试用例的数量就会被限制在一定的范围之内。我们可以将分解的目标设定为每个业务功能只有最多30-40个测试用例。    既然质量保证的基本思路是降低缺陷破坏业务的风险,同时为了确保质量保证的资源得到充分的利用,我们需要对每个业务功能进行风险的评估。
1.1.5   风险评估
还要考虑到的是,我们也要对技术影响进行分析。这样我们能对完成每个业务功能的测试活动所需的工作量进行估算。 

1.1.5.1  业务风险分析
    业务风险评估需要针对被测软件的所有业务功能。
评估的标准应该在整个业务的范围内是唯一的,才能在企业范围内使不同的评估结果具有可比性。

 

          结果

标准

A

高级风险

B

中级风险

C

低级风险

流程的类型

计算/验证

数据的改变

显示

业务影响

合法性

错误信息

使用频度

非常频繁

经常

极少

受影响客户的数量

大量/非常重要

 

1.1    测试准备
    测试的准备是一个独立的、分离的阶段,测试员在这个阶段中基于需求文档准备测试(业务设计图)。测试的准备要依据标准的方法,并应基于本阶段的工作生成标准化的文档。
1.1.1   业务功能测试
    基于风险评估,针对每个业务功能的不同风险级别都应有一个对应的测试过程和方法组合:
1)A级风险
利用等价类和组合进行系统性的测试完全自动化

2)  B级风险
利用等价类进行系统性的测试完全自动化

3)  C级风险
随意性测试手工执行,在TestDirector中提供文档化的执行过程

       对于每个测试过程和方法组合,要提供一个标准的文档进行方法论级的阐述和规定,每个测试人员依据这些标准的测试过程和方法组合进行测试。

    在TestDirector中要将测试用例的准备结果作为业务功能的附件。

1.1.2   业务流程测试
    业务流程测试是将所有的业务功能组合在一起,使用同一组数据进行工作。
    测试员的任务就是要确定每个业务功能的组合是否能连贯的执行。
    判断的结果使用矩阵来表示,例如下图:
注:yes(+);no(-)

业务流程矩阵

 

 

1

2

3

4

5

 

 

 

登陆

 

航班

查询

 

航班

预定

 

退出

 

注册

 

         后功能

前功能

1

登陆

-

+

-

+

+

2

航班查询

-

+

+

+

-

3

航班预定

-

+

-

+

-

4

退出

+

-

-

-

-

5

注册

+

-

-

-

+

从上面的表中我们能获得三个业务流程测试案例:
1)        1,2,2,3,2,4,1,1
2)        1,5,4
3)        1,2,3,4

1.1.3   业务集成测试
使用现有的回归测试案例进行业务集成测试。
在第一个阶段,测试案例仅被自动化,而不考虑测试的覆盖率。
在第二阶段,测试案例将被改进,以提高测试的覆盖率。
对于所有的新项目,回归测试应该在业务功能测试阶段和业务流程测试阶段的测试结果的基础上进行建设。
依据业务流程矩阵创建测试案例集,这个测试案例集应该能覆盖被测系统的所有外部接口。
假定我们的被测系统是Mercury的机票预定系统,它的架构图如下:

 

 
业务流程矩阵的设计如下图:

在业务集成测试阶段中的测试案例开发

 

 

1

2

3

4

 

 

 

 

预定一个航班

 

打印机票

 




本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/
目录
相关文章
|
9月前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
190 4
|
4月前
|
缓存 测试技术 API
RESTful接口设计与测试实践
通过理解和实践上述原则和步骤,你就可以设计和测试你的RESTful接口了。最后,它可能会变成你为优化系统性能和用户体验所使用的重要工具,因为好的接口设计可以使得从服务器端到客户端的通信更加直接和有效,同时提升产品的使用体验和满意度。如此一来,写一个好的RESTful接口就变成一种享受。
157 18
|
5月前
|
监控 测试技术 数据库连接
利用 RunnerGo 深度探索 API 性能测试:从理论到实践
API性能测试是保障应用稳定性和用户体验的关键环节。本文详细探讨了如何使用RunnerGo全栈测试平台进行高效API性能测试,涵盖测试计划创建、场景设计、参数配置到执行与分析全过程。通过电商平台促销活动案例,展示了高并发下的测试策略与优化措施,如代码与数据库查询优化、数据库连接池扩容、服务器资源配置调整及缓存策略实施等。最终显著提升系统性能,满足高并发需求。API性能测试需持续关注与优化,以适应业务发展和用户需求变化。
202 33
|
9月前
|
人工智能 JavaScript 前端开发
自动化测试框架的演进与实践###
本文深入探讨了自动化测试框架从诞生至今的发展历程,重点分析了当前主流框架的优势与局限性,并结合实际案例,阐述了如何根据项目需求选择合适的自动化测试策略。文章还展望了未来自动化测试领域的技术趋势,为读者提供了宝贵的实践经验和前瞻性思考。 ###
198 11
|
7月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
291 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
6月前
|
数据可视化 JavaScript 前端开发
利用Postman和Apipost进行API测试的实践与优化-动态参数
在API测试中,Postman和Apipost是常用的工具。Postman内置变量功能有限,面对复杂场景时需编写JavaScript脚本,增加了维护成本。而Apipost提供丰富的内置变量、可视化动态值配置和低代码操作,支持生成真实随机数据,如邮箱、手机号等,显著提升测试效率和灵活性。对于复杂测试场景,Apipost是更好的选择,能有效降低开发与维护成本,提高测试工作的便捷性和可维护性。
|
9月前
|
测试技术 Python
探索软件测试的深度与广度:从理论到实践
在数字化时代,软件已成为我们生活中不可或缺的一部分。随着技术的不断进步和用户需求的多样化,确保软件质量变得尤为重要。本文将深入浅出地介绍软件测试的核心概念、类型及其在软件开发生命周期中的重要性。我们将通过实际案例,展示如何实施有效的测试策略,并探讨自动化测试的未来趋势,旨在为读者提供一套完整的软件测试知识体系,帮助提升软件质量和开发效率。
|
9月前
|
jenkins 测试技术 持续交付
自动化测试框架的搭建与实践
在软件开发领域,自动化测试是提升开发效率、确保软件质量的关键手段。本文将引导读者理解自动化测试的重要性,并介绍如何搭建一个基本的自动化测试框架。通过具体示例和步骤,我们将探索如何有效实施自动化测试策略,以实现软件开发流程的优化。
299 7
|
9月前
|
测试技术 Python
探索软件测试的奥秘:从理论到实践
在软件开发的宇宙中,软件测试犹如一颗璀璨的星辰,指引着质量的方向。本文将带你穿梭于软件测试的理论与实践之间,揭示其内在的逻辑和魅力。从测试的重要性出发,我们将探讨不同类型的测试方法,并通过实际案例分析,深入理解测试用例的设计和应用。最后,我们将通过一个代码示例,展示如何将理论知识转化为实际操作,确保软件质量的同时,也提升你的测试技能。让我们一起踏上这段探索之旅,发现软件测试的无限可能。
|
9月前
|
测试技术
探索软件测试的奥秘:从理论到实践
本文深入探讨了软件测试的基本概念、重要性、主要类型以及实施策略。通过分析不同测试阶段和相应的测试方法,文章旨在为读者提供一套完整的软件测试知识体系,帮助他们更好地理解和应用测试技术,确保软件产品的质量和可靠性。
136 4