自动化测试必会之数据驱动测试

发表于:2022-12-22 09:13

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:稀土掘金

  数据驱动测试
  在实际的测试过程中,我们会发现好几组用例都是相同的操作步骤,只是测试数据的不同,而我们往往需要编写多次用例来进行测试,此时我们可以利用数据驱动测试来简化该种操作。
  参数化:
  输入数据的不同从而产生不同的测试结果(简单来说就是将输入的数据作为变量传入)。
  比如搜索商品,不同的搜索关键字和搜索条件作为入参,就会得到不同的搜索结果。
  数据驱动:
  测试数据的改变驱动自动化测试的执行,产生不同的测试结果,数据驱动本质上是高级的参数化。
  对于测试数据,我们可以将其存放在代码的数据结构中(比如数组、集合),也可以存放在外部文件(比如json、csv、yaml、Excel)或数据库中,通过相应的读取技术拿到测试数据实现数据驱动测试。
  各大语言测试框架都有对应的功能,比如Python的Unitest,Java的TestNG/Junit
  如TestNG有提供DataProvider注解实现数据驱动测试
  方式一:将测试数据保存到代码中(数组)
  //指定数据提供者,注入测试数据到测试方法中实现数据驱动测试
  @Test(dataProvider="getDatasFromArray")
  public void test(String name,String phone,String pwd) {
  //TODO
  }
  //从二维数组中获取数据驱动测试所需的测试数据(包含入参和期望值)
  @DataProvider
  public Object [][] getDatasFromArray(){
  Object [][] datas = {{"13323234545","123456","登录成功"},{"133232345451","123456","手机号码格式不正确"},{"13323234545","","密码不能位空"}};
  return datas;
  }
  方式二:将数据保存到外部的文件中(Excel)
  //指定数据提供者,注入测试数据到测试方法中实现数据驱动测试
  //需要注意的是:此时数据提供者返回的是一维数组,数组里元素类型是ExcelData对象,所以方法这里需要通过ExcelData类型接收
  @Test(dataProvider="getDatasFromExcel")
  public void test(ExcelData excelData) {
  //TODO
  }
  //从外部文件(Excel)中获取数据驱动测试所需的测试数据
  @DataProvider
  public Object [] getDatasFromExcel(){
      //读取指定Sheet 
      List<ExcelData> list = EasyExcel.read("filePath").
                  head(ExcelData.class).sheet("Sheet1").doReadSync();
      //将集合转换为数组
      return list.toArray;
    
  }
  数据驱动测试的优点:
  1、相似的测试步骤只需要编写一条用例,可以直接通过多条测试数据驱动执行,提高了测试脚本的复用性。
  2、测试数据和测试脚本分离,提高后期脚本可维护性。
  无论是将测试数据保存在代码或者文件,又或者数据库中都可以。至于保存在哪里取决于测试数据量大小和使用场景。
  ·少量的数据,比如账号相关的信息,可以直接写入代码中进行维护
  · 数据的量级在几十~几千之间,可以通过外部的文件进行管理,比如Excel
  · 当数据量级特别大的情况下,通过数据库这样方式的管理数据相对比较高效
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号