51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1015|回复: 1
打印 上一主题 下一主题

[原创] 数据驱动测试自动化测试工程师必要的技能

[复制链接]
  • TA的每日心情
    无聊
    前天 09:05
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-12-22 14:20: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
      · 当数据量级特别大的情况下,通过数据库这样方式的管理数据相对比较高效

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:26
  • 签到天数: 651 天

    连续签到: 19 天

    [LV.9]测试副司令

    2#
    发表于 2023-3-3 13:43:49 | 只看该作者
    好好利用起来
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 01:56 , Processed in 0.066420 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表