热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

浅谈软件测试人员不要这样写测试用例(给测试新手和老鸟的提示)

试用例的编写是QA团队的主要活动之一,我们的大部份时间都花在了编写、审查、执行和维护这些用例上。很不幸的是,测试用例仍然是最容易出错的地方。由于理解上的

试用例的编写是QA团队的主要活动之一,我们的大部份时间都花在了编写、审查、执行和维护这些用例上。很不幸的是,测试用例仍然是最容易出错的地方。由于理解上的差异,测

测试用例的编写是QA团队的主要活动之一,我们的大部份时间都花在了编写、审查、执行和维护这些用例上。很不幸的是,测试用例仍然是最容易出错的地方。

由于理解上的差异,测试实践组织方式的不同,以及时间的缺乏等等原因,我们经常看到一些难以让人满意的测试用例。

网上有很多关于要怎样写测试用例的文章,但这篇文章却是告诉你不要这样写测试用例——几个将有助于创造独特、优质且有效的测试用例的技巧。

现在,让我们开始。请注意,这些技巧不只适用于测试新手,它们同样适用于有经验的测试人员。

先说最重要的——什么是测试用例?如何编写测试用例?

测试用例是指导测试人员验证一个特定的指标或目标的一组指令,随后可以告诉我们,系统行为是否与预期一致。

有关如何编写测试用例的基本说明,请参阅下面的文章:
通过需求规格说明书(SRS)编写测试用例

并观看这个很赞的视频,它介绍了一些编写良好的测试用例的要诀和技巧:

测试用例中最常见的三个问题:

这些天,从我的学生和工作中的同事那儿,我看到的最常见的测试用例中的问题是:


  1. 步骤混合
  2. 将应用程序行为作为预期行为
  3. 一条用例中包含多个条件

在我记录的测试用例编写过程中最常见的问题列表中,这几条被列在了前三的位置。

有趣的是,这些既发生在测试新手身上,也发生在有经验的测试人员身上。我们只是一味地遵循着相同的存在缺陷的过程,却从来没有意识到,一些简单的措施就可以很容易解决这些问题。

我们来逐个讨论下细节。

不要这样写测试用例(给测试新手和老鸟的提示)(3)
发表于:2016-12-07来源:kiford作者:翻译:wisp点击数:32720 标签:测试用例
#1. 步骤混合 首先,什么是步骤混合? 例如,你正在给别人指从A点到B点的方向:如果你说去XYZ,然后去ABC,这并没有多少意义,因为我们需要思考首先,
#1. 步骤混合

首先,什么是步骤混合?

例如,你正在给别人指从A点到B点的方向:如果你说“去XYZ,然后去ABC”,这并没有多少意义,因为我们需要思考——“首先,我如何到达XYZ”——而“从这里左转,直行1英里,然后在第11号路右转就可以到达XYZ”可能会取得更好的效果。

同样的规则也适用于测试用例及其步骤。

例如:我正在为Amazon.com写一条测试用例 - 订购任何产品

以下是我的测试用例步骤(注:我只是写的步骤,而不包含测试用例的其他部分,如预期结果等)

a. 访问Amazon.com
b. 通过在屏幕顶部的”搜索”栏输入产品关键字或名字搜索产品
c. 从显示的搜索结果中,选择第一个
d. 在产品详情页,单击“添加到购物车”
e. 结算并支付
f. 检查订单确认页

现在,你能指出哪一步混合了多个步骤吗?

住,测试用例总是关于“如何”来测试,所以,在你的测试用例中写出“如何检查和支付”的确切步骤是非常重要的。

因此,这条用例如果写成下面这样会更有效:

a. 访问Amazon.com
b. 通过在屏幕顶部的”搜索”栏输入产品关键字或名字搜索产品
c. 从显示的搜索结果中,选择第一个
d. 在产品详情页,单击“添加到购物车”
e. 在购物车页面点击“结算”
f. 输入信用卡信息、物流信息和账单信息
g. 单击”结算”
h. 检查订单确认页

因此,一个混合了多步的步骤可以被分解成若干个单独的步骤。下一次我们写测试用例的时候,请大家都注意这一点,我相信你们会同意我的,因为我们在无意中经常这么做。
#2. 将应用程序行为作为预期行为

近来,越来越多的项目不得不得处理这种情形。

缺乏文档、极限编程、快速的开发周期,这些原因迫使我们依赖于旧版本应用程序来编写测试用例或将其作为测试的基础。通常,这是一个糟糕的实践——但并不总是这样。它是无害的,只要你保持开放的心态并明白——“应用程序可能是有缺陷的”。只有当你不这么认为的时候,事情才会变得不好。

像往常一样,我们通过实例来说明。如果你正在为下面这个页面编写/设计测试步骤: 用例1: 如果我的测试用例步骤是下面这样的: 1.打开购物网站 2.单

像往常一样,我们通过实例来说明。如果你正在为下面这个页面编写/设计测试步骤:
获取更多相关知识访问如下链接
https://edu.csdn.net/lecturer/3215
https://edu.csdn.net/course/detail/31909
https://edu.csdn.net/course/detail/30898
https://edu.csdn.net/course/detail/25768
https://edu.csdn.net/course/detail/22948
https://edu.csdn.net/course/detail/28104
https://edu.csdn.net/course/detail/28103
https://edu.csdn.net/course/detail/27231
用例1:
如果我的测试用例步骤是下面这样的:

1.打开购物网站
2.单击”配送和退货”——期望结果:”配送和退货”页显示“在这里填写你的信息”和一个“继续”按钮。

那么,这是不对的。

用例2:

1.打开购物网站
2.单击”配送和退货”
3.在屏幕上显示的“输入订单号”文本框中,输入订单号。
4.单击“继续”——期望结果:显示订单相关的配送和退货详情。

用例2更好,因为即使作为参考的应用程序行为不正确,我们也只不过是用它来指导我们做进一步研究并按照预期的正确功能来编写期望结果。

意: 将应用程序作为参考是一条捷径,但是有风险。只要我们足够小心,它可以产生令人吃惊的结果。 #3. 一条用例中包含多个条件 我们再次从例子中
注意:将应用程序作为参考是一条捷径,但是有风险。只要我们足够小心,它可以产生令人吃惊的结果。

#3. 一条用例中包含多个条件

我们再次从例子中学习——来看下面的步骤:这是一个登录功能的测试用例中的步骤。

a. 输入有效的详情信息,然后点击“提交”
b. 保持“用户名”字段为空,点击“提交”
c. 保持“密码”字段为空,点击“提交”
d. 使用已经登录的用户名/密码,点击“提交”

将4个不同的测试用例组合成了一个。你可能会说“这有什么不好?”不但节省了纸张,而且只用了1个用例就把原本用四个用例才能做的事情都做了,不是更好吗?好吧,不那么好。为什么?往下看:

如果其中一个失败了会怎么样?——我们不得不将整条用例标记为“失败”。如果我们将整条测试用例标记为“失败”,就意味着四种情况都不工作,但事实并非如此。

1

测试用例必须有一个流向。从预置条件到步骤1,然后是所有步骤。如果我遵循这个测试用例,如果第一步(a)成功,我将在登录后的页面,那里不会再有

测试用例必须有一个流向。从预置条件到步骤1,然后是所有步骤。如果我遵循这个测试用例,如果第一步(a)成功,我将在登录后的页面,那里不会再有“登录”选项。所以当我到了第二步(b)的时候,测试人员在哪里输入用户名?看,流向乱了。

因此,要将测试用例模块化。这听起来好像挺麻烦的,但是你需要做的只是将事情分解,并使用 Ctrl+C 和 Ctrl+V。
总结

这是对一些测试用例文档中的常见问题的简单总结,如果你遇到了其他问题并且愿意让我们在以后的文章中讨论,请告诉我。

获取更多相关知识访问如下链接
https://edu.csdn.net/lecturer/3215
https://edu.csdn.net/course/detail/31909
https://edu.csdn.net/course/detail/30898
https://edu.csdn.net/course/detail/25768
https://edu.csdn.net/course/detail/22948
https://edu.csdn.net/course/detail/28104
https://edu.csdn.net/course/detail/28103
https://edu.csdn.net/course/detail/27231


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 微软发布OneNote for WordPress插件,支持一键从OneNote获取内容发布
    微软今日发布了OneNoteforWordPress插件,该插件支持从OneNote一键获取 ... [详细]
  • 本文介绍了一些好用的搜索引擎的替代品,包括网盘搜索工具、百度网盘搜索引擎等。同时还介绍了一些笑话大全、GIF笑话图片、动态图等资源的搜索引擎。此外,还推荐了一些迅雷快传搜索和360云盘资源搜索的网盘搜索引擎。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 事件风暴是软件系统的快速设计技术,涉及技术人员和领域专家业务分析师。它最适合领域驱动设计环境,并倾向 ... [详细]
author-avatar
金玉的海角_745
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有