史上最细,自动化测试框架-数据驱动实战总结,一文概全...

本文主要是介绍史上最细,自动化测试框架-数据驱动实战总结,一文概全...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、自动化测试框架概念

随着时代高速发展,面对市场强大的竞争,研发的产品需要快速完成研发和测试。面对质量和快速的交付双重压力下,我们需要让代码替代人工完成日益多CASE检查,自动化测试框架孕育而生。

自动化测试框架是一套包含测试case、测试结果、测试方法等一些实现对测试软件进行测试的解决方法。

对于一个刚刚起步的测试团队,选择一款自动化测试框架,它们帮我们提前定义好概念和CASE编写方法等集合,能在项目中产生收益。

2、关键字驱动

什么是关键字驱动?
键字驱动,又称为表格驱动,是一种独立于应用程序的自动化框架。
关键字驱动框架下将测试用例分为四个部分:

Test Step:测试步骤
Test Object: 测试步骤对象
Action:测试对象执行的动作
Test Data:测试对象需要的数据

关键字驱动特点:
关键字驱动的核心思想是把编码从测试用例和测试步骤分离出,对于不会编码的测试人也会编写自动化脚本

测试人员可参与:框架建立完成后,手工测试和非技术人员都可以编写个性化自动化脚本

易维护:开发人员只需要维护关键字开发,系统更新等工作,不用涉及到具体的测试
组件复用:关键字驱动模块化,提供代码框架的复用性

关键字驱动应用:

可以对行业里流行的selenium、APPium、uiautomator库进行二次封装成关键字
以关键字驱动的框架:Robotframework

3、数据驱动

什么是数据驱动?
数据驱动主要解决测试海量数据,而测试步骤固定的场景而产生的设计模式。
数据驱动是相同的测试脚本使用不同的测试数据执行,测试数据和测试行为完全分离。

数据驱动框架主要分为两部分:
测试步骤:通常结合关键字驱动来执行
测试数据:通常存储在数据库或者Excel表格中

数据驱动特点:
代码和数据分离
通常与关键字驱动结合组成自动化流程

4、PO模式

什么是PO模式?
PO 是 Page Object 缩写。PO模式是一种常见的设计模式。

PO模式把待测页面当成一个页面对象:
一个页面对象包含元素对象的定位和元素操作方法
将页面对象和真实的网站页面一一映射起来

PO 模式一般包名四层架构:
page_locator:页面对象的元素定位
page_object:页面对象操作方法
test_case:测试用例
bage_page:封装页面中的公共的方法

OP模式页面返回的原则:
返回SELF,应为操作完成页面停留在现在的页面
返回其他模块的对象,因为操作完成后页面跳转到其他的页面当中
返回元素定位信息或者元素属性

PO模式特点:
易维护:业务层和d功能层实现隔离
复用性高:对关键库进行封装和提取公共方法
代码可读性强:将不同内容进行不同封装,整体代码阅读性提升
代码耦合度低

PO模式应用:
PO模式通常应用在WEB-UI自动化测试应用上

5、混合模式

可以结合实际需求和不同模式的优缺点结合使用,搭建个性化自动化框架。

目前流行自动化框架所用到的库有:
web测试:selenium、watir、Robotframework
app测试:Appium
桌面程序:QTP、AutoRunner
安卓程序:UIautomator

6、数据驱动测试实战

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

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

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

对于测试数据,我们可以将其存放在代码的数据结构中(比如数组、集合),也可以存放在外部文件(比如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
当数据量级特别大的情况下,通过数据库这样方式的管理数据相对比较高效

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

奋斗的道路上充满挑战,但正是因为挑战,我们才能成就非凡。相信自己的力量,不畏困难,追逐梦想的脚步绝不止步!

每一次努力,都是为了超越昨天的自己。坚持不懈,奋斗不止,勇往直前,相信自己的力量,你将创造属于自己的辉煌!

不要害怕失败,因为失败是通往成功的必经之路。只要坚持不懈,执着追求,一定能够创造属于自己的辉煌人生!

这篇关于史上最细,自动化测试框架-数据驱动实战总结,一文概全...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/613115

相关文章

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

一文全面详解Python变量作用域

《一文全面详解Python变量作用域》变量作用域是Python中非常重要的概念,它决定了在哪里可以访问变量,下面我将用通俗易懂的方式,结合代码示例和图表,带你全面了解Python变量作用域,需要的朋友... 目录一、什么是变量作用域?二、python的四种作用域作用域查找顺序图示三、各作用域详解1. 局部作

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化: