热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

3条测试用例设计原则,实现持续集成测试

1.可靠性以任何频率运行的任何测试用例都必须可靠;也就是说,测试用例不能是片状的。考虑自动检查:在持续集成环境中,这个测试

1. 可靠性

以任何频率运行的任何测试用例都必须可靠;也就是说,测试用例不能是片状的。考虑自动检查:在持续集成环境中,这个测试用例每天可能会为单个团队运行数十或数百次。
 

如果测试只有 99% 的可靠性(每100次测试执行中有一个错误报告),并且您每天运行 200 次,那么您的团队每天将至少调查两次误报失败。将其乘以可以包含数万个测试用例的单元测试套件,数学就变得清晰了。

任何不是至少99.9%可靠的测试用例都应该删除,直到它可以超过可靠性阈值。
 

但是可靠性是什么样的呢?测试用例必须采取一切预防措施以避免假阴性或假阳性。它必须是可重复的,无需外部人工干预;它必须自行清理。

在完全自动化的系统中,人们通常没有时间,例如,每隔几次测试运行就删除SQL数据库上的表。即使是手动运行的测试用例也必须在其自身之后进行清理,因为不断变化的起始状态对测试执行者来说是一种难以管理的心理负担。

2. 重要性

例如,尝试对无法编译的代码运行单元测试是没有意义的。如果底层包的单元测试没有通过,那么运行API级别的集成测试套件就毫无意义。

始终尽可能快地运行重要的测试用例,并始终首先运行快的测试。这些几乎总是你的单元测试;典型的单元测试在几微秒内执行,并且通常可以并行运行。在我的持续集成系统中,我通常可以在大约 90 秒内处理数以万计的单元测试。

集成测试是一种跨越边界的测试,通常至少包括一个HTTP或其他机器对机器的边界。这些测试用例以毫秒为单位执行,并且比单元测试慢几个数量级。

专业测试是任何比集成测试(例如端到端自动化 UI 测试)慢得多的测试,或者需要人工干预或解释从而减慢整体结果报告速度的测试。

虽然比单元测试慢的测试当然有价值,并且在持续集成系统中绝对占有一席之地,但那个地方是在运行更快、更可靠的测试之后。

3. 特异性

一个好的测试用例应该尽可能少地单独做,以尽快产生通过/失败的结果。如果有无限的时间来执行测试运行,重叠覆盖和冗余测试就不是很重要了。

如果整个集成测试通过的预算只有五分钟,而每个集成测试用例需要10毫秒,那么只有时间运行30,000个测试用例。如果正在进行基于UI的测试,每次测试的时间接近1秒,那么只有300个测试用例的时间。

单元测试浏览器

图 2. 始终以清晰、描述性的方式命名测试用例。正如您在上面看到的,这使得诊断故障变得更加容易。

每个测试用例都应该是一个明确问题的明确答案,这些问题的组合构成了一个测试套件,该套件将对所有被测功能给出明确的答案。命名清晰的原子测试用例应该可以很容易地定位测试失败的潜在原因,并且还可以一目了然地了解哪些已测试和哪些未测试。

当测试用例清晰且具有原子性时,很容易找到覆盖重叠,从而很容易找到删除的候选对象。


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
author-avatar
走下去就下去
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有