自动化测试框架?数据驱动vs关键字驱动,该怎么做?

目录:导读

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


前言

对于自动化测试框架,其实并没有多数人想象中的那么高深玄乎,框架的概念只是一系列的被事先定义好的标准和规范。

在自动化测试中我们经常提到的对测试需求的解析、脚本设计、测试执行、测试报告、维护管理等等,通过框架将它们串联并封装起来,从而使框架的终端用户能够更方便地使用。

然而,一个好的自动化测试框架,不仅仅要能让用户方便使用,还需要考虑很多其他因素。

目前比较常见的自动化测试框架主要有3种:数据驱动框架、关键字驱动框架和混合型框架。

1、数据驱动框架(Data Driven Framework)
数据驱动最适合测试的业务逻辑固定不变的应用程序,只有测试数据会变化。通常测试数据会被配置在外部文件或数据库中。

2、关键字驱动框架(Keyword Driven Framework)
关键字驱动顾名思义,它提供了一系列通用的关键字,用户通过调用这些关键字并输入一些参数可以实现单个操作,比如,打开浏览器、打开某个网页、点击某个链接等等,然后通过组织这些关键字形成一个完整的测试流程。

3、混合型框架(Hybrid Framework)
混合型框架就是把数据驱动和关键字驱动整合起来,同时具备了两者的优点。与关键字框架不同的是,这种框架通常会提供一些针对于特定应用程序的关键字,比如登录、登出等。

然后在完整测试流程的基础上,再应用一层数据驱动,这样就能使测试逻辑和测试数据更加灵活和可配置。

不必重新造轮

在设计框架的时候应该尽可能的沿用自动化测试工具已提供的功能。比如,一个基于selenium的框架,selenium本身就已经提供了打开浏览器和网页,点击按钮等功能,就不必花时间再去开发这样一些关键字,以减少开发成本。

可重用性

一个好的框架必须具有高度的可重用性。我们可以把一些单独的操作组合成一些最常用的测试流程,比如,把“输入用户名”、“输入密码”、“点击登录”三个操作组合成一个关键字“登录”。

配置管理

如同开发团队一样,自动化脚本也需要有配置管理,这样才能更有效地对脚本的提交、修改、版本控制、基线化等操作进行管理,所以在设计框架的时候需要考虑结合配置管理工具,如CVS、VSS、SVN、Git等。

可配置性

1、外部可配置性
脚本的配置项应该放在外部文件中,像URL,路径,版本信息等,从而能使脚本在不同的环境下运行。另外配置文件的路径也不能写死,应采用相对路径,以保证框架能在不同的机器上顺利运行。

2、内部可配置性
当框架部署到不同的机器上时,会有不同的环境,要有能够自动根据不同的系统环境完成必要配置的能力。举个例子,比如一个selenium框架被部署到装有不同浏览器的机器上,框架应当能根据当前系统上装了哪些浏览器而分别运行它们。

对象库维护

在自动化测试中遇到的大多数问题基本上都是由于对象的属性变化导致的脚本失败,所以,对象库的维护能力对于一个框架来说十分重要。我们可以把对象库作为一个共享资源,由专人进行维护。对象库可以是一个外部的XML、Excel、数据库等。

执行模式

需要考虑到以下几种用例执行需求:
1、执行一个单独的用例
2、执行一个测试用例集
3、重新执行失败的用例
4、根据其他的用例或用例集的运行结果执行相应的用例或用例集

除了这些以外可能还有其他的方法,主要是根据项目的需求来的,所以只需要满足特定的项目测试需求就可以了,不必全部都实现。

状态监控

在脚本执行的时候,框架应当能够实时监控脚本的运行情况,如果碰到运行故障的时候应当能进行基本的容错恢复处理,这样的话不至于使脚本处在一个被block的状态,从而浪费大量时间。

测试报告

不同的应用程序往往会有不同的测试报告的要求,有时需要把许多用例集的运行结果结合起来(总的运行报告)看,多少个成功,多少个失败,通过率多少;有时又要看单独一个用例的执行情况,哪一步失败,失败原因是什么。

另一方面,多样化的测试报告表现形式也是需要考虑的。Excel、word、web、pdf、…等形式可以根据实际项目需要来选择,但不论做成何种形式都至少要保证测试报告的易读、易访问。

易调试性

一般情况下,调试(debugging)在开发测试脚本的过程中会占据大量时间,所以是否易于调试也是一个很重要的因素,直接影响到开发和维护框架的成本,不容忽视。

测试日志

一个好的框架应当能在测试执行过程中生产足够详细的日志信息(文字、截图等),这对于调试的帮助很大,同时也能我们快速定位到问题所在,节省时间。

易用性

易学易用对于自动化测试框架来说也很重要,因为毕竟是要面向最终用户的,如果框架很难上手,会失去用户群体,那框架也就没有存在的意义了。

所以在保证易用性的基础上,最好有一个详细的框架说明文档,对于新手来说帮助会比较大。

灵活性

灵活性是指框架应当能保证在目前的基础上做二次开发的能力,这个其实跟软件开发的标准是一样的,预留足够的可扩展性以便未来的版本升级。

性能

框架设计不宜过于复杂,太复杂的框架会增加脚本的加载、运行时间,从而导致运行脚本的效率低下。所以在设计框架的时候,也要考虑到性能这一因素。

引用外部工具

有 一些外部工具本身就提供了自动化接口的,我们不妨可以把它融入到框架中,可以省去不少工作量。比如,经典的QTP+QC框架。

编码规范

好的编码规范能使脚本易读、易维护、易管理。下面列出了一些点:
1、变量、常量、函数、文件、脚本的命名规范
2、函数、函数库的注释规范
3、对象命名规范

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

不要被挫折打倒,用勇气与坚持战胜困难。奋斗的路上或许艰辛,但每一次努力都将成就更强大的自己。相信自己的潜力,追逐梦想,你就能超越平凡,创造不凡!奋斗不息,成就非凡!

执着追寻,不惧失败。每一次跌倒都是蜕变的机会,每一次奋斗都离成功更近一步。坚持梦想,放飞心灵,用汗水和努力书写人生华章。只要你愿意奋斗,世界将因你而改变!

生命如火,燃尽青春岁月,奋斗无惧岁月流转。拥抱挑战,勇往直前,释放内心的激情与力量。不论遇到多少困难,都要坚持不懈地追求,因为只有那样,才能绽放出属于自己的光芒!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/78250.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BI报表工具有哪些作用?奥威BI全面剖析数据

BI报表工具有哪些作用?主要的作用是通过整合多业务来源数据,全面分析挖掘数据,来帮助企业实现数据化运营、支持智能决策、实现数据资产沉淀和增值、进行数据挖掘和预测分析、提高数据可读性和数据可视化程度等,从而提高企业的竞争…

【C++学习】STL容器——list

目录 一、list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers 1.2.6 list 迭代器失效 二、list的模拟实现 2.1 模拟实现list 三、list和vector的对比…

Java版知识付费平台免费搭建 Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台qt

Java版知识付费源码 Spring CloudSpring BootMybatisuniapp前后端分离实现知识付费平台 提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含:录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署,免费售…

CNN成长路:从AlexNet到EfficientNet(01)

一、说明 在 10年的深度学习中,进步是多么迅速!早在 2012 年,Alexnet 在 ImageNet 上的准确率就达到了 63.3% 的 Top-1。现在,我们超过90%的EfficientNet架构和师生训练(teacher-student)。 如果我们在 Ima…

【Kubernetes部署篇】基于Ubuntu20.04操作系统搭建K8S1.23版本集群

文章目录 一、集群架构规划信息二、系统初始化准备(所有节点同步操作)三、安装kubeadm(所有节点同步操作)四、初始化K8S集群(master节点操作)五、添加Node节点到K8S集群中六、安装Calico网络插件七、测试CoreDNS可用性 一、集群架构规划信息 pod网段:10.244.0.0/16…

HTTP——九、基于HTTP的功能追加协议

HTTP 一、基于HTTP的协议二、消除HTTP瓶颈的SPDY1、HTTP的瓶颈Ajax 的解决方法Comet 的解决方法SPDY的目标 2、SPDY的设计与功能3、SPDY消除 Web 瓶颈了吗 三、使用浏览器进行全双工通信的WebSocket1、WebSocket 的设计与功能2、WebSocket协议 四、期盼已久的 HTTP/2.01、HTTP/…

卡尔曼滤波 | Matlab实现无迹kalman滤波仿真

文章目录 效果一览文章概述研究内容程序设计参考资料效果一览 文章概述 卡尔曼滤波 | Matlab实现无迹kalman滤波仿真 研究内容 无迹kalman滤波(UKF)不是采用的将非线性函数线性化的做法。无迹kalman仍然采用的是线性kalman滤波的架构,对于一步预测方程,使用无迹变换(UT)来…

visio,word添加缺少字体,仿宋_GB2312、楷体_GB2312、方正小标宋简体等字体下载

一. 内容简介 visio,word添加缺少字体,仿宋_GB2312、楷体_GB2312、方正小标宋简体等字体下载 二. 软件环境 2.1 visio 三.主要流程 3.1 下载字体 http://www.downza.cn/ 微软官方给的链接好多字体没有,其他好多字体网站,就是给你看个样式&#xff…

vue3中CompositionApi理解与使用

CompositionApi,组合式API,相当于react中hooks,函数式。 优势:1,增加了代码的复用性(类似mixin,slot,高阶组件功能) 2,代码可读性更好。可以将处理逻辑和视图…

Elasticsearch:语义搜索 - Semantic Search in python

当 OpenAI 于 2022 年 11 月发布 ChatGPT 时,引发了人们对人工智能和机器学习的新一波兴趣。 尽管必要的技术创新已经出现了近十年,而且基本原理的历史甚至更早,但这种巨大的转变引发了各种发展的“寒武纪大爆炸”,特别是在大型语…

数字孪生的「三张皮」问题:数据隐私、安全与伦理挑战

引言 随着数字化时代的来临,数据成为了当今社会的宝贵资源。然而,数据的广泛使用也带来了一系列隐私、安全与伦理挑战。数字孪生作为一种虚拟的数字化实体,通过收集和分析大量数据,模拟和预测现实世界中的各种情境,为…

【云原生|Docker系列第3篇】Docker镜像的入门实践

欢迎来到Docker入门系列的第三篇博客!在前两篇博客中,我们已经了解了什么是Docker以及如何安装和配置它。本篇博客将重点介绍Docker镜像的概念,以及它们之间的关系。我们还将学习如何拉取、创建、管理和分享Docker镜像,这是使用Do…

循环结构进阶

二重循环 import java.util.Scanner;public class Demo01 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);// 二重循环 外循环班级 内循环学生for (int i1; i<3; i) { // 外循环班级System.out.println("请输入第" i "…

Leetcode-每日一题【剑指 Offer 17. 打印从1到最大的n位数】

题目 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e97&#xff08;1000000007&#xff09;&#xff0c;如计算初始结果为&#xff1a;1000000008&#xff0c;请返回 1。 示例 1&#xff1a; 输…

机器学习、人工智能、深度学习三者的区别

目录 1、三者的关系 2、能做些什么 3、阶段性目标 1、三者的关系 机器学习、人工智能&#xff08;AI&#xff09;和深度学习之间有密切的关系&#xff0c;它们可以被看作是一种从不同层面理解和实现智能的方法。 人工智能&#xff08;AI&#xff09;&#xff1a;人工智能是一…

什么是serialVersionUID?

serialVersionUID是干啥的&#xff1f; Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。 在进行反序列化时&#xff0c;JVM会把传来的字节流中的serialVersionUID与本地相应实体&#xff08;类&#xff09;的serialVersionUID进行比较&#xff0…

结构体和 Json 相互转换(序列化反序列化)

关于 JSON 数据 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也 易于机器解析和生成。RESTfull Api 接口中返回的数据都是 json 数据。 Json 的基本格式如下&#xff1a; { "a": "Hello", "b": "…

如何申请中国境内提供金融信息服务业务许可

依据《外国机构在中国境内提供金融信息服务管理规定》《外国机构在中国境内提供金融信息服务申请许可说明》等政策&#xff0c;外国机构在中国境内提供金融信息服务业务许可要求如下&#xff1a; 金融信息服务定义 所称的外国机构&#xff0c;是指外国金融信息服务提供者。 …

java环境搭建 Ubuntu Linux

jdk的安装和配置环境变量 使用apt sudo apt install default-jdk若是安装成功了在终端输入java -version来查看是否安装成功 使用官网下载的jdk包 直接在百度上搜索jdk&#xff0c;选择图片这个 网址:jdk下载网址 若是arm就选择带有arm的&#xff0c;反之选择x64的&#…

go逆向符号恢复

前言 之前一直没怎么重视&#xff0c;结果发现每次遇到go的题都是一筹莫展&#xff0c;刷几道题练习一下吧 准备 go语言写的程序一般都被strip去掉符号了&#xff0c;而且ida没有相关的签名文件&#xff0c;没办法完成函数名的识别与字符串的定位&#xff0c;所以第一步通常…