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


    数据驱动测试

    在实际的测试过程中,我们会发现好几组用例都是相同的操作步骤,只是测试数据的不同,而我们往往需要编写多次用例来进行测试,此时我们可以利用数据驱动测试来简化该种操作。

    参数化:

    输入数据的不同从而产生不同的测试结果(简单来说就是将输入的数据作为变量传入)。

    比如搜索商品,不同的搜索关键字和搜索条件作为入参,就会得到不同的搜索结果。

    数据驱动:

    测试数据的改变驱动自动化测试的执行,产生不同的测试结果,数据驱动本质上是高级的参数化

    对于测试数据,我们可以将其存放在代码的数据结构中(比如数组、集合),也可以存放在外部文件(比如json、csv、yaml、Excel)或数据库中,通过相应的读取技术拿到测试数据实现数据驱动测试。

    各大语言测试框架都有对应的功能,比如Python的Unitest,Java的TestNG/Junit

    如TestNG有提供DataProvider注解实现数据驱动测试

    方式一:将测试数据保存到代码中(数组)

    1. //指定数据提供者,注入测试数据到测试方法中实现数据驱动测试
    2. @Test(dataProvider="getDatasFromArray")
    3. public void test(String name,String phone,String pwd) {
    4. //TODO
    5. }
    6. //从二维数组中获取数据驱动测试所需的测试数据(包含入参和期望值)
    7. @DataProvider
    8. public Object [][] getDatasFromArray(){
    9. Object [][] datas = {{"13323234545","123456","登录成功"},{"133232345451","123456","手机号码格式不正确"},{"13323234545","","密码不能位空"}};
    10. return datas;
    11. }

     方式二:将数据保存到外部的文件中(Excel)

    1. //指定数据提供者,注入测试数据到测试方法中实现数据驱动测试
    2. //需要注意的是:此时数据提供者返回的是一维数组,数组里元素类型是ExcelData对象,所以方法这里需要通过ExcelData类型接收
    3. @Test(dataProvider="getDatasFromExcel")
    4. public void test(ExcelData excelData) {
    5. //TODO
    6. }
    7. //从外部文件(Excel)中获取数据驱动测试所需的测试数据
    8. @DataProvider
    9. public Object [] getDatasFromExcel(){
    10. //读取指定Sheet
    11. List<ExcelData> list = EasyExcel.read("filePath").
    12. head(ExcelData.class).sheet("Sheet1").doReadSync();
    13. //将集合转换为数组
    14. return list.toArray;
    15. }

    数据驱动测试的优点:

    1、相似的测试步骤只需要编写一条用例,可以直接通过多条测试数据驱动执行,提高了测试脚本的复用性

    2、测试数据和测试脚本分离,提高后期脚本可维护性

    无论是将测试数据保存在代码或者文件,又或者数据库中都可以。至于保存在哪里取决于测试数据量大小和使用场景

    • 少量的数据,比如账号相关的信息,可以直接写入代码中进行维护
    • 数据的量级在几十~几千之间,可以通过外部的文件进行管理,比如Excel
    • 当数据量级特别大的情况下,通过数据库这样方式的管理数据相对比较高效

    **ps:**小编个人收集啦许多软测资料,希望能够帮到学软件测试的朋友们软件资料分享包括但不限于:Java自动化测试、Python自动化测试、性能测试、web测试、APP测试

    测试开发工具包:appuim安装包、fiddler安装包(也有配套视频教程)、eclipse、git、jmeter、loadrunner、monkey、postman、soapul、Xmind等等

    感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

      这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

     

  • 相关阅读:
    跟着Datawhale重学数据结构与算法(3)---排序算法
    增强LLM:使用搜索引擎缓解大模型幻觉问题
    程序单实例运行的一种实现
    数据赋能(67)——概念:数据变现
    选择国企背景的期货公司开户
    《MySQL高级篇》六、索引的创建与设计原则
    bootstrap学习:bootstrap复习
    合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测等应用
    Linux系统编程(四)——signal信号处理
    计算机毕业设计(附源码)python装修服务分析系统
  • 原文地址:https://blog.csdn.net/hlsxjh/article/details/133909870