web自动化测试框架落地实施全过程-测试环境搭建 (Selenium+Python)

news2024/9/20 20:33:07

一、什么是web自动化测试?

Web自动化测试是指使用自动化工具模拟用户在Web浏览器中执行的操作,通过编写脚本来自动化执行测试用例,以验证Web应用程序的功能、性能和兼容性等方面的质量。其主要目的是降低测试成本和时间,并提高测试效率和准确性。

Web自动化测试通常包括以下步骤:

  1. 确定测试目标:明确需要测试的Web应用程序的功能、性能、兼容性等方面的需求。

  2. 选择自动化测试工具:从众多可用的自动化测试工具中选择适合自己的工具,如Selenium、Appium、TestComplete等。

  3. 编写测试脚本:根据测试目标编写测试脚本,实现自动登录、点击按钮、输入数据、验证结果等操作。

  4. 执行测试脚本:运行测试脚本并生成测试报告,检查测试结果是否符合预期结果。

  5. 分析测试结果:对测试结果进行分析,确定哪些问题需要修复,哪些测试需要迭代。

Web自动化测试相比手动测试,可以节省测试人员大量的时间和精力,提高测试覆盖率和质量。但同时也需要注意一些限制和注意事项,如测试环境的搭建、测试脚本的维护和更新、测试用例的设计和管理等方面。如果想领取笔记,面试题,简历模板等测试相关的资料可以加wx:mashang-nn(备注CSDN555)

在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!_哔哩哔哩_bilibili在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!共计16条视频,包括:1. 【web自动化】主流Web自动化测试技术对比、2. 【web自动化】Selenium自动化测试环境一键搭建、3. 【web自动化】Selenium八大定位策略详解等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1sM4y1d7tq/?spm_id_from=333.337.search-card.all.click

二、web自动化测试流程实施过程:

Web自动化测试流程的实施过程一般包括以下步骤:

  1. 需求分析和测试计划制定:明确需要测试的Web应用程序的功能、性能、兼容性等方面的需求,并根据需求制定相应的测试计划。

  2. 环境搭建:搭建测试环境,包括安装浏览器驱动程序、自动化测试工具、测试框架以及所需的其他软件和硬件设备。

  3. 测试案例设计:根据测试计划,设计测试用例,编写测试脚本并进行测试数据准备。

  4. 测试执行:运行测试脚本,执行测试用例,并记录测试结果。

  5. 缺陷分析和报告:对测试结果进行分析和评估,对发现的问题进行缺陷报告,并与开发人员协商解决方案。

  6. 重新测试和确认:经过修复后的缺陷,进行重新测试和确认,验证问题是否已经得到解决。

  7. 性能测试和兼容性测试:针对Web应用程序的性能和兼容性进行测试。

  8. 测试总结和优化:根据测试结果进行总结和优化,不断改进测试流程和方法,提高测试效率和质量。

以上是Web自动化测试流程的基本实施过程,但具体实施步骤可能因应用程序的不同而有所区别。

三、Python+Selenium环境搭建

python+selenium自动化测试环境包括四个部分:python、selenium、chrome谷歌浏览器、chrome谷歌浏览器驱动。其中浏览器也可以是火狐,IE等。目前自动化的主流浏览器还是chrome谷歌浏览器

(1)python的安装

目前测试行业应用最广的编程语言当属Python为首。python现在主流是3.7的版本。安装很简单,在官网(官网地址:Welcome to Python.org)选择对应系统的版本直接下载,然后双击安装即可,安装路径可自定义,不是一定非要安装在C盘,但请尽可能避免中文路径。

python安装包后,需要配置环境变量,其实在3.7的安装过程中,第一个界面有一个“add python to path”的选项可以勾选(大概是这个名字)。勾选之后会自动将python添加到系统环境变量Path中。当然你也可以选择手动添加,添加方法如下:

我的电脑右键选择属性–>高级系统设置–>环境变量–>环境变量–>系统变量:找到path变量并修改,在Path路径的最前面加入:C:\Python37;C:\Python37\Scripts; (如果你的python安装在其他路径请做相应的改动,笔者这里是默认路径)

特别要注意:很多新手会把Path中原来的内容删除掉,笔者提醒一下这个绝对不能这样做,慎重!慎重!慎重!

安装之后,运行CMD窗口,输入python指令,用于校验python是否安装成功。如下图表示成功!

另附上python开发工具PyCharm的官方下载地址:Download PyCharm: Python IDE for Professional Developers by JetBrains

(2)selenium的安装

selenium可以通过pip命令进行安装,安装方法如下:

打开cmd窗口

输入:pip install selenium

等待cmd窗口提示successful,则selenium安装成功,如中途中断了继续输入pip install selenium重新安装,不影响!

(3)chrome浏览器

目前网上谷歌浏览器下载的坑太多了,很多网站做得跟官网太像了。一不小心就会入坑,这里笔者提供Chrome官网的下载地址:

Chrome官网:Google Chrome 网络浏览器

下载完成后双击会自动安装。等待安装完成即可。

(4)安装chrome浏览器驱动

当Selenium提出了WebDriver的概念之后,它提供了利用浏览器原生的接口,封装成一套更加面向对象的Selenium WebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件)。

由于使用的是浏览器原生的接口,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了Selenium WebDriver要分浏览器厂商不同,而提供不同的实现。例如Firefox就有专门的geckoDriver驱动,Chrome就有专门的Chrome驱动等。

这里特别要注意:

chrome浏览器驱动必须和安装的chrome浏览器版本对应。那么如何保证对应呢?

先检查chrome浏览器的版本:点击chrome浏览器右上角的三个点–>帮助–>关于Google Chrome,如下图所示:

 

2.chrome浏览器驱动下载地址:

Chromedriver驱动下载地址:CNPM Binaries Mirror

找到和上图chrome版本最接近的版本:上图为:78.0.3904.108,所以这里驱动选择:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

下载完成后:把chrome驱动包放入:C:\python37 目录下 (这个是必须的)

四、八大元素定位

Web自动化测试八大元素定位是指在Web页面中对需要进行操作的元素进行精确定位,以便实现自动化操作。这八大元素定位包括:

  1. 元素ID:每个HTML标签都可以设置id属性,使用该属性可方便地定位元素。

  2. 元素name:通过元素名称定位元素,一般用于表单元素。

  3. 元素class name:使用CSS样式类名称定位元素。

  4. 元素tag name:通过标签名称定位元素,适用于找到多个相同的元素。

  5. 链接文本:通过链接文本定位链接元素。

  6. CSS选择器:通过CSS样式规则定位元素。

  7. XPath:使用XPath语法定位元素。

  8. DOM结构:使用元素的DOM层次结构定位元素。

以上八种方式可以组合使用,以获得更精确的元素定位。定位元素的准确性和稳定性对于Web自动化测试的成功非常重要,因此需要根据具体需求选择最佳定位方式。

五、项目实战

unittest管理测试用例的规则:

1.必须继承:unittest.TestCase

2.导包:import unittest

3.写一个以test_开头的测试用例。

为啥有没有main都没关系,都可以执行。原因是:unittest有两种运行方式,并且默认的还

是第一种运行方式: (巨坑)

1.命令行的运行方式(默认)

python -m unittest 模块名.py

python -m unittest 模块名.类名.方法名

2.main主函数运行方式(非默认)

main方式。

frameset(框架集,直接忽略)

frame(框架)/iframe(子框架)

导包的快捷键:Alt+Enter

定位一组元素:

windows自带的弹窗:

alert 只有一个确定按钮

confirm 有一个确定和一个取消按钮

prompt 除了确定和取消按钮外还有一个输入框。

都是:driver.switch_to.alert

六、设计模式

在Web自动化测试中,封装是一种非常重要的设计模式。通过封装,我们可以将操作页面元素的方法进行统一管理,减少代码冗余,提高可维护性和可读性。

具体来说,Web自动化测试中可以采用如下几种封装方式:

  1. 页面对象模型(Page Object Model):将每个页面封装成一个对象,对象中包含页面中所有需要操作的元素和操作方法。这种方式可以将测试脚本与页面的实现细节分离开来,提高了测试代码的可读性和可维护性。

  2. 模块化设计:将项目中的功能模块进行分解,每个模块都有独立的测试用例和测试脚本。这种方式可以减少代码耦合度、提高测试效率和可扩展性。

  3. 数据驱动设计:将测试数据和测试脚本进行分离,并将测试数据放在外部文件或数据库中。这种方式可以提高测试数据的复用性、减少测试脚本的冗余代码。

  4. 关键字驱动设计:将测试步骤封装成关键字,以关键字为单位编写测试脚本。这种方式可以提高测试脚本的可读性和可维护性。

以上几种封装方式都可以提高Web自动化测试的效率和可靠性,同时也可以减少测试代码的冗余和维护成本。具体采用哪种方式,需要根据项目需求、团队规模和技术水平来选择。

七、引入Pytest(解耦合)

默认的测试用例的运行规则:

1.测试模块必须以test_开头或者_test结尾。

2.测试类必须以Test

pip install pytest
pip install allure-pytest

3.测试用例必须以test_开头

pytest的运行的方式有三种

1.命令行

2.main方法

3.通过pytest.ini文件来运行。

pip install pytest
pip install allure-pytest

随意的切换。unitest/pytest都必须要灵活的掌握

pip install pytest
pip install allure-pytest

并且灵活的应用。

八、pytest结合allure-pytest插件生成漂亮的测试报告

pytest是一个非常流行的Python测试框架,可以方便地编写和运行各种类型的自动化测试。而allure-pytest插件则是为pytest提供测试报告生成功能的插件,可以生成漂亮、可视化的测试报告,帮助我们更好地了解测试结果。

下面是使用pytest和allure-pytest插件生成测试报告的步骤:

1、安装pytest和allure-pytest插件

pip install pytest
pip install allure-pytest

2、编写测试用例 编写pytest测试用例文件,并使用pytest标准的断言函数进行断言。

3、运行测试 在终端中进入测试脚本所在目录,执行以下命令:

pytest --alluredir ./result

这个命令会在当前目录下创建一个名为result的文件夹,并把测试结果保存到该文件夹中。

4、生成测试报告 在终端中输入以下命令:

allure generate ./result -o ./report --clean

这个命令会根据result文件夹中的测试结果生成一个名为report的文件夹,其中包含了测试报告的所有文件。

5、查看测试报告 在浏览器中打开report文件夹中的index.html文件,即可查看生成的测试报告。

通过以上步骤,我们就可以使用pytest和allure-pytest插件生成漂亮的测试报告了。同时,allure-pytest还提供了丰富的功能,如历史结果展示、图表分析等,可以帮助我们更好地了解自动化测试执行情况。

九、实现企业级的能够落地实施的web自动化框架以及实现报告的定制

报告的定制:logo的定制,模块的定制,用例的定制,严重程度,错误截图,用例描述, 参数化。日志监控。

编程语言:python,java

设计模块:PO,关键字驱动

用例管理:精通unitetst,pytest

数据驱动:ddt,pytest.mark。parametrize

二次封装:excel,yaml,ini,数据库封装

日志监控:logging

异常处理:try/except

jenkins:持续集成和无人值守

分布式运行:Grid

前端:html和js

十、Pytest的数据驱动@pytest.mark.parametrize()+Excel实现数据 驱动

方法详情:

@pytest.mark.parametrize(args_name,args_value)

args_name:参数名

args_value:参数值(list列表,tuple元祖,字典列表,字典元祖)

举例:

@pytest.mark.parametrize("caseinto",["百里","依然","星瑶"])
def test_01(self,caseinto):
print(caseinto)

举例:

@pytest.mark.parametrize("name,age",[["百里","12"],["依然","14"]])
def test_01(self,name,age):
print(name,age)

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

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

相关文章

LDAP未授权漏洞验证

因为工作需要,这里验证了下LDAP未授权。 以下是收集到的资料,最后是具体使用!!!!! 更新 2)连接ad域有两个地址: ldap://http://XXXXX.com:389 和 ldap://http://XXXXX.…

算法的时间复杂度和空间复杂度(2)

计算斐波那契递归Fib的时间复杂度&#xff1f; long long Fib(size_t N) { if(N < 3) return 1; return Fib(N-1) Fib(N-2); } 因为递归先递推后回归&#xff0c;看起来规律像等比数列&#xff0c;也可以用错位相减法&#xff0c;因为斐波那契数列到第二项就不会再计算了&a…

传输层重点协议之【UDP协议】

1. UDP协议端格式 2. UDP的特点 2.1 无连接 知道对端的IP和端口号就直接传输&#xff0c;不需要建立连接 2.2 不可靠 没有任何的安全机制&#xff0c;发送端发送数据报后&#xff0c;如果因为网络故障数据报无法发送对方&#xff0c;UDP协议层也不会给应用层返回任何错误信…

第六章 Linux实际操作——实用指令

第六章 Linux实际操作——实用指令 6.1 指定运行级别6.2 找回root密码6.3 帮助指令6.3.1 man获得帮助信息6.3.2 help指令6.3.3 搜索引擎帮助更直接 6.4 文件目录类6.4.1 pwd指令6.4.2 ls指令6.4.3 cd指令6.4.4 mkdir 指令6.4.5rmdir指令删除空目录6.4.6 touch 指令6.4.7 cp 指令…

火山引擎边缘云,助力业务敏捷创新

[中国&#xff0c;上海&#xff0c;4 月 18 日]2023 春季火山引擎 FORCE 原动力大会正式举办。大会主论坛&#xff0c;火山引擎总裁谭待围绕云上增长三要素发表了重要演讲。在敏捷迭代专题中&#xff0c;谭待分享了火山引擎边缘云连接与计算无处不在的理念&#xff0c;并于现场…

【fluent udf】定义源项宏时,在迭代计算过程中UDM变量变inf、NAN、发散时如何解决?

一、问题背景 最近做的一个fluent仿真算例里用到源项宏&#xff0c;源项宏里用UDM定义了树脂固化度场。 在迭代计算的过程中&#xff0c;UDM的取值发散成了无穷大inf&#xff08;第一次计算取值是NAN&#xff09;&#xff0c;如下图所示。 由于每一次迭代计算过程中&#xf…

【嵌入式系统与入门】Day01 Arduino开发板

文章目录 1. Arduino概述1.1 是什么&#xff1f;1.2 分类1.3 组成1.4 电源 2. Arduino软件开发流程2.1 明确接口函数2.2 连接板子2.3 打开项目【或者自己编程序】2.4 选择板子类型2.5 选择通讯端口2.6 下载程序2.7. 编写程序代码——程序架构 3. 较常用的封装函数3.1 pinMode(p…

技术报告:Efficient and Effective Text Encoding for Chinese LLaMA AND Alpaca

技术报告&#xff1a;Efficient and Effective Text Encoding for Chinese LLaMA AND Alpaca IntroductionChinese LLaMAChinese AlpacaLora-Fine-tuning实验7Bpre- trainingInstruction-Tuning 13BPre-TrainingInstruct-Tuning Introduction 首先作者说了最近ChatGPT等模型在…

【SpringCloud】2、使用Nacos作为服务注册中心

1、项目搭建 首先&#xff0c;我们需要搭建一个 SpringCloud 微服务项目&#xff0c;后续的文章将基于此项目作为学习演示使用 1、创建 cloud-learn 目录&#xff0c;pom.xml 文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> &…

【数据统计】— 峰度、偏度、点估计、区间估计、矩估计、最小二乘估计

【数据统计】— 峰度、偏度、点估计、区间估计、矩估计、最小二乘估计 四分位差异众比率变异系数利用数据指标指导建模思路 形状变化数据分布形态峰度: 度量数据在中心聚集程度偏度 利用数据指标指导建模思路 参数估计点估计区间估计矩估计举例&#xff1a;黑白球&#xff08;矩…

修改键盘映射(注册表)Scancode Map

1.win R 打开 cmd命令框&#xff0c;输入regedit 2.赋值这个地址到蓝色框里&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout 3.右键 ->新建->二进制值&#xff0c;命名为 Scancode Map 4.现在来讲解怎么使用这个二进制表修…

LC串联谐振回路

理想LC串联谐振回路 下图是理想的LC串联谐振回路&#xff0c;不考虑L C的等效电阻。理想的LC回路没有任何损耗。 理想LC串联谐振的回路阻抗为&#xff1a; 令虚部为0&#xff0c;就可求出谐振角频率W0 可得谐振角频率&#xff1a; 可得谐振频率&#xff1a; 因为 所以电…

计算机网络之运输层

协议 协议就是计算机与计算机之间通信的“约定”&#xff0c;既为规则&#xff0c;只有遵循这个约定&#xff0c;双方就可以进行通信。 进程之间的通信 从通信和信息处理的角度来看&#xff0c;运输层向上面的应用层提供通信的服务&#xff0c;属于面向通信的最高层&#xf…

Redis哨兵(非集群 Rrdis 的高可用性 )

Redis哨兵(非集群 Rrdis 的高可用性 ) 1. 什么是哨兵 吹哨人巡查监控后台 master 主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,继续对外服务 Redis哨兵在不使用Redis集群时为Redis提供高可用性 2. 作用 无人值守运维 3. 哨兵作为分布式系统 Redis S…

console.log(obj)不一定能的到obj当前的值

1.Log (anObject)的输出具有误导性; 只有在控制台中展开 > 时才能解析显示的对象的状态。它不是您在 console.log 对象时对象的状态。 相反&#xff0c;尝试 console.log (Object.keys ()) &#xff0c;或者甚至console.log(JSON.parse(JSON.stringify(obj))) &#xff0c;…

黑盒(功能)测试基本方法

1、黑盒测试的概念 1、什么是黑盒测试 &#xff08;1&#xff09;黑盒测试又称功能测试、数据驱动测试或基于规格说明书的测试&#xff0c;是一种从用户观点出发的测试。 &#xff08;2&#xff09;测试人员把被测程序当作一个黑盒子。 2、黑盒测试主要测试的错误类型有 &…

JVisualVM、Visual GC

JVisualVM JVisualVM Java VisualVM 是一款 JDK 自带免费的性能分析工具 public class JVisualVM {public static void main(String[] args) {Thread t1 new Thread(() -> {while (!Thread.currentThread().isInterrupted()) {}}, "JVisualVM测试子线程");t1.…

flinkcdc 动态的增加新的同步表到同一个作业中

背景 flinkcdc 2.0版本上线了一个新功能–支持动态加表这个是很有用的feature&#xff0c;本文介绍在开发中如何使用。 设想下假如你一个 CDC pipeline 监控了 4 张表&#xff0c;突然有天业务需求需要再加几张表&#xff0c;你肯定不想另起作业 (浪费资源)&#xff0c;那么这…

大数据——HDFS(分布式文件系统)

一&#xff0c;分布式系统概述 Hadoop的两大核心组件 HDFS&#xff08;Hadoop Distributed Filesystem&#xff09;&#xff1a;是一个易于扩展的分布式文件系统&#xff0c;运行在成百上千台低成本的机器上。HDFS具有高度容错能力&#xff0c;旨在部署在低成本机器上。HDFS主…

日撸 Java 三百行day34

文章目录 说明Day34 图的深度优先遍历1.思路2.代码3.总结1.在广度遍历中借助了队列2.在深度优先遍历借助了栈。 说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff1a…