美团前高级测试工程师教你如何使用web自动化测试
一、自动化测试基本介绍
1 自动化测试概述:
什么是自动化测试?一般说来所有能替代人工测试的方式都属于自动化测试,即通过工具和脚本来模拟人执行用例的过程。
2 自动化测试的作用
减少软件测试时间与成本改进软件质量
通过扩大测试覆盖率加强测试工作
进行手动测试难以完成的、需要更高的成本、更长的计划、更高的质量的任务
迭代更新较少,但仍需测试人员维护的,通过自动化解放人力
3 自动化测试的主要应用:
冒烟测试(主业务流程)
回归测试
性能测试
兼容性测试 (一套测试脚本,多个平台执行)
完成手动测试无法完成的工作下班后无人值守测试
4 web自动化实现的目标:
(一)原则:
编写自动化测试用例库,根据用例库里面的用例编写测试用例。
提高测试效率,降低测试成本
重复性较强的用例用自动化实现
快速的回归测试,提高版本发布的速度和质量
功能覆盖率达到要求
测试具有移植性和可重复性
(二)实施策略(持续集成):
框架的选择
环境搭建
case编写:提取公共模块、提取公共参数、功能逻辑熟悉
log输出
报告输出
Jenkins持续集成:定时集成、发送邮件
二、Web自动化工具
1 web自动化工具的选择:
市场上自动化工具分为开源和和商用付费两种,下面提供两种类型主流的selenium和QTP对比
最终选择:selenium+IDEA(java+maven+testng)+jenkins
三、Selenium介绍
(一)selenium 测试原理:
在自动化测试过程中,存在三部分组件:客户端脚本+浏览器驱动+浏览器终端。
驱动文件,以geckodriver.exe为例,这个可执行的驱动文件启动后,相当于一个暴露了一系列接口的服务器,监听某一端口。
客户端的操作(访问页面,定位元素,输入数据,点击按钮等)都是封装成了接口请求(eg:/session/xx/yy),然后提交到驱动服务器。
驱动服务器接收到客户端的请求后,再跟终端浏览器交互。
终端浏览器做出相应操作(操作元素、甚至浏览器本身:截屏、窗口、安装插件证书)。
(二)selenium 工具套件简单介绍
Selenium WebDriver:面向对象API。
Selenium IDE(集成开发环境):FireFox插件,用于提供图形化界面来录制和回放脚本,插件只是用来模拟原型的工具,并不希望测试工程师使用此工具用来运行大批量的测试脚本。此插件需要使用第三方的javaScript代码库才能支持循坏和条件判断
Selenium-Grid可以在多个测试环境以并发的方式执行测试脚本,实现脚本的并发执行,缩短大量测试脚本的执行时间。
四、Selenium WebDriver常用API
(一)selenium WebDriver常用基础API
(一) 浏览器操作
加载浏览器驱动,打开页面:
driver = new FirefoxDriver();
String baseUrl = "http://oa2.midairen.com/index.html";
driver.get(baseUrl);
关闭浏览器:
driver.close();//关闭浏览器
最大化窗口:
driver.manage().window().maximize();
后退到前一页:
driver.navigate().back();
前进到后一页:
driver.navigate().forward();
刷新页面:
driver.navigate().refresh();
获得title并打印
String title =driver.getTitle();
杀掉Windows的浏览器进程
当前浏览器窗口截屏(比较截屏)
操作浏览器的cookie
(二) 页面操作
获取页面的源代码
获取页面的URL地址
在输入框中清除原有的文字
在输入框中输入指定内容
单击按钮
双击某个元素
操作单选下拉列表
操作单选框
操作复选框
检查元素文本内容是否出现
执行JS脚本
操作iframe中的页面元素
操作富文本
(三) 元素定位的方法:
五、TestNG
(一)TestNG基本介绍:
TestNG是Java中的一个测试框架,是一个目前很流行实用的单元测试框架,有完善的用例管理模块,配合Maven能够很方便管理依赖第三方插件。使用TestNG可以做功能、接口、单元、集成的自动化测试,最常见的是结合selenium做功能自动化测试,它使用Java注释去写测试方法。
测试人员一般用TestNG来写自动化测试,开发人员一般用Junit写单元测试,TestNG适合测试人员使用的主要原因:TestNG更适合复杂的集成测试。
(二) testNG的特点:
注解
TestNG使用Java和面向对象的功能
支持综合类测试(例如,默认情况下,没有必要创建一个新的测试来作为每个测试方法的类的实例)
独立的编译时间测试代码运行时配置/数据信息
灵活的运行时配置
支持依赖测试方法,并行测试,负载测试,局部故障
灵活的插件API
支持多线程测试
(三) 注解:
TestNG常用的测试用例组织结构由test Suite-test-测试class-测试方法。Test suite有一个或者多个test组成,test由一个或者多个测试class组成,一个测试class有一个或者多个测试方法组成。运用不同层级的测试用例时,课通过不同注解实现测试前的初始化工作,测试用例执行工作和测试后的清理工作。
常用注解如下:

(四) 依赖测试
某些复杂的测试场景需要按照某个特定的顺序执行测试用例,一以此保证某个特定顺序执行测试用例,此测试场景运行需求称为依赖测试。通过依赖测试,不同的测试方法间共享数据和程序状态。使用dependsOnMethods参数 实现。
@Test(dependsOnMethods = {"testcase1"})
(五) 断言
在执行自动化测试用例的时候,我们需要自动判断用例执行完成后获得的输出值是否与预期值一致,这个时候就需要用到断言功能。TestNG中提供了一个Assert类:org.testng.AsserTestNG中提供了一个Assert类,org.testng.Assert类是作为放置一系列断言的静态方法的容器。
Assert.assertTrue(select1.isDisplayed());//断言判断select1元素是否在页面存在
常用的断言:
assertTrue:判断是否为true。
AssertFALSE:判断是否为FALSE。
AssertNull:判断是否为空
AssertNoNull:判断是否不为空
AssetEquals:判断是否相等
AssertNoEquals:判断是否不相等
相关文章:
美团前高级测试工程师教你如何使用web自动化测试
一、自动化测试基本介绍 1 自动化测试概述: 什么是自动化测试?一般说来所有能替代人工测试的方式都属于自动化测试,即通过工具和脚本来模拟人执行用例的过程。 2 自动化测试的作用 减少软件测试时间与成本改进软件质量 通过扩大测试覆盖率…...
MySql.Data.dll 因版本问题造成报错的处理
NetCore 链接MySQL 报 Character set ‘utf8mb3‘ is not supported by .Net Framework 异常解决_character set utf8mb3_csdn_aspnet的博客-CSDN博客 查看mysql版本号,两种办法: 第一种在数据库中执行查询:SELECT version; 第二种使用工具…...
囚徒困境——从博弈论的角度解释“美女配丑男”
前言 有一种很常见的现象,美女配丑男。其实这种现象背后是有一定科学原理的。本文将从博弈论的角度,从囚徒困境出发解释这一现象产生的原因。 囚徒困境 囚徒困境的经典案例 先来介绍一下经典的囚徒困境。 警方逮捕甲、乙两名嫌疑犯,但没有…...
运算符重载函数作为类的成员函数——有理数的约分
目录 一、题目 二、代码 三、算法分析 (一)数学表达式 (二) 代码实现 一)运算符重载函数 二)优化函数(实现有理数约分) 一、题目 通过运算符重载为类的成员函数来实现两个有…...
mysql数据库的内置函数--7
目录 内置函数 日期函数 字符串函数 数学函数 其它函数 内置函数 在mysql中这些函数用select进行使用 日期函数 函数描述NOW()返回当前的日期和时间CURDATE()返回当前的日期CURTIME()返回当前的时间DATE()从日期或日期/时间表达式中提取日期部分TIME()从日期或日期/时间…...
DS3800HPIB 有效执行任务的所有程序
DS3800HPIB是通用电气公司生产的Speedtronic Mark IV系列的一部分。这DS3800HPIB是一种大型电路板,具有八个连接端子,电路板两侧的尺寸各不相同。左下角有一个红色小方块,上面有一个拨动开关。这DS3800HPIB有大约50个天蓝色的小二极管。这DS3…...
图像比对、人像比对和人脸识别的区别是什么?
图像比对、人像比对和人脸识别都是图像处理技术,但是它们的实现方式和应用场景均有所不同。 图像比对 图像比对是指通过计算机视觉技术将两张或多张图片进行相似度比较。主要包括图像特征提取、匹配和评估等步骤,通常使用神经网络等深度学习技术来实现…...
python中的抽象基类
目录 协议和鸭子类型抽象基类定义抽象基类使用抽象基类直接继承通过注册(register) __subclasshook__魔法方法 协议和鸭子类型 python中有大量的魔法方法,python所谓基于协议编程,就是依赖这些魔法方法。 什么意思呢?…...
耗时几个月,终于决定把原本想用于商业的系统开源了
前言 嗨,大家好,我是希留,一个被迫致力于全栈开发的老菜鸟。 今天又来给小伙伴们分享一个基于 SpringBoot Vue 实现的前后端分离后台管理系统项目; 简介 这个项目是基于xiliu-tenant脚手架项目搭建而成,原本是帮朋…...
HarmonyOS应用端云一体化开发主要流程
图示 主要步骤 序号 阶段 任务 说明 1 创建端云一体化开发工程 选择工程类型与云开发模板 确定工程类型:选择“Application”或“Atomic Service”页签,确定创建的是HarmonyOS应用工程还是原子化服务工程。选择云开发模板,包括通用云开…...
NoSQL之 Redis配置与优化
NoSQL之 Redis配置与优化 ---------------------- 关系数据库与非关系型数据库 ---------------------------------------- ●关系型数据库: 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一…...
Redis哨兵模式
1.哨兵模式是什么 解释一 哨兵巡查监控 master主机是否故障,如果故障了,根据投票数自动将一个从库转换为新数据库,继续对外服务。 解释二 监控redis 的运行状态,包括master和slave当master宕机后,能自动将slave切换…...
数据库管理-第七十六期 如何升级19c RAC(20230516)
数据库管理 2023-05-16 第七十六期 如何升级19c RAC1 回头处理2 升级AHF3 升级GI及DB3.1 拷贝所需文件3.2 升级OPatch3.3 升级GI与DB3.4 应用SQL变更 4 升级OJVM4.1 解压补丁4.2执行补丁冲突检查:4.3 升级OJVM4.4 应用SQL变更 5 最终验证总结 第七十六期 如何升级19…...
组合预测模型 | ARIMA-CNN-LSTM时间序列预测(Python)
组合预测模型 | ARIMA-CNN-LSTM时间序列预测(Python) 目录 组合预测模型 | ARIMA-CNN-LSTM时间序列预测(Python)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 ARIMA-CNN-LSTM是一种结合了传统时间序列模型和深度学习模型的…...
实验四 面向对象分析与设计——UML类图与时序图
一、实验目的: 掌握面向对象分析中静态结构模型与动态行为模型的基本思想。学会识别系统中的类、类的属性和操作以及类之间的关系,掌握UML类图的绘制方法。了解时序图的作用和组成元素,掌握UML时序图的绘制方法。 二、实验仪器及实验环境&a…...
最短路径问题
如图,设定源点为D,终点为A,则D到A的最短路径是多少? 算法思路: 第一步,从源点D出发,此时能到达的选择是C和E,我们根据路径长度选择最少的作为下一个节点,于是选择C&…...
国内有哪些SAAS软件?SAAS软件有哪些优点?
国内有哪些SAAS软件?SAAS软件有哪些优点?不请自来答一下,通过SaaS软件与传统软件的对比来详细讲下SaaS软件有哪些优点? 配合以下内容食用更佳: 关于概念——深度详解什么是SaaS(软件即服务)关…...
分享两组不同的3D VR卡片
最近某音上出现了很多VR视频,转动手机可以看到手机界面未显示出来的场景。这种事情我觉得我们也可以做到。 所以两种不同的3D VR卡片来了: 第一种是横向或上下可以拖动极大的距离。卡片上的信息会随着拖动移动,但不会显示更多的信息&#x…...
外贸人如何精准开发客户?Facebook开发客户全攻略
现在做跨境的都了解的一个社媒平台就是Facebook了,因为很多人都会拿Facebook来开发客户,忙里偷闲,今天东哥就来聊聊用Facebook开发客户的一些心得。 用Facebook开发客户的心得 1、利用关键词搜索 使用行业相关的关键词、产品特定的关键词、相…...
一、Git安装(Git+TortoiseGit图形化)
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...
python基础语法Ⅰ
python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器,来进行一些算术…...
