数据驱动测试

如何简单的理解TDD与DDT

隐身守侯 提交于 2020-04-06 06:19:16
TDD:TEST-DRIVEN Development 测试驱动开发究竟是什么意思?如何理解测试驱动开发? 举个红绿条简单的例子: 1.编写测试代码 2.编译运行测试代码,肯定会失败,因为实现代码还没有写 3.编写实现代码 4.运行测试观察测试结果,可能是红色的。 5.开发修改代码使得测试通过 6.运行测试,观察测试结果,直到变绿 7.可进行重构,进行代码优化,删除冗余,继续运行测试直到变绿 DDT:DATA-DRIVEN TEST 数据驱动测试是什么意思?如何理解数据驱动测试? 数据驱动的自动化测试是针对上述开发与测试之间紧密耦合问题提出的测试方法。通过建立测试与开发定义的软件元数据的关联——元数据映射表,在测试与开发之间建立松耦合关系。不论测试人员修改测试脚本,还是开发人员修改软件,只需要修改元数据映射表,既可以满足测试与开发同步进行。这样,可以减少测试脚本调试的工作量,更好的实现自动化测试 什么是数据驱动的自动化测试框架? 数据驱动的自动化测试框架是这样的一个框架,从某个数据文件(例如ODBC源文件、Excel文件、Csv文件、ADO对象文件等)中读取输入、输出的测试数据,然后通过变量传入事先录制好的或手工编写的测试脚本中。其中,这些变量被用作传递(输入/输出)用来验证应用程序的测试数据。在这个过程中,数据文件的读取、测试状态和所有测试信息都被编写进测试脚本里

JMeter-接口测试之数据驱动

…衆ロ難τιáo~ 提交于 2020-03-05 13:01:17
前言 之前我们的用例数据都是配置在Http 请求中,每次需要增加,修改用例都需要打开 jmeter 重新编辑,当用例越来越多的时候,用例维护起来就越来越麻烦,有没有好的方法来解决这种情况呢?我们可以将用例的数据存放在 csv 文件中,然后通过 csv 文件配置来读取用例中的数据,执行测试。 一:设置测试用例,创建用例数据文件:testcase.csv 用例名称变量含义 : ${caseSeq}:用例编号 ${apiType}:api 类型 ${apiSeq} :api 版本号 ${apiName}:api 名称 ${priority}:优先级 ${url}:api 路径 ${methods}:请求方法 ${parameter}: 请求参数 ${expectValue}:期望值,用于断言 二:新建一个线程组,命名为:数据驱动,添加http 请求默认值,配置好IP地址和端口号 三:添加逻辑控制器-循环控制器。 循环控制器的作用可以控制整个用例循环执行的次数。默认值是1根据用例数量可以修改为8 四:在循环控制器节点下创建 CSV数据 文件设置,具体配置内容如下: 五:添加逻辑控制器——如果(if) 控制器,if 控制器的作用为根据不同条件执行不同的用例,例如这里根据不同的接口请求类型,分别添加GET和POST两个控制器。 (1) GET 设置的条件语句为 :"${methods}"==

自动化测试工具与模型(浅析)

南笙酒味 提交于 2020-02-02 20:52:39
1、上图来一张,Code Review翻译为:代码审查/代码评审 在金字塔中每一层测试的投入比例则要根据实际的产品特征来划分。在《Google 测试之道》一书中有提到,Google对产品测试类型划分为:小测试、中测试和大测试,釆用 70% (小)20% (中)/10% (大)的比例,大体对应测试金字塔中的Unit、Service和UI层。 1.1 单元自动化测试 单元自动化测试是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元是指一个函数, Java中单元是指一个类,图形化的软件中单元是指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。规范的进行单元测试需要借助单元测试框架,如Java 语言的 Junit、TestNG, C#语言的 NUnit,以及 Python 语言的 unittest、pytest 等,目前几乎所有的主流语言都有其相应的单元测试框架。 1.2 接口自动化测试 Web应用的接口自动化测试大体分为两类:模块接口测试和Web接口测试。 1)模块接口测试,主要测试模块之间的调用与返回。当然,我们也可以将其看作是单元测试的基础。它主要强调对一个类方法或函数的调用,并对返回结果的验证,所用到的测试工具与单元自动化测试相同。 2)Web接口测试又可分为两类

客户端GUI测试技术和自动化测试架构设计简谈

北城余情 提交于 2019-12-08 01:25:47
客户端自动化特点 客户端的自动化,通常做过的人都不是很愿意深入讨论。因为除了功能和逻辑之外,不得不面对各种界面变化,各种和环境交互,各种兼容问题以及想不到灰色地带,就算这样,也找不到太多有效的bug。然而即便如此,客户端的自动化必须去做,尤其是GUI的。它的自动化特点是: 复杂 成本高 不容易发现问题 技术要求高 架构很难通用 下面,从一些基本的东西开始一点点的讨论客户端GUI测试的一些问题和处理办法,以及自动化架构设计的一些思路。事实上就像上面说的,GUI的测试并不是为了发现bug,而是回归的一种方式,作为保证而已——它过了不能说明质量多么好,但是不过,质量肯定不达标。即使在微软内部,客户端的GUI一样不是个受欢迎的家伙,通常用来做BVT的测试(或一些重要性回归,冒烟等)。 客户端自动化简述 这里并不花过多的笔墨介绍什么是客户端,或者如何分类的种种——这些东西教材和网上的东西一坨一坨很多很多,这里可能“漫谈”的,是实际工作中,客户端和GUI自动化中可能遇到的一些底层技术,基本上原理,架构设计方法以及一些项目存在困惑,这些方面的一些处理的方法。 最早的自动化 我个人认为所谓的计算机行业的自动化,是一直跟着这个行业的发展在走,比如下面的这些: 老式计算机——CPU计算: 最早自动解决手工分配穿孔的卡片问题 内存分配任务调度:操作系统的核心就是内存和任务的自动管理 系统配置Loader

(二十一)unittest的数据驱动ddt

 ̄綄美尐妖づ 提交于 2019-12-06 06:49:48
1.pip install ddt 2.测试类前读取文件或者写一个list 3.测试类前加入修饰器 @ddt.ddt 4.case前加入修饰器@ddt.data(list) 1.安装 2.测试类前读取文件或者写一个list import ddt list =['111111',' ','selenium','网易云课堂'] 2.测试类前读取文件或者写一个list import ddt list=['111111',' ','selenium','网易云课堂'] 3.测试类前加入修饰器 @ddt.ddt @ddt.ddt class searchCaseClass(unittest.TestCase): def setUp(self): self.object=indexClass() def tearDown(self): self.object.quit() 4.case前加入修饰器@ddt.data(list) @ddt.data(*list) def test_4(self,data): self.object.search_operator(data) 多数据参数 testData = (["selenium","pytest"],["python","yield "]) #多个参数 来源: https://www.cnblogs.com/wx921308494/p

自动化测试中的数据驱动和关键字驱动

笑着哭i 提交于 2019-12-05 08:39:09
a.数据驱动:从某个数据文件(odbc,csv,excel,txt)中读取输入输出的测试数据,然后通过变量传入手动测试脚本中,通过这些数据来验证测试数据 程序和数据分离,测试数据存放到一个文件中,脚本是另外一个文件 b.关键字驱动:从面向对象角度出发,同样业务逻辑编写成一个类或者函数作为关键字被不同的脚本调用 每个步骤对应文件中一行内容 c.DDT:官网参考:https://ddt.readthedocs.io/en/latest/ Data-Driven Tests缩写 包含类的装饰器ddt和两个方法装饰器: data 直接输入数据 file_data 从文件中获取测试的数据 ddt.data 装饰测试的方法,参数是一系列的值 ddt.file_data 装饰测试方法,参数是文件名 ddt.unpack 传递的是复杂数据结构时候,比如元组字典,添加unpack之后,ddt会自动把元素或者列表对应到各个参数上 使用前必须安装好ddt模块:pip install ddt 来源: https://www.cnblogs.com/yuxiaofeng/p/11915647.html

自动化框架-数据驱动

匿名 (未验证) 提交于 2019-12-03 00:39:02
https://www.cnblogs.com/fnng/p/6111516.html 最近在整理接口测试相关的资料,所以,看到有关资料就会多看两眼。偶看到别人发的微信公众号。 曾几何时,也许某大牛说,搞自动化必须要把测试数据放文件里,然后通过程序读取文件。于是,大家纷纷效仿。 什么?你做自动化测试居然不读取测试数据文件,一看就是新手,没逼格。 小王啊!我们这个自动化框架一定得做数据与代码分离,得读取文件啊! 在这个全民微信的年代,各位大牛开了公从号,传授大家自动化测试技术,教点啥呢?那我们就从读取数据文件开始起吧! 什么是数据驱动? 从它的本意来解释,就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。说人话,其实就是参数化。 数据驱动有什么用? 对开发来说说,数据驱动无处不在,写好了一个模块,传个参数调用一下,看结果是不是等于预期。 def add(a,b): return a + b if __name__ == ‘__main__‘: result = add(3, 5) assert result == 8 对测试有来说就可厉害了,你知道早期的自动化测试(工具)都是流水式,第一步打开浏览器,第二步输入“abc”,第三步点击按钮。假如我有一个登录,登录的步骤完全一样,就是每次登录时用的账号密码不一样。用数据驱动啊! # 伪代码 def login

8-12接口测试进阶-1数据驱动

我只是一个虾纸丫 提交于 2019-12-01 09:54:32
课程目录: 数据驱动 接口源码分析 从源码中解析接口信息 Dubbo接口测试 接口持续集成 数据驱动测试(Data-Driver Testing) 相同的测试脚本使用不同的测试数据执行,并完全分离了测试数据和测试行为,这样的设计模式叫做数据驱动。 TestNG实现测试驱动的两个关键注解: @DataProvider @Parameters 使用DataProvider package com.csj2018.testdata; import org.testng.annotations.DataProvider; public class TestData { @DataProvider(name="car") public Object[][] createData(){ return new Object[][]{ {"明朝","王阳明"} }; } } package com.csj2018; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; public class DataProviderDemo { /* * 类中提供测试数据 */ @DataProvider(name="car") public Object[][] createData(){ return