测试人应该懂的!自动化测试必会之数据驱动测试

张春  论坛元老 | 2024-10-29 20:31:23 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1031|帖子 1031|积分 3093

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
数据驱动测试

在现实的测试过程中,我们会发现好几组用例都是雷同的操纵步调,只是测试数据的不同,而我们往往需要编写多次用例来进行测试,此时我们可以利用数据驱动测试来简化该种操纵。
参数化:
   输入数据的不同从而产生不同的测试结果(简单来说就是将输入的数据作为变量传入)。  比如搜索商品,不同的搜索关键字和搜索条件作为入参,就会得到不同的搜索结果。
数据驱动:
   测试数据的改变驱动自动化测试的实行,产生不同的测试结果,数据驱动本质上是高级的参数化。  对于测试数据,我们可以将其存放在代码的数据布局中
  1. //指定数据提供者,注入测试数据到测试方法中实现数据驱动测试
  2. @Test(dataProvider="getDatasFromArray")publicvoidtest(Stringname,Stringphone,Stringpwd){ //TODO
  3. }
  4. //从二维数组中获取数据驱动测试所需的测试数据(包含入参和期望值)
  5. @DataProviderpublicObject[][]getDatasFromArray(){ Object[][]datas={{"13323234545","123456","登录成功"},{"133232345451","123456","手机号码格式不正确"},{"13323234545","","密码不能位空"}}; returndatas;}
复制代码
(比如数组、集合),也可以存放在外部文件(比如json、csv、yaml、Excel)或数据库中,通过相应的读取技术拿到测试数据实现数据驱动测试。
各大语言测试框架都有对应的功能,比如Python的Unitest,Java的TestNG/Junit
如TestNG有提供DataProvider注解实现数据驱动测试
方式一:将测试数据保存到代码中(数组)
方式二:将数据保存到外部的文件中(Excel)
  1. //指定数据提供者,注入测试数据到测试方法中实现数据驱动测试
  2. //需要注意的是:此时数据提供者返回的是一维数组,数组里元素类型是ExcelData对象,所以方法这里需要通过ExcelData类型接收
  3. @Test(dataProvider="getDatasFromExcel")publicvoidtest(ExcelDataexcelData){ //TODO
  4. }
  5. //从外部文件(Excel)中获取数据驱动测试所需的测试数据
  6. @DataProviderpublicObject[]getDatasFromExcel(){//读取指定Sheet
  7. List<ExcelData>list=EasyExcel.read("filePath").head(ExcelData.class).sheet("Sheet1").doReadSync();//将集合转换为数组
  8. returnlist.toArray;
  9. }
复制代码
数据驱动测试的长处:
1、相似的测试步调只需要编写一条用例,可以直接通过多条测试数据驱动实行,提高了测试脚本的复用性
2、测试数据和测试脚本分离,提高后期脚本可维护性
无论是将测试数据保存在代码大概文件,又大概数据库中都可以。至于保存在哪里取决于测试数据量巨细和使用场景


  • 少量的数据,比如账号相干的信息,可以直接写入代码中进行维护


  • 数据的量级在几十~几千之间,可以通过外部的文件进行管理,比如Excel


  • 当数据量级特殊大的情况下,通过数据库如许方式的管理数据相对比较高效
末了感谢每一个认真阅读我文章的人,投桃报李总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:


这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战堆栈,这个堆栈也陪伴上万个测试工程师们走过最艰难的旅程,渴望也能帮助到你!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张春

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表