测试报告---自动化测试

一、测试用例

上文铺垫了基础知识。

https://blog.csdn.net/m0_74876421/article/details/141307905icon-default.png?t=N7T8https://blog.csdn.net/m0_74876421/article/details/141307905

二、性能测试

1.准备功能: 浏览器驱动以及selenim包

引入依赖:在pom.xml文件中添加

    <dependencies><dependency><groupId>io.github.bonigarcia</groupId><artifactId>webdrivermanager</artifactId><version>5.8.0</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.0.0</version></dependency></dependencies>
2.根据功能与要求划分出不同的包

例如:

common包中有:

1、创建相关的驱动driver。 

2、在关键节点进行屏幕截图。创建截图时,注意保存的文件格式,以防文件覆盖。例如:时间/类名/方法名-小时分钟秒毫秒来表示。

3、注意在创建webDriver时,要进行设置配置,允许访问所有链接。同时,设置在查找元素时隐式等待。

package common;import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;//创建驱动
//创建截屏
public class Utils {public static WebDriver driver;//创建驱动public static WebDriver createDriver() {if (driver == null) {WebDriverManager.chromedriver().setup();ChromeOptions options = new ChromeOptions();options.addArguments("--remote-allow-origins=*");driver = new ChromeDriver(options);driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));}return driver;}public Utils(String url) {driver = createDriver();if(url.length()>0) {driver.get(url);}}//创建截屏public void screenPhoto(String str) throws IOException {File file = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);//image/nian-yue-ri/类名-小时分钟秒毫秒.pngSimpleDateFormat dirTime = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat fileTime = new SimpleDateFormat("HHmmssSS");String dirFile = dirTime.format(System.currentTimeMillis());String srcFile = fileTime.format(System.currentTimeMillis());String[] prevFile = str.split("-");String prev = prevFile[0];String next = prevFile[1];String fileName = "./src/test/image/" + dirFile + '/' + prev+'/'+next + '-' + srcFile + ".png";FileUtils.copyFile(file, new File(fileName));}}
3.使用driver来访问页面,进行后续操作。

具体的测试用例可根据上文的功能测试进行操作。  

测试:输入正确的用户名、密码,查看是否跳转到主页面。

    public void loginSuccess() {//页面刷新driver.navigate().refresh();String methodName = "";//获取方法名try {methodName = targetclass.getMethod("loginSuccess").getName();} catch (NoSuchMethodException e) {throw new RuntimeException(e);}//查找用户名输入框并输入用户名driver.findElement(By.cssSelector("#username")).sendKeys("zhangsan");//查找密码输入框并输入密码driver.findElement(By.cssSelector("#password")).sendKeys("123456");//点击提交按钮driver.findElement(By.cssSelector("#submit")).click();//屏幕截图try {screenPhoto(LoginPage.class.getName() + "-" + methodName);} catch (IOException e) {throw new RuntimeException(e);}//判断是否登陆成功driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)"));try {screenPhoto(LoginPage.class.getName() + '-' + methodName);} catch (IOException e) {throw new RuntimeException(e);}}

(1)注册页面、登陆页面

1.查看注册页面是否可以打开、是否为注册页面。

2.查看登陆页面是否可以打开、是否为登陆页面。

3.根据测试用例进行操作,查看是否符合预期。

(2)主页面

1.是否为主页面

(3)书写

1.在书页面,点击写作品,找到输入框后,输入内容,点击提交,处理弹窗,跳转主页,查看作品是否提交成功。

2.提交失败,不输入内容,处理弹窗,查看弹窗信息,并查看是否为原页面。

(4)更新

1.点击更新,输入内容,提交,找到更新后的文章,查看是否更新后的文章是否与输入的内容一致。

2.不是自己的作品能否更新。

(5)公开、私密

1.找到公开按钮,点击,处理弹窗后,按钮是否更新为私密。

2.找到私密按钮,点击,处理弹窗后,按钮是否更新为公开。

(6)查看私密作品与个人作品

跳转至个人作品页面,查看作品详情。

跳转至私密作品页面,查看作品详情,查看状态是否为私密状态。

(7)注销

点击注销,查看是否跳转至登陆页面,访问主页,是否依旧跳转至登陆页面。

(8)删除

点击删除,跳转作品详情,查看是否能访问。

(9)未登陆时,测试各种页面是否可以查看

注意:

   1.在线秘密基地,并没有实现页面跳转,所有在书写代码时,注意方法的执行顺序,以及页面值和浏览器的状态。

  2.在处理弹窗时,若已处理过,但代码报错,可在处理弹窗加入显示等待,来保证浏览器执行到了该页面。

  3. 在页面跳转时,仅可能在必要节点加入刷新操作,已避免输入的信息进行拼接。

  4.在书写代码时,尽可能写日志,来放映自动化代码执行的结果。

  5.使用css选择器时,尽可能在原页面查找多次,以防为动态元素。

  6.注意删除,删除后数据就没了,下次重新执行时,可能会产生bug。

测试结果:

但测试结果没有问题时,可以将浏览器配置为无头模式,运行代码,根据结果来分析做自动化。

secret_test: 在线秘密基地_自动化测试icon-default.png?t=N7T8https://gitee.com/miniini/secret_test

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

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

相关文章

selenium底层原理详解

目录 1、selenium版本的演变 1.1、Selenium 1.x&#xff08;Selenium RC时代&#xff09; 1.2、Selenium 2.x&#xff08;WebDriver整合时代&#xff09; 1.3、Selenium 3.x 2、selenium原理说明 3、源码说明 3.1、启动webdriver服务建立连接 3.2、发送操作 1、seleni…

【性能优化】修复一个谷歌官方承认的内存泄漏问题

前言 通过下面这段代码&#xff0c;配合控制台可以直观看到谷歌官方承认的一个内存泄漏问题&#xff0c;https://issues.chromium.org/issues/41403456。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta …

前端css动画transform多个属性值写法

X轴平移400px transform: translateX(400px); X轴平移400px并缩小0.5倍 transform: translateX(400px) scale(0.5); X轴平移400px并旋转45度 transform: translateX(400px) rotate(45d…

备考2024年美国数学竞赛AMC10:吃透1250道真题和知识点(持续)

有什么含金量比较高的初中生数学竞赛吗&#xff1f;美国数学竞赛AMC10是个不错的选择。那么&#xff0c;如何备考AMC10美国数学竞赛呢&#xff1f;做真题&#xff0c;吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。 通过做真题&#xff0c;可以帮助孩子找到真实竞赛…

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(二)---ROS2与UE5进行图像数据传输

前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车&#xff0c;并使用通过跨平台的方式进行ROS2和UE5仿真的通讯&#xff0c;达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础&#xff0c;Nav2相关的学习教程可以参考本人的其他博…

系规学习第13天

1、规划设计的主要目的不包括() A、设计满足业务需求的IT服务 B、设计SLA、测量方法和指标。 C、设计服务过程及其控制方 D、设计实施规划所需要的进度管理过程 [答案] D [解析]本题考察的是规划设计的目的&#xff0c;建议掌握。 (1)设计满足业务需求的IT服务。 (2)设…

Axios请求使用params参数导致后端获取数据嵌套

问题重述&#xff1a; 首先看前端的axios请求这里我使用params参数将data数据传给后端 let data JSON.stringify(this.posts);axios.post("/blog_war_exploded/insertPost", {params: {data: data}}).then((res) > {if (res.data "success") {alert(…

大杂烩!注意力机制+时空特征融合!组合模型集成学习预测!CNN-LSTM-Attention-Adaboost多变量负荷预测

大杂烩&#xff01;注意力机制时空特征融合&#xff01;组合模型集成学习预测&#xff01;CNN-LSTM-Attention-Adaboost多变量负荷预测 目录 大杂烩&#xff01;注意力机制时空特征融合&#xff01;组合模型集成学习预测&#xff01;CNN-LSTM-Attention-Adaboost多变量负荷预测…

银河麒麟V10如何安装本地deb软件包?(以安装wps为例)

银河麒麟V10如何安装本地deb软件包&#xff1f;&#xff08;以安装wps为例&#xff09; 一、准备二、安装三、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在银河麒麟V10中安装本地.deb软件包&#xff0c;虽然apt主要用于管理仓库中…

LeetCode:3148. 矩阵中的最大得分(DP Java)

目录 3148. 矩阵中的最大得分 题目描述&#xff1a; 实现代码与解析&#xff1a; DP 原理思路&#xff1a; 3148. 矩阵中的最大得分 题目描述&#xff1a; 给你一个由 正整数 组成、大小为 m x n 的矩阵 grid。你可以从矩阵中的任一单元格移动到另一个位于正下方或正右侧…

删除微博博文js脚本实现

我当前的时间&#xff1a;2024.8.18 脚本可以直接使用&#xff0c;随着时间推移&#xff0c;微博页面元素可能会有变动。 思路&#xff1a;javascript 模拟手动点击&#xff0c;下滑&#xff0c;并且删除博文 首先登录微博&#xff0c;进入自己的博文界面如下&#xff1a; 进…

Git使用方法(三)---简洁版上传git代码

1 默认已经装了sshWindows下安装SSH详细介绍-CSDN博客 2 配置链接github的SSH秘钥 1 我的.ssh路径 2 进入路径cd .ssh 文件 3 生成密钥对 ssh-keygen -t rsa -b 4096 (-t 秘钥类型 -b 生成大小) 输入完会出现 Enter file in which to save the key (/c/Users/Administrator/…

使用DOM破坏启动xss

目录 实验环境&#xff1a; 分析&#xff1a; 找破坏点&#xff1a; 查看源码找函数&#xff1a; 找到了三个方法&#xff0c;loadComments、escapeHTM 、displayComments loadComments escapeHTM displayComments&#xff1a; GOGOGO 实验环境&#xff1a; Lab: Exp…

MySQL库表的基本操作

目录 1.库的操作1.1 创建数据库1.2字符集和校验规则①查看系统默认字符集以及校验规则②查看数据库支持的字符集③查看数据库支持的字符集校验规则④校验规则对数据库的影响 1.3操纵数据库①查看数据库②显示创建的数据库的语句③修改数据库④数据库删除⑤备份和恢复⑥还原注意…

C库函数signal()信号处理

signal()是ANSI C信号处理函数&#xff0c;原型如下&#xff1a; #include <signal.h>typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); signal()将信号signum的处置设置为handler&#xff0c;该handler为SIG_IGN&#xff…

物联网(IoT)详解

物联网&#xff08;IoT&#xff09;详解 1. IoT定义简介2. IoT工作原理3. IoT关键技术4. 物联网与互联网区别5. IoT使用场景6. 开源物联网平台7. 参考资料 1. IoT定义简介 首先第一个问题&#xff0c;什么是物联网&#xff08;IoT&#xff09;? 物联网&#xff08;英文&#…

LabVIEW光纤水听器闭环系统

开发了一种利用LabVIEW软件开发的干涉型光纤水听器闭环工作点控制系统。该系统通过调节光源频率和非平衡干涉仪的光程差&#xff0c;实现了工作点的精确控制&#xff0c;从而提高系统的稳定性和检测精度&#xff0c;避免了使用压电陶瓷&#xff0c;使操作更加简便。 项目背景 …

thinkphp5实现弹出框(下拉框选项动态赋值)

效果图 原理 先执行接口获取动态数据&#xff0c;然后在 layer.open的success回调函数中动态添加html代码片段&#xff0c;通过如下方法&#xff0c;将动态生成的代码插入指定的div中&#xff0c;实现动态赋值的效果。 // 动态获取的数据 var data ......;// 弹出框配置 lay…

【BUU】[NewStarCTF 2023 公开赛道]Final -CP读取文件内容

漏洞检测 访问首页发现是ThinkPHP5 的站点 用工具扫描一下,发现存在ThinkPHP5.0.23 RCE漏洞 访问验证,写入shell 成功写入shell. 根目录发现flag,但是权限不足 提权获取flag 准备提权,这里一开始尝试了find,但是find权限不足 尝试采用cp命令,移动到web目录,发现访问还是…

基于web的物流管理系统--论文pf

TOC springboot473基于web的物流管理系统--论文pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们思想上不可…