美团前高级测试工程师教你如何使用web自动化测试

news2024/11/26 5:20:44

一、自动化测试基本介绍
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:判断是否不相等
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python随机生成数据并用双y轴绘制两条带误差棒的折线图

python绘图系列文章目录 往期python绘图合集: python绘制简单的折线图 python读取excel中数据并绘制多子图多组图在一张画布上 python绘制带误差棒的柱状图 python绘制多子图并单独显示 python读取excel数据并绘制多y轴图像 python绘制柱状图并美化|不同颜色填充柱子 Python绘制…

IC验证学习笔记(AHB-RAM)08addr、bsize都随机,主要做地址偏移操作

rkv_ahbram_haddr_word_unaligned_virt_seq: 对addr和bsize都随机化操作 ifndef RKV_AHBRAM_HADDR_WORD_UNALIGNED_VIRT_SEQ_SV define RKV_AHBRAM_HADDR_WORD_UNALIGNED_VIRT_SEQ_SVclass rkv_ahbram_haddr_word_unaligned_virt_seq extends rkv_ahbram_base_virtual_sequenc…

深入探讨桥梁建筑中地质工程与仪器仪表应用

近期,随着桥梁建筑行业的不断发展,地质工程与仪器仪表应用成为了热议的话题。在桥梁、建筑、水利工程等领域,渗压计、MCU自动化测量单元、应变计、测缝计、固定测斜仪等各种先进的仪器仪表技术正在广泛应用,为工程施工和监测提供了…

什么是pytest自动化测试框架?如何安装和使用呢?赶快收藏起来

一、pytest是什么? pytest是一款强大的Python测试工具,可以胜任各种类型或级别的软件测试工作。实际上,越来越多的项目在使用pytest。因为pytest会提供更丰富的功能,包括assert重写、第三方插件,以及其他测试工具无法比…

116.【SpringBoot和Vue结合-图书馆管理系统】

前后端分离 (一)、SpringBootVue概述1.基本概述2.实现技术 (二)、Vue3.x搭建 (SpringBootVue)1.搭建Vue基本环境(1).搭建Vue项目框架(2).介绍Vue项目内容 2.搭建SpringBoot基本环境(1).创建SpringBootTest项目(2).初始化项目(3).测试SpringBoot的控制层 3.通过路由跳转访问组件…

Python+selenium自动化元素定位防踩坑

在自动化UI测试过程中常常会在元素定位阶段就踩坑,碰到困扰已久的问题。 以下是个人整理元素定位报错原因和解决方法。 踩坑一:StaleElementReferenceException selenium.common.exceptions.StaleElementReferenceException: Message: stale element re…

JavaScrip 中的 this, bind, call apply 简述

JavaScrip 中的 this, bind, call & apply 简述 this 是一个比较特殊的东西,基本上可以理解成 this 的指向是就近调用的指向,因此 this 在 JS 中也是一个比较令人困惑的知识点。 之前绕过 this 的方法基本上采用 arrow function,因为 a…

35、Adaptive Forms(3)Data Model

文章目录 35、Adaptive Forms(3)Data Model配置JDBC安装mysql-connector-j.jar在数据库中创建数据创建Data Model 35、Adaptive Forms(3)Data Model 在使用Mysql数据之前还需要在AEM中创建DataModel映射数据库的数据结构。也需要…

07-架构2023版-centos+docker部署nacos

1、创建nacos的数据库配置 1.1、创建数据库 1.2、创建用户nacos并授权数据库 参考 06 mysql 创建账户部分内容 1.3、执行数据库脚本 导入官方nacos sql语句。如果是历史有历史数据, 从历史数据sql导入 2、创建 bridge 网络并指定 IP 区间 2.1、创建自定义网络…

选择排序:20年前在谭浩强《c语言程序设计上》学习过(43)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 和猫妹学Python,一起趣味学编程。 今日主题 什么是选择排序? 用Python写段代码,实现插入排序。 选择排序 选择排序是一种简单的排序算…

Contrastive Learning

https://towardsdatascience.com/understanding-contrastive-learning-d5b19fd96607 The Beginner’s Guide to Contrastive Learning Contrastive Representation Learning | LilLog

Visual Studio 怎样设置断点并调试

1-普通断点 设置普通断点的方法很简单,就是在代码行的左边栏灰色区域点击或者把光标放在某代码行,按下 F9。 2-调试 按F5开始调试,按F11是逐行调试,F10是逐过程调试,shiftF5是停止调试。 3-高级调试 见链接&#x…

学系统集成项目管理工程师(中项)系列22b_信息化知识(中)

1. 信息化 1.1. 产品信息化 1.1.1. 信息化的基础 1.2. 企业信息化 1.2.1. 国民经济信息化的基础 1.3. 产业信息化 1.3.1. 【21下选08】 1.4. 国民经济信息化 1.5. 社会生活信息化 1.6. 【22上选08】 1.7. 基本内涵 1.7.1. 信息化的主体是全体社会成员,包…

日语文法PPT截图16-30

16句子的构成 单句 谓语只出现了一次 重句 两个谓语 并且两个谓语是对应的关系 由多个在意义上有差距的小句共同构成的句子 叫复文 用一个句子去修饰一个名词 也是个很典型的复文 被名词化了的句子充当小句,这也是复文的一种情况 引用形式的复文 对于这种复文的…

Java-API简读_java.util.RandomAccess接口(基于JDK1.8)(不涉及源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/130727525 出自【进步*于辰的博客】 其实我的【Java-API】专栏内的博文对大家来说意义是不大的。…

史上最详细的SQL盲注入门教程

测试同学在做安全测试时,相信多少都会遇到SQL注入与盲注的漏洞,那么今天我们就来分享下SQL注入与盲注的相关知识,希望对大家有所启发。 一、SQL盲注的定义 SQL注入,简单理解,也就是将用户输的的内容当代码执行了&…

Docker的使用 (1.安装docker)

安装docker前非常重要的准备工作 请保证你的centos 操作系统为至少为7版本请关闭linux的防火墙虚拟机联网,安装好yum工具 安装docker # 设置docker镜像源 yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed…

Aqua 启动管道完整性扫描以检测恶意软件

云原生安全提供商 Aqua Security 已宣布添加管道完整性扫描,以防止软件供应链攻击并确保 CI/CD 管道完整性。 在 eBPF 技术的支持下,Aqua 的管道完整性扫描器实时检测并阻止可疑行为和恶意软件,防止代码篡改并应对软件构建过程中的威胁。 该…

Spring Boot异常处理

目录 Spring Boot异常处理 介绍 拦截器VS 过滤器 自定义异常页面 自定义异常页面 代码实战 需求 代码实现 创建MyErrorController类来模拟异常错误 完成测试 全局异常 说明 全局异常-应用实例 创建GlobalExceptionHandler.java 创建对应的视图地址global.html 完成…

Docker的使用 (1.什么是docker)

前言 这个系列是我自己学习使用docker的记录和分享,作为一名开发人员,你需要了解这个东西并且学会它的简单使用,但是作为一名开发而不是运维,不要花过多的时间去深究它的原理,而是把它当作一个工具即可 docker Docke…