《Unit Testing》1.4. 成功的测试套件拥有哪些属性?

什么造就了成功的测试套件

如果测量测试套件的质量?

  • 唯一可行的办法就是对测试套件里每一个测试进行单独的评估。

    • 你不需要一次性把它们都评估完。

    • 你可以逐步的进行评估

 

成功的测试套件拥有以下属性:

  • 集成到开发周期中

  • 只针对代码库中最重要的部分

  • 它以最低的成本提供最大的价值

集成到开发周期中

拥有自动化测试的唯一重点就是你要经常使用它们。

  • 所有的测试都应该集成到开发周期中。

  • 最理想的情况是,每当有代码变化,都应该执行这些测试,哪怕是最微小的代码变化。

 

只针对代码库中最重要的部分

  • 将单元测试的重点放在系统中最关键的部分,针对其余部分仅进行简单或间接的测试即可,这一点很重要。

  • 在大多数应用程序中,最重要的部分是包含业务逻辑部分的领域模型(Domain     Model)。

    • 测试业务逻辑会为您的时间投资提供最佳回报。

 

所谓的其余部分可以分为以下三类:

  • 基础设施代码

  • 外部服务和依赖,例如数据库和第三方系统

  • 粘合一切的代码

 

为此,您应该将域模型与代码库的非必要部分隔离开来。您必须将域模型与所有其他应用程序关注点分开,以便您可以将单元测试工作的重点放在该域模型上。

 

以最低的成本提供最大的价值

将测试合并到构建系统中是不够的,保持域模型的高测试覆盖率也是不够的。同样重要的是,只在测试套件中保留价值超过其维护成本的测试。最后一个属性可以分为两点:

  • 识别一个有价值的测试(扩展一下,包括如何识别低价值的测试)

  • 编写一个有价值的测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

找出数组中第i小元素(时间复杂度Θ(n)--最坏情况为线性的选择算法

找出数组中第i小元素 期望时间复杂度:Θ(n) 最坏情况的时间复杂度Θ(n^2) int randomized_select(int *array,int start,int end,int index){if(start end)return array[start];int middle randomized_partition(array,start,end);int position middle - start…

C# 9.0 终于来了, Top-level programs 和 Partial Methods 两大新特性探究

一:背景1. 讲故事.NET 5 终于在 6月25日 发布了第六个预览版,随之而来的是更多的新特性加入到了 C# 9 Preview 中,这个系列也可以继续往下写了,废话不多说,今天来看一下 Top-level programs 和 Extending Partial Meth…

4位BCD计数器设计

状态转换: 输出函数: 4位BCD计数器设计:

[Mvp.Blazor] 集成Ids4,实现统一授权认证

(又一个客户端集成了IdentityServer4)还是很开心的,目前已经有六个开源项目都集成到了Ids4认证中心了。1、Blazor系列文章回顾书接上文,关于Blazor学习呢,我也发了几篇文章了,我一般写东西都喜欢偏实战&…

重学ASP.NET Core 中的标记帮助程序

标记帮助程序是什么标记帮助程序使服务器端代码可以在 Razor 文件中参与创建和呈现 HTML 元素。 例如,内置的 ImageTagHelper 可以将版本号追加到图片名称。 每当图片发生变化时,服务器都会为图像生成一个新的唯一版本号,因此客户端总能获得…

小型数字系统---运动码表设计

运动码表设计中码表控制器是最难的,所以主要介绍如何设计码表控制器。 我们先给这个时序电路设计状态以及编码 先设计状态转换函数 首先画出状态图: (其中我们让其一到000状态就立马变为001状态,110状态存储完数据立马变成100状态) 根据状态图&#…

用 aforge.net 小试一下验证码识别

今天来小玩一下 aforge.net 套用官方的话就是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗…

国标转区位码电路设计及汉字显示

区位码国际码-2020H,由于采用加法器实现,因此用补码形式进行表示,区位码 国际码FFFF-2020H0001H国际码dfe0。 从网上找下机内码转化的软件,将一段自选文字输入该软件,进行十六进制的机内码转化。由于一个汉字是由四个十…

【WPF】DataGrid多表头的样式设计

需求在使用WPF开发时,使用DataGrid列表显示数据时,有些字段可以进行分组显示,用于更好的表达它们之间存在的某种关系,因此就考虑到要对DataGrid的表头进行扩展,可以显示多行表头,让这些有关联的字段内容显示…

异步清零和同步置数/清零的区别

同步,异步是对于时钟而言的。 同步指的是,状态的变化需要等待时钟有效沿来触发,所有动作同时跟随这个时钟变化,而异步时,状态变化不依赖与时钟。 异步清零说的是,你需要对一个计数器在满足某种条件时想要…

如何使用ABP进行软件开发之基础概览

ABP框架简述1)简介在.NET众多的技术框架中,ABP框架(本系列中指aspnetboilerplate项目)以其独特的魅力吸引了一群优秀开发者广泛的使用。在该框架的赋能之下,开发者可根据需求通过官方网站【https://aspnetboilerplate.…

模2加法,模2减法,模2除法

十进制的除法,大家都会做:列个竖式,商,写在上面,上个几,再用被除数减去积,求得余数…。 二进制的除法,和十进制的计算方法相同,也要列出个竖式计算。 二进制的除法&…

《Unit Testing》2.1 伦敦学派如何做隔离

针对单元测试的定义,主要有两种看法:经典学派。经典学派之所以经典,是因为这原本就是人们做单元测试和测试驱动开发的方式伦敦学派。伦敦学派扎根于伦敦的编程社区。单元测试的定义单元测试有很多定义,但是所有的定义都有三个重要…

找出第i个小元素(算法导论第三版9.2-4题)

找出第i个小元素(算法导论第三版9.2-4题) 期望时间复杂度:Θ(n) 最坏情况的时间复杂度Θ(n^2) int randomized_select_based_loop(int *array,int start,int end,int index) {while (true){if(start end)return array[start];int middle randomized_partition(a…

C++实现数组模拟链表(实现链表的增删功能)

代码如下: #include <iostream> using namespace std; const int N 100;struct Node {int data;int next; };class ArrayList { private:Node node[N];int maxSize;//数组容量int idx;//接下来要插入的结点的下标int len;//链表长度public:void initList(){node[0].nex…

Gartner:容器采用将迅速增长,但不会很快有利可图

导语容器的未来可期&#xff0c;到2024年&#xff0c;所有应用程序中的15&#xff05;将在容器中运行&#xff0c;而这一数据今天仅为5&#xff05;&#xff0c;但当前变现还比较难。正文近日&#xff0c;Gartner公司发表其首次为软件容器管理软件和服务市场做的预测。Gartner说…

快速排序在最坏的情况下时间复杂度(Ω(nlgn)(算法导论第三版9.3-3))

快速排序在最坏的情况下时间复杂度Ω(nlgn) 1⃣️在元素各异时或者少量相等&#xff08;元素个数n>70) 时间复杂度Ω(nlgn) void quick_sort_by_median(int *array,int start,int end) {if(start<end){int median select(array,start,end,(end - start 1)/2 (end - …

线性表的定义与操作-顺序表,链式表(C语言)

顺序表: typedef int Position; typedef struct LNode *List; struct LNode {ElementType Data[MAXSIZE];Position Last; };/* 初始化 */ List MakeEmpty() {List L;L (List)malloc(sizeof(struct LNode));L->Last -1;return L; }/* 查找 */ #define ERROR -1Position Fi…