谈谈测试用例中的前置条件

简介: 在简单模块或单元测试中,大家对于前置条件的理解很容达成共识。但在面对一个复杂系统时,则关于前置条件容易困扰,或是因为可操作性,或是因为可界定性。

1.背景

一个测试用例基本要素包括以下 3 点:

  • 前置条件,或者叫被测对象的初始状态
  • 执行步骤
  • 预期结果

在简单模块或单元测试中,大家对于前置条件的理解很容达成共识。但在面对一个复杂系统时,则关于前置条件容易困扰,或是因为可操作性,或是因为可界定性。

2.前置条件的组成

  • 被测对象的程序版本

    • 在测一个库、一个类、一个可执行程序时,版本很容易定义;但面对一个网站时,要说清楚版本不是一件容易的事情。
  • 被测对象的相关数据,包括

    • 数据库里的数据
    • 缓存服务中的数据
    • 队列中的数据
    • 配置文件中的信息
    • ……
  • 测试环境

    • 测试工具与被测对象的网络拓扑情况
    • 测试工具、被测对象、通讯网络等计算、带宽、存储资源的情况

3.关于被测对象相关数据的准备

极简情况:测试一个类的方法

可以通过构造函数、借助 set 接口等来保证方法调用前,类处在一个确定的状态中。

正常情况:测试一个网站的注册功能

空库的情况下,

  • 第一次执行注册 a 用户 时成功
  • 第二次执行注册 a 用户时反馈失败。

此时都代表网站正常,但两次测试属于不同的测试用例,因为其系统的初始情况不一样。

为了可重复验证测试功能,需要在注册 a 用户,清除掉 a 用户的注册信息,以保证可重入性。此时,注册测试用例的前置条件中的数据要求就是,数据库中没有 a 用户的信息。

正常情况:测试列表的翻页功能

因为数据记录条数不同,导致页面显示的情况会不同。比如说:

  • 空数据
  • 不满一页的数据
  • 10 页的数据
  • 100 页的数据

此时,就需要让数据库里的数据处在不同的数据量情况下,才能进行有效测试。可选的方案包括:

  • 每次测试前,人工清理和准备需要的数据
  • 每次测试前,执行专用的数据生成 SQL(含清理数据)
  • 在数据库里提前生成4 种数据,借助一些其他查询条件来区分。即重点测试翻页功能,其他功能就能用来辅助功能测试。
  • 提前创建4 种数据库快照,按需恢复到需要的数据库状态。

4.说明

  • 离开前置条件来谈测试用例执行结果,很难界定是否真是系统的 bug。
  • 并不需要控制所有前置条件的一致性,一是单个测试用例只与有限的数据相关,二是控制绝对一致的成本很高,不划算。
目录
相关文章
|
7月前
|
安全 Shell 网络安全
渗透测试的前置知识00
数据结构的姿势更新了一部分,接下来回到主业的网络安全上
42 0
|
测试技术
单元测试|Unittest setup前置初始化和teardown后置操作
单元测试|Unittest setup前置初始化和teardown后置操作
86 0
单元测试|Unittest setup前置初始化和teardown后置操作
|
存储 机器学习/深度学习 自然语言处理
软件测试前置基础知识(基本概念,DOS命令)
软件测试前置基础知识(基本概念,DOS命令)
|
前端开发 测试技术 数据库
|
安全 测试技术 定位技术
|
6天前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
16 0
|
28天前
|
JavaScript jenkins 测试技术
这10款性能测试工具,收藏起来,测试人的工具箱!
这10款性能测试工具,收藏起来,测试人的工具箱!
|
1月前
|
人工智能 监控 测试技术
利用AI辅助工具提升软件测试效率
【2月更文挑战第17天】 随着科技的不断发展,人工智能(AI)在各个领域的应用越来越广泛。在软件测试领域,AI技术也发挥着重要作用。本文将探讨如何利用AI辅助工具提升软件测试效率,包括自动化测试、智能缺陷识别和预测等方面。通过引入AI技术,软件测试过程将变得更加高效、准确和可靠。
147 1
|
1月前
|
Web App开发 前端开发 测试技术
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
|
26天前
|
测试技术
现代软件测试中的自动化工具与挑战
传统软件测试面临着越来越复杂的系统架构和不断增长的测试需求,自动化测试工具应运而生。本文将探讨现代软件测试中自动化工具的应用和挑战,深入分析其优势与局限性,为软件测试领域的发展提供思路和启示。

热门文章

最新文章