构建测试框架是软件测试从业者最具挑战性的工作之一,这是一个既费时又复杂的过程。但一旦构建了正确的测试框架就可以帮助团队更有效的测试、减少测试设计和维护工作,并可以获取更好的ROI(回报投资率),能够帮助团队改进和优化流程。
使用良好的测试框架,可以提升测试的效率,使得测试覆盖率得到进一步的提升,但我们清晰的知道,开始是一个痛苦的过程,通过本文你可以得到测试框架的基本原理。
在深入研究如何构建测试框架和技巧之前,让我们想回顾下软件开发生命周期的基本块:需求、测试、缺陷和发布。
在开发生命周期中的需求描述了应用程序应该是什么,能做什么事,需求是开展一切的起点。在进行工作前,要列出需求,你应该问一问以下几个问题:
- 你想做什么?
- 需要什么来实现?
- 该怎么做呢?
下面我们来看一张简单的图:
不管做什么业务,需求是成功的至关重要的起点,这是我们开展工作的起点,在上图中,我们把测试分成了三个部分:定义、集合、环境。
一旦我们确定了需求,那就可以通过测试来确保应用程序的行为符合需求预期,对于每个测试,可以由一个测试定义来概括。
而这些测试可以是单个的,也可以是一系列的,从而形成所谓的测试集合。
而对于这些单个的测试或测试集合,我们必然要明确其最后在哪里运行,即规定其运行环境,从操作系统到浏览器、分辨率等等。
一旦定义了测试并运行它们,那么也就会得到系列的缺陷,根据缺陷我们可以溯源到对应的需求。
上述整个的过程对于我们创建测试框架是非常重要的。
那么问题来了,什么是测试框架呢?
优秀的测试框架是我们测试的一个起点,是我们构建测试计划的基石,可以将需求与测试链接起来,可以确保程序行为符合预期,可以在发现缺陷时溯源需求,从根源提供问题的解决方案。
测试框架定义
测试框架是一组用于创建和指导构建测试用例的原则,它帮助我们将实践与工具结合从而更有效的进行测试设计,包括但不限于编码标准、测试数据管理和设计、测试报告结构等等。
构建这样一个标准化流程的测试框架可以使团队更快高效的创建测试和提升测试覆盖率。代码的开发也将能够从更高的维度进行分离,从而做到高度的复用。这种做法对于构建一个成功的企业级测试框架至关重要。
接下来会分节说明如何进行分离,做到高复用。
1. 定义
构建测试框架的第一步是确定需求,在构建测试框架时,首先要做的是标识并详细说明贯穿整个过程的基础流,怎么标识?通过下面的问题来进行
- 用户群体是?
- 用户为什么要用?
- 在哪些场景下用户在用?
2. 分解
构建测试框架的下一步就是将工作流程分解成原子颗粒,与每个步骤相关联的单独操作,请注意不是指单元或单元测试,在这个阶段我们要始终从用户视角出发考虑,我们可以通过以下问题来梳理分解:
- 原子行为动作是什么,其输入参数是什么?
- 这些原子行为动作是结果会是怎么样的?
- 工作流逻辑是什么?
- 如何退出整个工作流?
3. 决策
构建测试框架的第三阶段就是决策,这可能是最棘手的阶段了,因为还有几个至关重要的步骤需要做:
- 在什么样的环境下使用?
- 哪些是可以复用的?
- 哪些应该自动化,哪些应该手动实施?
下面我们一一进行说明。
3.1 环境
在前文我提过环境,大体需要从以下几个方面考虑:
- 操作系统
- 浏览器
- 设备(移动&平板)
- 用户角色
- 冲突软件
3.2 高复用
在决定了使用哪个环境来运行测试后,必须确定哪些任务、场景、流程等的复用,测试框架支持高度的的可复用行基本能力。
3.3 自动化
确定自动化场景、流程等是一个复杂的工作,因为受诸多因素的影响,例如团队、技术、工具、经验、人力、系统等等。
通常情况下,对于主业务流、典型场景、一些可能乏味、耗时的,例如数据录入、环境设置、数据清理等,以及一些手工无法完成的任务,例如屏幕响应能力,自动化则显得至关重要了。
既要利用自动化提升效率,又要最大限度的降低成本,所以如何合理的引入自动化就成了一个挑战了。
3.4 什么时候不用自动化
尽管自动化可以加速测试周期和提升覆盖率,但不是所有的事情都可以自动化的。
为什么不自动化呢?答案是有些事是必须交给人去做的,这个答案听起来怪怪的是吧?
毕竟自动化有时是很难理解终端用户的视角的。
上面大体说明了什么是测试框架,下面我们开始说说构建一个框架所需的步骤,让我们深入的了解下框架本身的各个关键部分。
构建测试框架
通过下面一张图,我们来看下一个测试框架需要具备哪些关键能力。