《软件测试技术实战:设计、工具及管理》—第2章 2.7节测试用例不应该包含实际的数据

简介: 测试用例是“一组输入、执行条件、预期结果”,毫无疑问地应该包括清晰的输入数据和预期输出。没有测试数据的用例最多只具有指导性的意义,不具有可执行性。

本节书摘来自异步社区《软件测试技术实战:设计、工具及管理》一书中的第2章,第2.7节测试用例不应该包含实际的数据,作者顾翔,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.7 测试用例设计的若干错误观点
2.7.1 能发现到目前为止没有发现的缺陷的用例是好的用例
首先申明,这句话十分有道理,但很多人都曲解了这句话的原意,认为“能够发现难以发现缺陷的测试用例才是好的测试用例”,却忘记了软件测试的目的所在,这是十分可怕的。笔者倾向于将测试用例当作一个集合来认识,对它的评价也只能对测试用例的集合来进行。软件测试本身是一种“确认和验证”的活动。软件测试需要保证以下两点。

  • 程序做了它应该做的事情。
  • 程序没有做它不该做的事情。

因此,作为软件测试实施依据的测试用例,必须能完整覆盖软件测试的需求,而不应该针对单个测试用例去评判好坏。

2.7.2 测试用例应该详细记录所有的详细操作信息
讨论这个问题前,可以先考虑一下软件测试的目的。软件测试的目的之一是尽可能发现程序中存在的缺陷。软件测试活动本身也可以被看作是一个项目,也需要在给定的资源条件下尽可能达成目标。根据笔者个人的经验,大部分的国内软件公司在软件测试方面配备的资源都是不足够的,因此必须在软件测试计划阶段明确软件测试的目标,一切围绕软件测试的目标进行。

除了资源上的约束外,测试用例的详细程度也需要根据需要来确定。如果测试用例的执行者、测试用例设计者、测试活动相关人对系统了解都很深刻,那测试用例就没有必要写得太详细了,文档的作用本来就在于沟通,只要能达到沟通的目的,就可以了。

一般在软件测试计划中,软件测试设计的时间占30%~40%,软件测试设计工程师能够根据项目的需要自行确定用例的详细程度,在测试用例的评审阶段由参与评审的相关人对其把关。

2.7.3 测试用例设计出来后是不用维护的
想必没有一个人会认可这句话是正确的,但在实际情况中,却经常能发现这种想法的影子。笔者曾经参与过一个项目,软件需求和设计已经变更了多次,但测试用例却没有任何修改。导致的直接结果是新加入测试工程师在执行测试用例时不知所措,间接的后果是测试用例成了一堆废纸,开发工程师在多次被无效的缺陷报告打扰后,对软件测试工程师不屑一顾。

这个例子可能有些极端,但测试用例与需求和设计不同步的情况在实际开发过程中确是屡见不鲜的。测试用例文档是“活的”文档,这一点应该被软件测试工程师牢记。

2.7.4 测试用例不应该包含实际的数据
在很多软件测试工程师编写的测试用例中,“预期输出”仅描述为程序的可见行为。其实,“预期结果”的含义并不只是程序的可见行为。例如,对一个订货系统,输入订货数据,单击“确定”按钮后,系统提示“订货成功”,这样是不是一个完整的用例呢?是不是系统输出“订货成功”,就应该作为唯一的验证手段呢?显然不是。订货是否成功还需要查看相应的数据记录是否更新,因此,在这样一个用例中,还应该包含对软件测试结果的显式的验证手段:在数据库中执行查询语句进行查询,看查询结果是否与预期一致。

测试用例是“一组输入、执行条件、预期结果”,毫无疑问地应该包括清晰的输入数据和预期输出。没有测试数据的用例最多只具有指导性的意义,不具有可执行性。当然,测试用例中包含的输入数据会带来维护、与软件测试环境同步之类的问题,关于这一点,《Effective Software Test》书中提供了详细的测试用例、软件测试数据的维护方法,供读者参考。

相关文章
|
5月前
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
688 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
8月前
|
分布式计算 Shell MaxCompute
odps测试表及大量数据构建测试
odps测试表及大量数据构建测试
|
9月前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
109 11
|
9月前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
134 10
|
10月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
316 6
|
11月前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
2715 1
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
10月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
234 1
|
11月前
|
存储 测试技术 数据库
数据驱动测试和关键词驱动测试的区别
数据驱动测试 数据驱动测试或 DDT 也被称为参数化测试。
201 1
|
11月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
161 4
|
11月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
770 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)