Web自动化测试(超详细的)

一、什么是web自动化测试

自动化(Automation)是指机器设备、系统或过程(生产、管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测、信息处理、分析判断、操纵控制,实现预期的目标的过程。

这是教科书里面的自动化的定义,回归到自动化测试其实自动化测试就是什么呢?

指的是测试的过程在没有人或者较少的人为的干预的情况下进行的测试,再简单点说就是用程序或者脚本来测试程序,那么在web自动化测试中主要用来把测试人员从繁琐的内容中解放出来,主要做一些比如需要多次输入,多次运行的,比如我们用边界值,等价类设计的很多测试数据需要执行,比如业务流程需要执行很多遍的时候我们就可以使用web自动化测试。

二、web自动化测试的工具

现在主流的web测试工具我们常用的就是selenium的那一套工具包括:

浏览器一般选择chrome
浏览器对应的driver(chromedriver)
Python
Selenium库

三、web自动化测试的环境安装

浏览器安装 下载浏览器下一步按照就好了
chromedriver 下载 可以到 npmmirror.com/
注:100的大版本对的上就Ok了

四、web自动化测试的方法

Web自动化测试一般使用设计测试用例的方法跟功能测试相同,使用等价类划分,边界值,因果图,场景法等等就好了。

Web自动化测试实施的使用我们一般会采用po模式设计

PO是page object的简称,核心思想是通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化, 只需要调整页面元素封装的代码,提高测试用例的可维护性、可读性。

PO模式可以把一个页面分为三层,对象库层、操作层、业务层。

对象库层:封装定位元素的方法。

操作层:封装对元素的操作。

业务层:将一个或多个操作组合起来完成一个业务功能。

比如登录:需要输入帐号、密码、点 击登录三个操作。

测试脚本只需要调用业务层代码就可以完成

当出现页面需要的时候只需要测试代码可以完全不用修改只需要修改操作层就好了

五、web自动化测试的流程实施

web自动化测试流程和功能测试基本一致:

下面我们已登录需求为例

(1)需求分析

这里我们以手机登录为例

(2)设计测试用例与测试数据

自动化测试测试用例不用像手工测试设计的那么详细

【下方为测试数据】

  1. [

  2. {

  3. "username": "21888888888",

  4. "pwd": "123456",

  5. "code": "8888",

  6. "ast_msg": "账号格式不匹配",

  7. "desc": "用户名错误"

  8. },

  9. {

  10. "username": "12888888888",

  11. "pwd": "123456",

  12. "code": "8888",

  13. "ast_msg": "账号格式不匹配",

  14. "desc": "用户名错误"

  15. },

  16. {

  17. "username": "1088888888",

  18. "pwd": "123456",

  19. "code": "8888",

  20. "ast_msg": "账号格式不匹配",

  21. "desc": "用户名错误"

  22. },

  23. {

  24. "username": "138888888889",

  25. "pwd": "123456",

  26. "code": "8888",

  27. "ast_msg": "账号格式不匹配",

  28. "desc": "用户名错误"

  29. },

  30. {

  31. "username": "32888888888",

  32. "pwd": "123456",

  33. "code": "8888",

  34. "ast_msg": "账号格式不匹配",

  35. "desc": "用户名错误"

  36. },

  37. {

  38. "username": " ",

  39. "pwd": "123456",

  40. "code": "8888",

  41. "ast_msg": "用户名不能为空",

  42. "desc": "用户名错误"

  43. }

  44. ]

AI写代码python运行

(3)搭建web自动化测试环境

在上面环境安装那里已经搭建了

(4)设计web自动化测试框架

一般测试po模式的内容包括

(5)编写代码

在po文件夹中创建page_login

  1. from selenium.webdriver.common.by import By

  2. from utils import UtilsDriver

  3. from base.page_base import BasePage

  4. # 界面对象层

  5. class PageLogin(BasePage):

  6. # 账号元素

  7. def find_username(self):

  8. return self.driver.find_element_by_id("username")

  9. # return self.driver.find_element(*self.username)

  10. # return self.get_element(self.username)

  11. # 密码元素

  12. def find_pwd(self):

  13. return self.driver.find_element(By.ID,"password")

  14. # 验证码元素

  15. def find_vcode(self):

  16. return self.driver.find_element_by_id("verify_code")

  17. # 按钮开始登录元素

  18. def find_login_btn(self):

  19. # return self.driver.find_element_by_name("sbtbutton")

  20. return self.driver.find_element(By.NAME,"sbtbutton")

  21. # 操作层

  22. class HandleLogin(object):

  23. def __init__(self):

  24. self.page_login=PageLogin()

  25. def input_username(self,username):

  26. self.page_login.find_username().send_keys(username)

  27. def input_pwd(self,pwd):

  28. self.page_login.find_pwd().send_keys(pwd)

  29. def input_vcode(self,code):

  30. self.page_login.find_vcode().send_keys(code)

  31. def click_login_btn(self):

  32. self.page_login.find_login_btn().click()

  33. # 业务层

  34. # 输入用户名密码验证码 点击登录

  35. class LoginProxy(object):

  36. def __init__(self):

  37. self.handle_login = HandleLogin()

  38. def login(self,username,pwd,code):

  39. self.handle_login.input_username(username)

  40. self.handle_login.input_pwd(pwd)

  41. self.handle_login.input_vcode(code)

  42. self.handle_login.click_login_btn()

脚本执行代码 创建test_login

  1. # from selenium import webdriver

  2. from po.page_home import HomeProxy

  3. from po.page_login import LoginProxy

  4. from utils import UtilsDriver,get_data

  5. import time

  6. import pytest

  7. import allure

  8. @allure.feature("登录功能")

  9. class Test_login:

  10. def setup_class(self):

  11. self.login_p=LoginProxy()

  12. self.home_p=HomeProxy()

  13. def setup(self):

  14. # 进入首页

  15. UtilsDriver.get_driver().get("http://127.0.0.1/")

  16. # 进入到login界面

  17. self.home_p.go_login_page()

  18. def teardown_class(self):

  19. time.sleep(2)

  20. UtilsDriver.quit_driver()

  21. @pytest.mark.parametrize(["username","pwd","code","asrt_msg"],get_data())

  22. @allure.story("登录用户名错误")

  23. def test_login_username_error(self,username,pwd,code,asrt_msg):

  24. self.login_p.login(username,pwd,code)

  25. time.sleep(1)

  26. # 登录是否成功的预期结果

  27. res = UtilsDriver.get_msg()

  28. assert asrt_msg in res

(6)执行测试用例

可以使用pytest控制测试用例的执行

@pytest.mark.parametrize([“username”,“pwd”,“code”,“asrt_msg”],get_data())

  1. [pytest]

  2. addopts = -s --alluredir report

  3. testpaths = ./script

  4. python_files = test_*.py *test.py

  5. python_classes = Test_*

  6. python_functions = test_*

AI写代码python运行

运行本项目

(7)生成测试报告

可以使用allure生成测试报告

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

某模板网VIP资源三套展示模板,网站模板商城资源pbootcms模板

源码介绍:友好的seo,所有页面均都能完全自定义标题/关键词/描述,PHP程序(php≥7.0,<8.0), 安全、稳定、快速;用低成本获取源源不断订单!这套是带展示数据的下…

碰一碰发视频系统源码搭建部署技术分享

碰一碰发视频系统概述 碰一碰发视频系统通常指通过NFC(近场通信)或蓝牙等短距离通信技术触发视频传输的功能。系统需包含前端交互、通信协议、后端存储及视频分发模块。以下是关键技术与部署步骤。 技术栈选择 前端技术:Android/iOS原生开发…

延吉口碑好的烤肉哪家好吃

延吉口碑好的烤肉——延炭乳酸菌烤肉在延吉,烤肉是当地美食文化中不可或缺的一部分,众多烤肉店各有特色,而延炭乳酸菌烤肉凭借其独特的魅力脱颖而出,成为众多食客心中的优质之选。主打健康理念延炭乳酸菌烤肉主打健康概念&#xf…

报表工具选型深度解析系列之一:润乾报表

在众多报表工具中,首选润乾报表作为系列开篇,原因在于其独特的行业地位——当年凭借“非线性报表模型” 率先攻克中国式复杂报表难题的老牌本土工具。对于许多在早期信息化建设中深受复杂表样折磨的开发团队而言,润乾报表的出现具有里程碑意义…

延吉口碑好的烤肉

延吉口碑好的烤肉——延炭乳酸菌烤肉在延吉,烤肉是当地美食文化的重要组成部分,而延炭乳酸菌烤肉则是其中口碑极佳的一家店。它以独特的健康理念和美味菜品,吸引了众多食客。主打健康理念延炭乳酸菌烤肉主打健康概念,采用乳酸菌腌…

全网最全自考必备AI论文网站TOP10:深度测评与推荐

全网最全自考必备AI论文网站TOP10:深度测评与推荐 2026年自考AI论文网站测评:精准筛选,助力高效写作 随着人工智能技术的快速发展,越来越多的自考学生开始借助AI工具提升论文写作效率。然而,面对市场上五花八门的AI论文…

基于java的畅销图书推荐系统

3 系统分析 3.1可行性分析 在开发一个新的软件之前,必须要进行一个系统的可行性研究,以最大限度地利用这个问题。以下我们将从系统,技术,操作、运营、法律等方面来决定该体系的发展[4]。 3.1.1系统可行性分析 利用计算机支持高效率…

Python 3.13 预览版尝鲜:NoGIL (自由线程) 真的来了!多核 CPU 终于不再围观

标签: #Python3.13 #NoGIL #多线程 #性能优化 #并发编程🛑 前言:GIL 到底锁住了什么? 在 Python 3.13 之前,当你启动 4 个线程去跑计算任务时,操作系统确实看到了 4 个线程,但在 Python 虚拟机内…

救命神器2026 MBA必备!10个AI论文平台深度测评与推荐

救命神器2026 MBA必备!10个AI论文平台深度测评与推荐 2026年MBA学术写作工具测评:为何需要一份权威榜单? 随着人工智能技术的不断进步,AI论文平台在学术研究中的作用日益凸显。对于MBA学生而言,撰写高质量的论文不仅是…

从你提供的内容来看,这个问题似乎是 Git 仓库配置问题。让我分析可能的原因:## 主要问题表现:1. **明显的错误消息**:`Unable to correct to a reposito

从你提供的内容来看,这个问题似乎是 Git 仓库配置问题。让我分析可能的原因:## 主要问题表现:1. **明显的错误消息**:Unable to correct to a repository at URL 2. **大量的重复字符串**:KEYNAMEINKEYNAMEINKEYNAMEIN…

springboot基于java的地方特色美食分享管理系统

2系统需求分析 需求分析的首要是要分析用户的需求,知道用户存在的一些情况,并且要明确用户的使用状况,然后设计规划解决的问题。其中在使用定性的分析以及定量的分析,从这两个方面获取用户的需求。一方面定性的分析获得的应该是用…

【课程5.2】功能设计:城管全域数据地图(坐标匹配、设施标注逻辑)

严格基于指定文件(《01智慧城市一网统管平台-系统总体架构及其功能要点》《03智慧城市一网统管平台-系统数据库表》《05智慧城市一网统管平台 数据中枢系统功能设计》《06行业应用系统功能设计-01城管住建.docx》《02数据库表设计命名规范及英文简称对照表》&#x…

AI智慧司牧服务系统:打造草原上的“千里眼”与“数字牧羊人”

养牛羊靠啥?以前是“看天吃饭凭老经验”——半夜冒雨巡查、靠眼睛辨疾病、饲喂全凭感觉,辛苦不说还容易出错。而AI智慧司牧服务系统,就像给牧场配了个“全天候AI管家”,用实实在在的技术解决养殖痛点,让养殖从“经验驱…

springboot基于java的隔离人员的管理系统设计与实现

3系统分析 3.1 系统需求分析 在当下社会的生活中,互联网已经非常普遍和十分重要。利用好互联网大数据等技术,可以帮助解决很多问题。当下隔离人员的管理方面都面临各自的问题。根据这一常见现象,本隔离人员的管理系统的出现就有很大的需求。该…

做OEM代工找不到靠谱工厂?这款工具帮你一键筛选源头工厂

在品牌创业、跨境电商或新品开发过程中,OEM(贴牌代工)模式已成为主流策略,这让企业得以专注于设计与营销,将生产环节交给专业工厂负责,其实事实上,理想固然美好,但现实却常常让人感到…

LlamaIndex 高级 RAG:实现“递归检索”与“文档层级索引”,解决长文档问答的精度丢失问题

标签: #LlamaIndex #RAG #NLP #向量数据库 #递归检索 #架构设计 📉 前言:Naive RAG 的“断章取义”之痛 基础 RAG(Naive RAG)最大的问题在于 “检索单元 = 生成单元”。 你为了检索精准,把 Chunk 切得很小(比如 256 tokens)。但当这些碎片喂给 LLM 时,它们就像拼图的…

最新实测9款AI论文生成器!查重率从82%骤降至5%,限时公开!

最后72小时窗口期! 当你的同学还在为查重率82%而彻夜难眠时,第一批行动派已经用这个方法,在30分钟内拿到了5万字、查重率仅5%的优质初稿。毕业、投稿的生死线就在眼前,你还在犹豫什么? 深夜的图书馆,屏幕上…

三菱Q系列PLC之QD77MS16总线控制伺服项目实战分享

三菱Q系列PLC ,QD77MS16走总线控制伺服项目,实际应用的, 程序结构清晰明了,通俗易懂,8个伺服,PLC程序有完整的注释,有伺服设定参数,三菱触摸屏程序,电气BOM ,电气I/O表&a…

layui提交

<input type"button" id"btnSave" value"确认保存" lay-submit class"layui-btn layui-btn-normal" lay-filter"Save" /><script type"text/javascript"> layui.use([index, set], function () {var …

基于spark的西南天气数据的分析与应用

收藏关注不迷路&#xff01;&#xff01; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff08;免费咨询指导选题&#xff09;&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;希望帮助更多…