一文读懂自动化测试模型的演化过程
wptr33 2025-03-11 22:01 17 浏览
介绍
本文对自动化测试中的四种基础模型:线性模型、模块化驱动测试、数据驱动测试、关键字驱动测试进行了详细介绍,分析了各个模型的优势和劣势。让读者清晰的了解这四种模型的演化过程。
线性模型
通过录制或者编写应用程序的操作步骤产生相应的线性脚本,每个测试脚本相对独立,且不产生其他依赖与调用,这是自动化测试初期的表现形式。
优势
每一个脚本都是完整且独立的。所以,任何一个测试用例脚本拿出来都可以单独执行。
劣势
测试用例的开发与维护成本很高。
开发成本高:测试用例之间可能会存在重复的操作,需要为每个用例去录制或编写重复的操作。
维护成本高:测试用例之间存在重复的操作,所以当这些重复的操作发生改变时,就需要逐一进行修改。
模块化驱动测试
正是由于线性测试的缺陷非常明显,因此早期的自动化测试专家就考虑的测试模型来代替线性测试。做法也很简单,借鉴了编程语言中模块化的思想,把重复操作独立成公共模块,当用例执行过程中需要用到这一模块操作时则被调用进而消除了重复,从而提高测试用例的可维护性。
优势
提高了开发效率,不用重复编写相同的操作脚本。比如,已经写好一个登陆模块,那么后续测试用例在需要登录的地方调用即可。
简化了维护的复杂性,如果登录按钮的定位发生了变化,那么只要修改登陆模块中的脚本即可,对于所有调用登录模块的其他测试脚本来说不需要进行任何修改。
劣势
测试数据发生变化时,需要重新编写模块脚本。例如,现在我要测试不同用户的登录,首先用的是”Kevin”的用户名登录;下一个测试用例要换成“Mike”的用户名登录。在这种情况下,还是需 重复地编写登录脚本。
数据驱动测试
关键字驱动就是为了解决,在模块化驱动测试过程中,当数据发生变化时,需要重新编写模块脚本这一问题而孕育而生的。对于数据驱动所需要的测试数据,通过数据池进行管理。数据驱动就是数据的参数化,因为测试数据的不同而引起输出结果的不同。
通常使用外部文件(excel、csv、ini)或者数据库来实现数据驱动,本质就是实现测试数据与脚本的分离。
在excel中写入测试测试user和password
在代码中获取user和password变量的值,这样当变量的赋值在excel文档中发生变化时就不会影响代码了,进而实现测试数据与脚本的分离。
关键字驱动测试
关键字驱动就是把“数据”换成了“关键字”,通过关键字的改变引起测试的改变。常用的工具Selenium
IDE和Robot Framework
上图是Selenium IDE录制脚本页面,从页面中可以看出每一个动作分成了三个部分
做什么?(Command)例如输入、点击等动作
对谁做?(Target)对页面中的哪个元素进行输入、点击等动作
如何做?(Value)例如在输入框id=kw中,输入selenium3
相关推荐
- 十年之重修Redis原理(redis重试机制)
-
弱小和无知并不是生存的障碍,傲慢才是。--------面试者...
- Redis 中ZSET数据类型命令使用及对应场景总结
-
1.zadd添加元素zaddkeyscoremember...
- redis总结(redis常用)
-
RedisTemplate封装的工具类packagehk.com.easyview.common.helper;importcom.alibaba.fastjson.JSONObject;...
- 配置热更新系统(如何实现热更新)
-
整体设计概览┌────────────┐┌────────────────┐┌────────────┐│配置后台服务│--写入-->│Red...
- java高级用法之:调用本地方法的利器JNA
-
简介JAVA是可以调用本地方法的,官方提供的调用方式叫做JNI,全称叫做javanativeinterface。要想使用JNI,我们需要在JAVA代码中定义native方法,然后通过javah命令...
- SpringBoot:如何优雅地进行响应数据封装、异常处理
-
背景越来越多的项目开始基于前后端分离的模式进行开发,这对后端接口的报文格式便有了一定的要求。通常,我们会采用JSON格式作为前后端交换数据格式,从而减少沟通成本等。...
- Java中有了基本类型为什么还要有包装类型(封装类型)
-
Java中基本数据类型与包装类型有:...
- java面向对象三大特性:封装、继承、多态——举例说明(转载)
-
概念封装:封装就是将客观的事物抽象成类,类中存在属于这个类的属性和方法。...
- java 面向对象编程:封装、继承、多态
-
Java中的封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)是面向对象编程的三大基本概念。它们有助于提高代码的可重用性、可扩展性和可维护性。...
- 怎样解析java中的封装(怎样解析java中的封装文件)
-
1.解析java中的封装1.1以生活中的例子为例,打开电视机的时候你只需要按下开关键,电视机就会打开,我们通过这个操作我们可以去间接的对电视机里面的元器件进行亮屏和显示界面操作,具体怎么实现我们并不...
- python 示例代码(python代码详解)
-
以下是35个python代码示例,涵盖了从基础到高级的各种应用场景。这些示例旨在帮助你学习和理解python编程的各个方面。1.Hello,World!#python...
- python 进阶突破——内置模块(Standard Library)
-
Python提供了丰富的内置模块(StandardLibrary),无需安装即可直接使用。以下是一些常用的内置模块及其主要功能:1.文件与系统操作...
- Python程序员如何调试和分析Python脚本程序?附代码实现
-
调试和分析Python脚本程序调试技术和分析技术在Python开发中发挥着重要作用。调试器可以设置条件断点,帮助程序员分析所有代码。而分析器可以运行程序,并提供运行时的详细信息,同时也能找出程序中的性...
- python中,函数和方法异同点(python方法和函数的区别)
-
在Python中,函数(Function)...
- Python入门基础命令详解(python基础入门教程)
-
以下是Python基本命令的详解指南,专为初学者设计,涵盖基础语法、常用操作和实用示例:Python基本命令详解:入门必备指南1.Python简介特点:简洁易读、跨平台、丰富的库支持...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)