单断言VS多断言

STST

想和大家讨论一下,一个测试用例里只做一个断言
还是一个用例里做多个相关的断言

比如有一个查询函数Query(id)?返回[姓名,性别,年龄]

那么是在一个测试用例里对这三个属性进行断言好?

还是在三个测试用例里,对每个属性进行断言好?

HZ

三个检查一个用例

你是希望有10个问题每次告诉你一个人折腾10次还是一次告诉你10个折腾1次

STST

哦,但是我发现分开写,表达力更强

你说的"折腾"当然有道理,但是牺牲了表达力

STST

现在的讨论分为两派了,如果能各抒己见最好

我比较支持分开写的这一派,但是也无法反驳前面一派

CRS

你的这3个属性是由一个行为获取到的..,为嘛要写成3个...

STST我是感觉表达力会强一些

CRS

那为啥不可以把这3个验证抽成一个方法..如果有必要抽的话

STST

如果Query复杂一点,姓名,性别,年龄各自来自复杂的算法,是不是分开就更容易表达跟踪了

WL

怎么知道这三个属性无相关性,三个用例单独验证都正确不等于一次取出时全部正确吧

STST

嗯,是的,很有见解

对这个问题可以这样解释

我现在对这个说法很认同

以概念本身为单元,一个概念本身有几个属性,应该放一起断言,但是不应该同时断言几个概念

WL

同意

STST

也就是说,不能再一个测试里,断言两个概念

比如执行

Insert(...)

断言Insert的结果

Query()

断言Query的结果
因为Insert的结果和Query的结果是两个无关的概念,不应该放一个测试里断言
我是这么理解的了

WL

塞兄很擅长抽象总结,我觉得,insert和query是两个独立test,如果合起来那是另一个新的test,一般是带业务关联的,否则没必要放一起,放一起后测试方向也不一样

STST

过奖过奖,喜欢瞎掰而已

嗯,这个问题再讨论下去,又成了OOX里的原则问题了
单一职责:一个模块只做一件事
用在这里感觉也很合适:一个测试只断言一件事,为什么把Insert和Query放一个测试用例不好,就是因为一个测试断言了两件事

LF

做正确的事,而不是正确的做事

STST

嗯,而且是只作一件正确的事

时间: 2024-11-08 21:58:27

单断言VS多断言的相关文章

01 java断言assert初步使用:断言开启、断言使用

参考文件:http://blog.sina.com.cn/s/blog_59c9412d0100fd55.html 1 说明 java断言assert是jdk1.4引入的. jvm断言默认是关闭的. 断言可以局部开启的,如:父类禁止断言,而子类开启断言,所以一般说“断言不具有继承性”. 断言只适用复杂的调式过程. 断言一般用于程序执行结构的判断,千万不要让断言处理业务流程. 2 判断eclipse是否开启了断言 代码如下: public static void main(String args[

Jmeter 02 Jmeter断言之响应断言

看完上一篇博客,相信大家应该可以使用Jmeter发送HTTP请求了.那么我们既然是要测试,就肯定需要判断结果了.Jmeter对于请求的响应数据提供了几种断言机制,这里大概说一下比较常用的几种断言. 响应断言 响应断言应该算是我们最常用到最方便且对性能消耗较小的断言了,它基本可以覆盖我们对接口响应数据的大部分判断情况,我们还是以上一篇文章中的第二个接口来举例. Url: https://data.cma.cn/weatherGis/web/weather/weatherFcst/getCurren

性能测试-JMeter断言之JSON断言

前面一节我们学习了JMeter断言之响应断言,今天我们来学习JMeter另一种断言方法:JSON断言. JSON用于描述文本数据结构,有如下形式:1.对象(object)对象是一组无序的名称/值对.对象以{(左大括号)开始,以}(右大括号)结束.每个名称后面跟着:冒号,名称/值对之间用逗号分隔.比如:{"name":"zhangsan","sex":1,"age":25}2.数组(Array)数组是值的有序集合.数组以[(左中

C++11 新特性,运行时断言与静态断言

C98或C99中的库为:<cassert> 或<assert.h> 运行时断言,故明思议是当程序在运行的时候才作为判决,可以认为是对参数的有效性的判断. 而静态断言,是对参数的条件判断提前做了,在预编译的时候进行完成的.如: //demo1.cpp #include <cassert> using namespace std; char *arrayAolloc(int n){ assert(n>0); return new char [n]; } int mai

C++断言与静态断言

断言是很早之前就有的东西了,只需要引入cassert头文件即可使用.往往assert被用于检查不可能发生的行为,来确保开发者在调试阶段尽早发现“不可能”事件真的发生了,如果真的发生了,那么就表示代码的逻辑存在问题.最好的一点就是,断言只在Debug中生效,因此对于Release版本是没有效率上的影响的. #include <iostream> #include <cassert> using namespace std; int main() { int i = 22; asser

Jmeter JSON断言和响应断言的区别是什么?

假设响应数据是{"code":0,"datas":{"option":1}} 响应断言:"code":0,检查点这样写就不会报错,但是如果想验证 "option":1,断言结果就会出错. 这时候就需要使用JSON断言. JSON断言:$.datas.option,  预期结果填0,断言通过.需要了解JSON Path表达式语法,很简单,5分钟不到就能搞定. 原文地址:https://www.cnblogs.

AssertJ断言系列-----------&lt;数据库断言二&gt;

那么,在实际的接口测试中,我们除了要断言响应的数据正确之外,可能有的还需要断言数据层是否数据真的有入库. assertj db是可以直接对数据库进行断言和操作的. 一.创建一个students表 CREATE TABLE `students` ( `id` VARCHAR(32) DEFAULT NULL, `Name` VARCHAR(32) DEFAULT NULL, `Sex` VARCHAR(32) DEFAULT NULL, `Age` VARCHAR(32) DEFAULT NULL

性能测试-JMeter断言之响应断言精说

断言用于验证取样器请求或对应的响应数据是否返回了期望的结果.可以是看成验证测试是否预期的方法. 对于接口测试来说,就是测试Request/Response,断言即可以针对Request进行,也可以针对Response进行.但大部分是对Response做断言. JMeter常见的断言元件如下:1.响应断言 2.JSON Assertion 本章节,我们主要先来学习JMeter响应断言. 配置项 Apply to: 1.在大多数情况下,只有主取样器具有所有必需的响应数据.但是很多Web应用使用了Aj

断言与静态断言

ASSERT: NAME // 准确陈述 assert - abort the program if assertion is false // assert(断言) - 如果断言(assertion)是错误的就终止这个程序. SYNOPSIS // 概要 #include <assert.h> // assert函数包含在<assert.h> 这个头文件中 void assert(scalar expression); // 函数原型 :void assert(常量 表达式) D