自动化实战-对个人博客系统实现web自动化测试

news2024/9/21 12:31:03

基于selenium和JUnit5实现的自动化测试用例

一、使用脑图编写web自动化测试用例

下图就是根据博客系统创建的自动化测试用例脑图

image-20230224205245962

二、创建自动化项目,根据用例来实现脚本

image-20230302103112536

Common包底下放着的是所有测试用例共用的方法,公共类

Test包底下就是我们的测试用例,在test包下面写我们的测试代码。

Common目录

测试用例共享的类,创建了驱动对象,解决了每个用例要重复去创建驱动冗余的问题

1.1浏览器驱动

自动化测试最重要的就是要创建浏览器驱动,每个测试用例测试之前都必须要创建,那我们就可以将它归入到Common包底下,而且我们只需要创建一次就好,类似于单例模式,避免资源的浪费

image-20230302103634567

无头模式(不显示浏览器窗口)

options.addArguments("-headless"); //浏览器参数,无头模式(不显示浏览器窗口)

隐式等待:自动化测试的代码运行的速度是比浏览器渲染的速度快的,如果不加入隐式等待,就有可能会造成自动化代码去findElement时候找不到对应元素。

//创建隐式等待
chromeDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));

1.2截图功能

截图的存放以天和时间为存储路径,每天的运行截图会存放在不同的文件夹中,并且截图的文件命名根据时间戳命名,能够更快,更方便的发现问题

image-20230302104408107

Test目录

我们全部的测试类都在这个中编写。

1、登录界面测试用例

image-20230302104628801

image-20230302105150812

特点:

1、通过@TestMethodOrder(MethodOrderer.OrderAnnotation.class)注解保证了所有测试用例的顺序具有逻辑性,先验证登录失败的测试用例,再验证登录成功的测试用例,可以实现一次登录就可以完成测试,避免了代码的繁琐。

2、多参数的测试用例通过JUnit的@CsvSource 注解传参,可以避免因为需要测试不同数据的用例造成的冗余

3、没有直接执行driver.quit();代码,而是留在所以博客测试用例执行完以后执行,可以避免反复的调用创建驱动方法而造成的效率降低。

2、博客列表页测试用例

image-20230302105805965

image-20230302110249640

特点:

1、通过@TestMethodOrder(MethodOrderer.OrderAnnotation.class)注解保证了所有测试用例的顺序具有逻辑性

2、没有直接执行driver.quit();代码,而是留在所以博客测试用例执行完以后执行,可以避免反复的调用创建驱动方法而造成的效率降低。

3、博客编辑页测试用例

image-20230302110411633

image-20230302111459031

特点:

1、通过@TestMethodOrder(MethodOrderer.OrderAnnotation.class)注解保证了所有测试用例的顺序具有逻辑性

2、没有直接执行driver.quit();代码,而是留在所以博客测试用例执行完以后执行,可以避免反复的调用创建驱动方法而造成的效率降低。

4、博客详情页测试用例

image-20230302111549624

image-20230302111907142

特点:

1、通过@TestMethodOrder(MethodOrderer.OrderAnnotation.class)注解保证了所有测试用例的顺序具有逻辑性

2、没有直接执行driver.quit();代码,而是留在所以博客测试用例执行完以后执行,可以避免反复的调用创建驱动方法而造成的效率降低。

5、通过测试套件加载

image-20230302112400830

如何实现的,以及有什么亮点?

如何实现:

大体:通过selenium自动化工具加JUnit5单元测试工具实现的

基础目录(common) :这个目录下的类是测试用例共享的类,创建了驱动对象,解决了每个用例要重复去创建驱动冗余的问题

第二个目录:

Test目录:我们全部的测试类都在这个中编写。

根据博客的每一个页面为一个测试类,每个测试类实现了测试用例,通过测试套件把我们的测试类全部加载进去

亮点:

1)使用了junit5中提供的注解 避免因为要创建mian函数导致的生成过多的对象,造成资源浪费和时间浪费,提升了效率

2)使用了JUnit的@CsvSource 注解传参,可以避免因为需要测试不同数据的用例造成的冗余

3)只创建一次驱动对象,避免了每个用例重复创建驱动对象,造成时间和资源浪费

4)测试套件:降低了测试人员的工作量,通过套件一次执行所有要运行的测试用例

5)使用了等待(隐式等待):提高了自动化运行效率,提高了自动化的稳定性。

6)屏幕截图 : 方便问题的追溯以及问题的解决

总结

自动化测试的难点:如何去发现项目中可能存在的问题去测试,避免误报这些等等都是难点,很多时候可能因为我们思考不执行关注的不够可能会遗漏,比如在我写的博客自动化测试用例的时候遗漏了博客编辑页什么都不写的时候测试还能不能发布博客,一开始我是漏了这点,后来有一次我无意中点击,才发现什么都不填写情况下竟然还可以发布,我马上去修改我的自动化测试用例,添加了这个上去;

提升:写自动化测试思考的东西一定要全面,仔细,不能遗漏很多细节而导致真的项目部署以后造成的问题。

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

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

相关文章

BERT学习

非精读BERT-b站有讲解视频(跟着李沐学AI) (大佬好厉害,讲的比直接看论文容易懂得多) 写在前面 在计算MLM预训练任务的损失函数的时候,参与计算的Tokens有哪些?是全部的15%的词汇还是15%词汇中真…

浅谈babel原理

1. babel简介 Babel 的前身是 6to5,6to5 是 2014 年 发布的,主要功能是 就是 ES6 转成 ES5。后改名babel。 2. Babel用途 转译 esnext、typescript 等到目标环境支持的 js 高级语言到到低级语言叫编译,高级语言到高级语言叫转译代码转换 tar…

MySQL 上亿大表如何优化?

背景XX 实例(一主一从)xxx 告警中每天凌晨在报 SLA 报警,该报警的意思是存在一定的主从延迟。(若在此时发生主从切换,需要长时间才可以完成切换,要追延迟来保证主从数据的一致性)XX 实例的慢查询…

李群李代数求导-常用求导公式

参考 A micro Lie theory for state estimation in robotics manif issues 116 常用求导公式 Operation左雅克比右雅克比X−1\mathcal{X}^{-1}X−1JXX−1−I\mathbf{J}_{\mathcal{X}}^{\mathcal{X}^{-1}}\mathbf{-I}JXX−1​−IJXX−1−AdX\mathbf{J}_{\mathcal{X}}^{\mathc…

Go中sync 包的 Cond 使用

文章目录背景Cond 简介使用示例Signal的使用场景Broadcast的使用场景注意事项背景 编写代码过程中, 通常有多个主协程和多个子协程进行协作的过程,比如通过 WaitGroup 可以实现当所有子协程完成之后, 主协程再继续执行, 具体可参…

【ns-3】VS Code开发环境配置

文章目录前言1. 安装VS Code2. 安装CMake和C插件3. 配置环境3.1 配置代码智能提示3.2 配置build3.3 配置gdb调试后记参考文献前言 正所谓“工欲善其事必先利其器”,本篇总结一下ns-3在VS Code开发环境下的配置。 版本信息如下: Ubuntu 22.10ns-3.37VS…

用户难增,广告营收下跌,微博还能“高飞”吗?

微博2022年的业绩再次“变脸”。 图源:微博 2023年3月1日,微博公布了2022年Q4及全年财报。2022年营收18.4亿美元,剔除汇率因素同比下跌15%;2022年Q2以来,微博坚持降本增效策略,提升了运营效率,…

Jquery实现增删改除

文章目录一.关于增加部分区别:二.关于删除部分关于在表格中实现增删改1.首先我们需要创建基本的HTML项目2.相关的css和js的引用3.呈上源代码(1).HTML源代码(2).js源代码(自己创建的)3.效果图&am…

大数据技术——Scala语言基础

Scala基础知识控制结构if条件表达式有一点与Java不同的是&#xff0c;Scala中的if表达式的值可以赋值给变量while循环for循环基本语法其中,“变量<-表达式”被称为“生成器(generator).”“守卫(guard)"的表达式:过滤出一些满足条件的结果。基本语法:for (变量<-表达…

Sandstorm 建设者亮点——2023 年 2 月

隆重推出 Sandstorm 建设者亮点——2023 年 2 月版&#xff0c;这是由最厉害的 Sandstorm 社区制作的独一无二的 NFT 系列。 从突破性的兔子机器人到神奇的蒸汽朋克海盗船&#xff0c;Sandstorm 建设者亮点 NFT 系列展示了一系列独一无二的创作。 19 项新资产将添加至 Sandstor…

提升内部客户服务的 13 个最佳实践攻略!

客户服务包含两个方面的内容&#xff1a;一个是内部服务&#xff1b;一个是外部服务。每一个企业在发展过程中都有内部客户和外部客户&#xff0c;内部服务是针对内部客户的&#xff0c;自己公司的部门与部门之间互为内部客户&#xff1b;外部服务是针对公司之外的外部客户的。…

MySQL数据库存储引擎【InnoDB/MyISAM/MEMORY 】

1.InnoDB存储引擎InnoDB给MySQL的表提供了事务处理、回滚、崩溃修复能力和多版本并发控制的事务安全。在MySQL从3.23.34a开始包含InnnoDB。它是MySQL上第一个提供外键约束的表引擎。而且InnoDB对事务处理的能力&#xff0c;也是其他存储引擎不能比拟的。靠后版本的MySQL的默认存…

你没用过工业智能网关?它已经在远程监控行业很热门了,足不出户远程控制设备。

一、项目背景 钢铁企业作为一个能量消耗比较大&#xff0c;污水排放比较多的工业&#xff0c;只有对技术进行不断的改革才能够实现节能减排的目的。这就需要相应的钢铁企业厂能够应用新的技术&#xff0c;实现污水的安全无污染处理&#xff0c;不断地改善环境&#xff0c;提高相…

卡特兰数及常见模型

卡特兰数 英文名Catalan number&#xff0c; 是组合数学中一个常出现在各种计数问题中出现的数列。其前几项为: 1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 742900 2674440 9694845 35357670 129644790 477638700 1767263190 6564120420 24466267020 91482563640 343…

苹果电脑怎么截屏?图文教学,包教包会

苹果电脑是很多设计师和程序员们所钟爱的电脑品牌&#xff0c;但是在使用过程中&#xff0c;有些小功能操作并不是那么容易掌握。比如&#xff0c;苹果电脑怎么截屏呢&#xff1f;如果您是新手&#xff0c;可能会感到有些困惑。别担心&#xff0c;下面我们将为您详细介绍如何在…

springboot整合minio及工具类

说明&#xff1a;本文章是springboot和minio的整合&#xff0c;同时还有上传和下载工具类&#xff0c;minio的具体介绍这里就不多说了【上传和下载都是基础工具类&#xff0c; minio的安装如果有时间就更新】 工程图&#xff1a;【主要功能在于工具类&#xff0c;在代码块11和…

好意外,发现永久免费使用的云服务器

原因就不说了&#xff0c;说一下过程&#xff0c;在百度搜pythonIDE的时候&#xff0c;发现了一个网站 https://lightly.teamcode.com/https://lightly.teamcode.com/ 就是这个网站&#xff0c;看见这个免费试用&#xff0c;一开始觉得没什么&#xff0c;在尝试使用的过程中发…

IIC总线式驱动开发(mpu6050)(二)

目录 六、I2C总线二级外设驱动开发方法 七、I2C总线二级外设驱动开发之名称匹配 1. i2c_register_board_info 2. i2c_new_device&#xff1a;明确二级外设地址的情况下可用 3. i2c_new_probed_device 八、I2C总线二级外设驱动开发之设备树匹配 六、I2C总线二级外设驱动开…

AVL树(Insert)

文章目录AVL树代码模拟实现Insert重点控制平衡:旋转->平衡右单旋左单旋左右双旋双旋平衡因子更新错误右左双旋左右双旋erase了解AVL树的性能AVL树 代码 高度平衡二叉搜索树 引入 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单…

C/C++网络编程笔记Socket

https://www.bilibili.com/video/BV11Z4y157RY/?vd_sourced0030c72c95e04a14c5614c1c0e6159b上面链接是B站的博主教程&#xff0c;源代码来自上面视频&#xff0c;侵删&#xff0c;这里只是做笔记&#xff0c;以供复习和分享。上一篇博客我记录了配置环境并且跑通了&#xff0…