软件测试之Web自动化测试,Web自动化测试的详细流程和步骤

news2024/12/24 10:20:43

一、什么是web自动化测试

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

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

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

二、web自动化测试的工具

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

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

同时,我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,免费领取

软件测试视频教程观看处:

2023完整版阿里大牛7天软件测试零基础速成内部教程,从基础到项目实战学完即入职。

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

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

四、web自动化测试的方法

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

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

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

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

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

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

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

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

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

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

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

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

下面我们已登录需求为例

(1)需求分析

这里我们以手机登录为例

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

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

【下方为测试数据】

[
 {
    "username": "21888888888",
    "pwd": "123456",
    "code": "8888",
    "ast_msg": "账号格式不匹配",
    "desc": "用户名错误"
 },
  {
    "username": "12888888888",
    "pwd": "123456",
    "code": "8888",
    "ast_msg": "账号格式不匹配",
    "desc": "用户名错误"
  },
  {
    "username": "1088888888",
    "pwd": "123456",
    "code": "8888",
    "ast_msg": "账号格式不匹配",
    "desc": "用户名错误"
  },
  {
    "username": "138888888889",
    "pwd": "123456",
    "code": "8888",
    "ast_msg": "账号格式不匹配",
    "desc": "用户名错误"
  },
  {
    "username": "32888888888",
    "pwd": "123456",
    "code": "8888",
    "ast_msg": "账号格式不匹配",
    "desc": "用户名错误"
  },
  {
    "username": " ",
    "pwd": "123456",
    "code": "8888",
    "ast_msg": "用户名不能为空",
    "desc": "用户名错误"
  }
]

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

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

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

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

(5)编写代码

在po文件夹中创建page_login

	from selenium.webdriver.common.by import By

	from utils import UtilsDriver
	from base.page_base import BasePage

	# 界面对象层

  	class PageLogin(BasePage):

  	# 账号元素
  	def find_username(self):
     	return self.driver.find_element_by_id("username")
       	# return self.driver.find_element(*self.username)
      	# return self.get_element(self.username)

   	# 密码元素
   	def find_pwd(self):
      return self.driver.find_element(By.ID,"password")

  	# 验证码元素
    def find_vcode(self):
      return self.driver.find_element_by_id("verify_code")

    # 按钮开始登录元素
    def find_login_btn(self):
	   # return self.driver.find_element_by_name("sbtbutton")
       return self.driver.find_element(By.NAME,"sbtbutton")

	# 操作层
class HandleLogin(object):
    def __init__(self):
       self.page_login=PageLogin()

    def input_username(self,username):
        self.page_login.find_username().send_keys(username)

    def input_pwd(self,pwd):
      self.page_login.find_pwd().send_keys(pwd)

    def input_vcode(self,code):
       self.page_login.find_vcode().send_keys(code)
	
    def click_login_btn(self):
        self.page_login.find_login_btn().click()

	# 业务层
	# 输入用户名密码验证码 点击登录
class LoginProxy(object):
   def __init__(self):
     self.handle_login = HandleLogin()

  def login(self,username,pwd,code):
    self.handle_login.input_username(username)
    self.handle_login.input_pwd(pwd)
    self.handle_login.input_vcode(code)
    self.handle_login.click_login_btn()

脚本执行代码 创建test_login

# from selenium import webdriver
	from po.page_home import HomeProxy
	from po.page_login import LoginProxy
	from utils import UtilsDriver,get_data
	import time
	import pytest
	import allure
	
	@allure.feature("登录功能")
	class Test_login:
	    def setup_class(self):
	        self.login_p=LoginProxy()
	        self.home_p=HomeProxy()
	    def setup(self):
	        
	        # 进入首页
	        UtilsDriver.get_driver().get("http://127.0.0.1/")
	      
	        # 进入到login界面
	        self.home_p.go_login_page()
	    def teardown_class(self):
	        time.sleep(2)
	        UtilsDriver.quit_driver()
	
	    @pytest.mark.parametrize(["username","pwd","code","asrt_msg"],get_data())
        @allure.story("登录用户名错误")
	    def test_login_username_error(self,username,pwd,code,asrt_msg):
	        self.login_p.login(username,pwd,code)
	        time.sleep(1)
	        # 登录是否成功的预期结果
	        res = UtilsDriver.get_msg()
	        assert asrt_msg in res

(6)执行测试用例

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

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

[pytest]
addopts = -s --alluredir report
testpaths = ./script
python_files = test_*.py *test.py
python_classes = Test_*
python_functions = test_*

(7)生成测试报告

可以使用allure生成测试报告

六、写在最后 

PS:这套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

无缝集成GORM与Go Web框架

探索GORM与流行的Go Web框架之间的和谐集成,以实现高效的数据管理 高效的数据管理是每个成功的Web应用程序的基础。GORM,多才多艺的Go对象关系映射库,与流行的Go Web框架非常搭配,提供了无缝集成,简化了数据交互。本指…

C++使用线程池模拟异步事件处理机制

在C很多框架中都有异步事件处理机制,这导致我们在看源码时经常很疑惑,难以理解,而其中包含的编程套路可能是一些成熟的技术,只是我们不熟悉,比如WebRTC中类似于Qt的信号槽机制,线程事件处理, 或者使用系统异…

玩转Linux基本指令

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:牢记Linux的基本指令。 > 毒鸡汤:挫…

2023 年最好的 Android 系统修复/刷机应用程序和软件

任何 Android 设备要顺利运行,其操作系统必须运行良好。幸运的是,对于大多数 Android 用户来说,这是不间断的。设备运行良好,打电话、共享文档等都没有问题。尽管如此,Android 操作系统可能会停止运行。这可能是由于特…

Postman for Mac(HTTP请求发送调试工具)v10.18.10官方版

Postman for mac是一个提供在MAC设备上功能强大的开发,监控和测试API的绝佳工具。非常适合开发人员去使用。此版本通过Interceptor添加了对请求捕获的支持,修正了使用上下文菜单操作未复制响应正文的问题和预请求脚本的垂直滚动条与自动完成下拉列表重叠…

ios开发 之 多线程

目录 第一节:多线程简介 线程执行原理 主线程 多线程解决方案 pthread __bridge NSThread 线程的状态 第二节:多线程访问资源 Synchronized nonatomic 、atomic 自动释放池 属性修饰符 第三节:消息循环 消息模式 第四节&…

人工智能基础_机器学习022_使用正则化_曼哈顿距离_欧氏距离_提高模型鲁棒性_过拟合_欠拟合_正则化提高模型泛化能力---人工智能工作笔记0062

然后我们再来看一下,过拟合和欠拟合,现在,实际上欠拟合,出现的情况已经不多了,欠拟合是 在训练集和测试集的准确率不高,学习不到位的情况. 然后现在一般碰到的是过拟合,可以看到第二个就是,完全就把红点蓝点分开了,这种情况是不好的, 因为分开是对训练数据进行分开的,如果来…

三掌柜第2期赠书活动:《计算机考研精炼1000题》

引言 各位朋友大家好,我是三掌柜。今天,三掌柜赠书第2期启动,本次为大家精选了《计算机考研精炼1000题》这本书。关于这本书的内容,非常丰富,涵盖计算机考研的高频知识内容,不管是正在备考,还是…

JUC下常见类

JUC(java.util.concurrent) 的常见类ReentrantLock原子类线程池信号量SemaphoreCountDownLatch JUC(java.util.concurrent) 的常见类 ReentrantLock ReentrantLock可重入互斥锁. 和 synchronized 定位类似, 都是用来实现互斥效果, 保证线程安全。 用法: lock(): 加锁, 如果获…

合同审查---财务条款、合同形式与生效审查

1.合同主体 1人 廖 2.财务条款、合同形式与生效 1人 黄 3.履行、验收、知识产权、不可抗力 1人 詹 4.违约责任、争议解决、保密、法律引用 1人 王 代码规范: 1.代码函数的层级 各审查点在json中分为3级层级,但用python写规则的时候,1级层级为…

【C++那些事儿】类与对象(2)

君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,我之前看过一套书叫做《明朝那些事儿》,把本来枯燥的历史讲的生动有趣。而C作为一门接近底层的语言,无疑是抽象且难度颇…

LeetCode 面试题 16.20. T9键盘

文章目录 一、题目二、C# 题解 一、题目 在老式手机上,用户通过数字键盘输入,手机将提供与这些数字相匹配的单词列表。每个数字映射到0至4个字母。给定一个数字序列,实现一个算法来返回匹配单词的列表。你会得到一张含有有效单词的列表。映射…

图书销售数据大屏可视化【可视化项目案例-03】

🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本文选自专栏:可视化技术专栏100例 可视化技术专栏100例,包括但不限于大屏可视化、图表可视化等等。订阅专栏用户在文章底部可下载对应案例源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不…

Leetcode-144 二叉树的前序遍历

递归方法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

谈谈如何写作(一)

序言 没有什么比一套好理论更有用了。——库尔特勒温 谈谈如何写作? 这个题目就像一本书《如何阅读一本书》,听起来似乎很无趣,因为各位盆友直接的反应,可能是这根本无需理论。 实际情况呢?恰恰相反,往往你…

javax.management.InstanceNotFoundException: Catalina:type=Server错误的解决

软件: JDK 1.8 Tomcat 8.5.66 IDEA 2019.3.3 问题:启动IDEA新建一Web Application项目,设置好项目运行,结果发现提示: 提示:Application Server was not connected before run configuration stop, rea…

JavaSE 类与对象

前言 我们之前学的都是面向过程,面向过程研究的是对单个对象的一种方法实现过程,比如求一个数的阶乘,强调的是怎么实现这个方法的过程,但对我们以后来说,如果想要应用到更广的层面,不能只是学习一个方法的…

基于Qt Linux开发板USER-KEY按键实现

介绍如何在 Qt 应用上使用嵌入式 GET6818 Linux 开发板 上的按键。 工具:Qt Creator 5.14.2 平台:windows ## 资源简介 在GET6818 开发板,开发板板载资源上有两个用户按键。如下图原理图(下图开发板的按键原理图)。 ## 应用实例 想要监测这个 KEY0,首先出厂内核已经…

Linux是什么,Linux系统介绍

很多小伙伴都不是那么了解和知道Linux,到底Linux是什么? 像大家用到的安卓手机,生活中用到的各种智能设备,比如路由器,光猫,智能家具等,很多都是在Linux操作系统上。 Linux是什么?Li…

常见问题: (Windows/app/浏览器)总结及其研究———(不断更新中.....)

问题目录 手机电脑电脑qq如何多开分身电脑与手机无线传送数据的方法 浏览器下载如何利用技术下载网上图片 WindowsVMware Workstation1 无法创建11264MB的匿名分页文件:页面文件2 虚拟机安装Windows11时出现: tempting to start up from: EFI VMware Virtual N 百度…