干货分享 —— 如何开展web项目自动化测试!

前言

自动化(Automation)是指机器设备、系统或过程(生产、管理过程)在没有人或较少人直接参与的情况下,根据人的要求,通过自动检测、信息处理、分析判断、操纵和控制,达到预期目标的过程。自动化测试是指测试过程是在没有人为或较少人为干预的情况下进行的测试,简单地说,就是用一个程序或脚本来测试程序。在web自动化测试中,主要用于将测试人员从繁琐的内容中解救出来。主要是做一些例如需要多次输入、多次运行的,例如我们使用边界值和等价类设计的大量测试数据需要执行,如当业务流程需要多次执行时,我们就可以使用Web自动化测试。

1、常用工具

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

  • 浏览器一般用chrome

  • 浏览器对应的driver(chromedriver)

  • Python

  • Selenium库

环境安装,这里不再累赘,不会的可以联系老师

2、测试方法

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

Web自动化测试一般采用PO模式设计实现

PO是Page Object的缩写, 核心思想是通过封装界面元素来减少冗余代码。同时,在后期的维护中,如果元素定位发生变化,只需要调整页面元素封装的代码即可,提高测试用例的可维护性、可读性。

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

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

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

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

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

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

当出现页面需要时,只需要测试代码即可,无需修改,只需要修改操作层即可。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

3、自动化实施

1)明确测试目标和范围

在开始自动化测试之前,首先需要明确测试的目标和范围。这通常包括确定要测试的功能模块、性能指标、安全性要求等。例如,在一个电商网站项目中,测试目标可能包括用户注册、登录、商品浏览、购物车管理、订单支付等功能模块。

2)选择合适的自动化测试工具

根据测试目标和项目需求,选择合适的自动化测试工具。在选择工具时,需要考虑工具的兼容性、易用性、可扩展性等因素。以Selenium为例,它是一个广泛使用的Web自动化测试工具,支持多种浏览器和操作系统,具有丰富的API和插件,能够满足复杂的测试需求。

3)搭建测试环境

搭建用于自动化测试的环境,包括测试服务器、测试浏览器、测试数据库等。确保测试环境与实际生产环境尽可能一致,以模拟真实的用户操作场景。例如,在电商网站项目中,可以搭建一个与生产环境相似的测试环境,包括商品数据、用户数据等。

4)设计测试用例

根据测试目标和需求文档,设计详细的测试用例。测试用例应包括测试场景、测试步骤、预期结果等关键信息。以用户注册功能为例,可以设计以下测试用例:

  • 输入正确的用户名和密码,点击注册按钮,预期结果为注册成功并跳转到登录页面。

  • 输入已存在的用户名进行注册,预期结果为提示用户名已存在。

  • 输入不符合规范的用户名或密码(如长度不足、包含特殊字符等),预期结果为提示输入错误。

5)编写自动化测试脚本

使用自动化测试工具编写测试脚本,模拟用户操作执行测试用例。在编写脚本时,要注意代码的可读性和可维护性。以Selenium为例,可以使用其提供的WebDriver API编写测试脚本。以下是一个简单的Selenium测试脚本示例:

from selenium import webdriver  from selenium.webdriver.common.keys import Keys    # 初始化浏览器  driver = webdriver.Chrome()    # 打开网页  driver.get("http://www.example.com/register")    # 输入用户名和密码  username = driver.find_element_by_id("username")  username.send_keys("testuser")    password = driver.find_element_by_id("password")  password.send_keys("testpassword")    # 点击注册按钮  register_button = driver.find_element_by_id("register-button")  register_button.click()    # 检查注册结果  if "登录" in driver.page_source:      print("注册成功!")  else:      print("注册失败!")    # 关闭浏览器  driver.quit()

6)执行自动化测试

在测试环境中执行自动化测试脚本,并监控测试过程。可以使用测试管理工具来执行测试脚本,并查看测试结果和日志信息。在电商网站项目中,可以通过设置定时任务或触发条件来自动执行测试脚本,以确保Web应用的稳定性和可靠性。

7)分析测试结果并报告

收集和分析测试结果,生成测试报告。测试报告应包含测试目标、测试范围、测试用例执行情况、缺陷统计和修复情况等内容。根据测试结果,可以评估Web应用的质量和性能是否满足需求,并提出改进建议。在电商网站项目中,可以根据测试报告来优化用户注册、登录等功能的用户体验和性能表现。

图片

8)缺陷管理与跟踪

将发现的缺陷提交给开发团队进行修复,并跟踪缺陷的修复进度和验证修复结果。确保每个缺陷都得到及时处理和验证,以提高Web应用的质量和用户体验。在电商网站项目中,可以使用缺陷管理工具来跟踪和管理缺陷的修复过程。

9)迭代与优化

根据测试结果和用户反馈,对自动化测试流程进行迭代和优化。例如,可以调整测试用例的设计、优化测试脚本的编写、改进测试环境的搭建等。通过不断地迭代和优化,可以提高自动化测试的效率和准确性,为Web应用的质量保障提供有力支持。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

史上最全软件测试自学资料大全(学习路线+视频教程+文档资料+PDF面试文档)作为一个软件测试的过来人,小濠想尽自己最大的努力,帮助每一个伙伴都能顺利找到满意的工作。我花费了很多时间细心钻研,在收集了近 200G 干货、 1500份资料中精心筛选出来了这份「软件测试资料包」。你只需要花很少的时间就能快速地icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=Mzk0OTI0ODM2Mg==&mid=2247489248&idx=1&sn=3d7dbe28d58e5147c409c7e5f059d8ea&chksm=c35a1ee5f42d97f397fd420ce40f72b60195d4ffb42c34f61300463711347815f2e5656defa4&token=1425287504&lang=zh_CN#rd最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

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

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

相关文章

milvus 中的集合与 database

在Milvus中,集合(Collection)和数据库(Database)是两个不同的概念,它们之间存在一定的关系。 1. 数据库(Database) 数据库是Milvus中的最顶层的组织单位,可以理解为一个…

从零构建vue3+ts+vite项目打包及项目依赖配置

❗️❗️❗️❗️ 写在最前: 本文是根据B站作者 月光分层 视频vuets 工程化配置以及作者笔记稍作整理 💖💖作者B站地址https://space.bilibili.com/14110850 💖💖视频教程地址vuets 工程化配置 💖💖作者微信…

【计算机毕业设计】安卓054基于Android校园助手

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

LAMP源码编译安装——CentOS7

文章目录 LAMP是什么LAMP软件组件LinuxApacheMySQLPHP 源码安装Apache一、准备工作二、安装环境依赖包三、配置软件模块四、编译及安装五、优化配置文件路径六、添加httpd系统服务(有两种方法)方法一:方法二: 七、修改httpd 服务配…

2024HBCPC:C Goose Goose Duck

题目描述 Iris 有 n n n 个喜欢玩鹅鸭杀的朋友,编号为 1 ∼ n 1∼n 1∼n。 假期的时候,大家经常会在群里问有没有人玩鹅鸭杀,并且报出现在已经参与的人数。 但是每个人对于当前是否加入游戏都有自己的想法。 具体的来说,对于第…

【Python音视频技术】用moviepy实现图文成片功能

今天上班的时候看到有人群里问 图文成片怎么实现。 临时给我提供一点写作的灵感,趁着下班写一篇。这里用到 python的moviepy库, 之前文章介绍过。 大体思路:假定有4张图片,每张图片将在视频中展示2秒钟,并且图片会按照…

公告:关于博主的重要通知

大家好,我是博主夏目。 本期不分享知识,博主想说明一下博主的一些重要提示。 分享的内容,从不收费,也未向任何人进行收费。 意在分享知识,传播文化,结交更多志同道合的朋友。 截至目前,从未…

如何选择一个AI大模型的私家炼丹炉

随着计算机图形处理技术的不断进步,NVIDIA作为图形处理器(GPU)的领先制造商,其推出的RTX系列消费级显卡在性能和技术创新方面均引起了广泛关注。依托这些消费级显卡性能的突飞猛进,AI炼丹师们也有望将大模型训练、推理…

《C++ Primer Plus》第十二章复习题和编程练习

目录 一、复习题二、编程练习 一、复习题 1. 假设String类有如下私有成员: // String 类声明 class String { private: char* str;int len;// ... };a. 下述默认构造函数有什么问题? String::String() { } // 默认构造函数b. 下述构造函数有什么问题…

go语言函数之defer

Go函数里面提供了defer关键字,可以注册多个延迟调用,这些调用以先进后出(FILO)的顺序在函数返回前被执行。这点有点类似java语言中异常处理中的的finaly子句,defer常用于保证一些资源最终一定能够得到回收和释放。 pa…

VirtualBox+Ubuntu22.10+Docker+ROS2

Docker 拉取ros2镜像 docker pull osrf/ros:foxy-desktop 运行 docker run -it --nameros2 -p 50022:22 osrf/ros:foxy-desktop 进入容器安装组件 apt-get update apt-get install vim apt-get install git apt-get install net-tools # 安装ssh apt-get install openssh…

Java面试题分享0519

目录 1、重载和重写区别? 2、构造器(Constructor)是否可被重写(override) 3、break 、continue 、return 作用? 4、JAVA 创建对象有哪些方式? 5、 和 equals 有什么区别? 6、I…

centos下给es7.12.1设置密码

安装可参考: centos7下安装elasticsearch7.8.1并配置远程连接_在一台服务器centos7上安装和配置elasticsearch。-CSDN博客 1、先停掉es进程 2、设置输入密码后访问配置 cd /home/soft/elasticsearch-7.12.1/config vim elasticsearch.yml 3、启动es服务 cd /home/…

香橙派 AIpro开发板初上手

一、香橙派 AIpro开箱 最近拿到了香橙派 AIpro(OrangePi AIpro),下面就是里面的板子和相关的配件。包含主板、散热组件、电源适配器、双C口电源线、32GB SD卡。我手上的这个是8G LPDDR4X运存的版本。 OrangePi AIpro开发板是一款由香橙派与华…

VUE3 学习笔记(4):VUE 事件处理、传参、事件修饰

常见的Web事件 页面事件 Onload --加载 Onunload --取消 Onscroll --滚动 Onresize --大小改变 表单事件 Onsubmit --提交 onchange --变更 Onselect --选择 Onreset --重置 焦点事件 Onfocus --得到焦点 Onblur --失去焦点 鼠标事件 Onclick --点击 Ondbclick --双击 onmouseu…

在Python中实现限定抽奖次数的机制

目录 一、引言 二、需求分析 三、设计思路 四、代码实现 4.1 使用字典存储用户抽奖次数 4.2 使用数据库存储用户抽奖次数 五、扩展与优化 六、总结 一、引言 在当今互联网应用中,抽奖系统作为吸引用户、提高用户参与度和活跃度的重要手段,已经被…

ideavim与vim相关笔记

本文主要用于记录一些使用 vim/ideavim 开发的心得笔记,为了速度也为了折腾 强烈的个人向 笔记 ideavim 与 vim 混杂,无序但使用二级标题做大分类,当字典用,默认 vim 和 ideavim 通用,不通用会标记出来 文件操作 刷新重载当前打开…

为什么配置了安全组还是有攻击进来?

面对DDoS攻击,即使配置了安全组规则来限制入站流量,攻击者仍可能找到绕过这些基本防护措施的方法,尤其是当攻击流量巨大时。这是因为安全组主要工作在网络层和传输层,它们依据IP地址、协议和端口号来过滤流量,对于应用…

AttributeError: module ‘numpy‘ has no attribute ‘bool‘

报错内容: AttributeError: module numpy has no attribute bool. np.bool was a deprecated alias for the builtin bool. To avoid this error in existing code, use bool by itself. Doing this will not modify any behavior and is safe. If you specifically…

【Spring】设计模式(GOF)

Spring Framework在其架构和实现中广泛使用了多种GOF(Gang of Four)设计模式。这些设计模式帮助Spring解决了许多常见的软件开发问题,提高了代码的可重用性、可维护性和可扩展性。 1、工厂模式(Factory Pattern) 1.1简…