个人博客系统测试报告(一)

news/2024/9/22 22:23:42/

作者:爱塔居

专栏:测试

目录

一、项目背景介绍

二、项目功能

三、测试计划

3.1自动化测试用例

3.2 性能测试 ​​​​​​​(未完)


一、项目背景介绍

个人博客系统前端由注册页、登录页、列表页、详情页、编辑页、个人博客列表页构成,结合后端实现了注册、登录、添加博客、删除博客、查看博客、修改博客、强制登录等功能。

部署链接:http://124.223.101.247:8080/login.html

项目源码:https://gitee.com/lao-chen-a/javacode/tree/master/myblog-sm/src/main

二、项目功能

1.注册功能:需要输入用户名,还有密码以及确认密码进行注册,密码和确认密码必须保持一致,进行注册后,会自动跳转到登录页面。

2.登录功能:虽然主页右上角有主页和注册按钮,但在未登录的情况,只能注册和登录

3.个人博客列表页:可以在个人博客列表页上查看博客标题、发布时间、简介信息,每篇博客下方都有查看全文、修改、删除按钮等。页面的右上角有三个按钮,点击主页就会跳转到列表页,点击写博客就会跳转到编辑页,点击注销就会退出登录。

4.博客列表页:在博客列表页,可以看到所有用户的文章,运用了分页功能,每一页仅显示两篇文章。

5.详情页:在个人博客列表页、博客列表页点击“查看全文”按钮,就会跳转到详情页,此刻就可以看到该篇博客的完整内容,包括发布时间和阅读量。在左边,我们还可以看到作者的一些信息。

三、测试计划

3.1自动化测试用例

自动化测试总代码:https://gitee.com/lao-chen-a/javacode/commit/8d2f0900dbd37e4e48da826512d392341547ec52 

我是分成几个页面(功能)进行测试,其中Screen文件存放的是截屏的方法。通过这个方法,我们得到测试结果后会自动截屏存放到target包中。 利用时间的命名方式,使得文件名不会重复。

 Screen.java

package Blog;import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.*;
import org.openqa.selenium.*;import java.io.File;
import java.io.IOException;import static java.lang.Thread.sleep;
import static org.junit.jupiter.api.Assertions.assertEquals;
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class Screen {public  void taskScreenShot(WebDriver webDriver){long date = System.currentTimeMillis();String path = String.valueOf(date);String cusPath = System.getProperty("user.dir");path = path+".png";String screenPath = cusPath+"/"+path;System.out.println(screenPath);//实现截图File file = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);try {FileUtils.copyFile(file,new File(screenPath));}catch (IOException e){e.printStackTrace();}}}

 RegTests.java

package Blog;import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;public class RegTests {@Testpublic void regSuccess(){WebDriver webDriver=new ChromeDriver();webDriver.get("http://124.223.101.247:8080/reg.html");webDriver.findElement(By.cssSelector("#username")).sendKeys("XiaoChen2");webDriver.findElement(By.cssSelector("#password")).sendKeys("12345");webDriver.findElement(By.cssSelector("#password2")).sendKeys("12345");webDriver.findElement(By.cssSelector("#submit")).click();
//        webDriver.get("http://124.223.101.247:8080/login.html");
//        webDriver.findElement(By.cssSelector("#username")).sendKeys("XiaoChen2");
//        webDriver.findElement(By.cssSelector("#password")).sendKeys("12345");
//        webDriver.findElement(By.cssSelector("#submit")).click();webDriver.quit();}//用户名为空@Testpublic void regFalse1(){WebDriver webDriver=new ChromeDriver();webDriver.get("http://124.223.101.247:8080/reg.html");webDriver.findElement(By.cssSelector("#username")).sendKeys("");webDriver.findElement(By.cssSelector("#password")).sendKeys("12345");webDriver.findElement(By.cssSelector("#password2")).sendKeys("12345");webDriver.findElement(By.cssSelector("#submit")).click();System.out.println(webDriver.switchTo().alert().getText());webDriver.quit();}//密码为空@Testpublic void regFalse2(){WebDriver webDriver=new ChromeDriver();webDriver.get("http://124.223.101.247:8080/reg.html");webDriver.findElement(By.cssSelector("#username")).sendKeys("XiaoChen");webDriver.findElement(By.cssSelector("#password")).sendKeys("");webDriver.findElement(By.cssSelector("#password2")).sendKeys("12345");webDriver.findElement(By.cssSelector("#submit")).click();System.out.println(webDriver.switchTo().alert().getText());webDriver.quit();}//确认密码为空@Testpublic void regFalse3(){WebDriver webDriver=new ChromeDriver();webDriver.get("http://124.223.101.247:8080/reg.html");webDriver.findElement(By.cssSelector("#username")).sendKeys("XiaoChen");webDriver.findElement(By.cssSelector("#password")).sendKeys("12345");webDriver.findElement(By.cssSelector("#password2")).sendKeys("");webDriver.findElement(By.cssSelector("#submit")).click();System.out.println(webDriver.switchTo().alert().getText());webDriver.quit();}//密码和确认密码不一致@Testpublic void regFalse4(){WebDriver webDriver=new ChromeDriver();webDriver.get("http://124.223.101.247:8080/reg.html");webDriver.findElement(By.cssSelector("#username")).sendKeys("XiaoChen");webDriver.findElement(By.cssSelector("#password")).sendKeys("12345");webDriver.findElement(By.cssSelector("#password2")).sendKeys("123");webDriver.findElement(By.cssSelector("#submit")).click();System.out.println(webDriver.switchTo().alert().getText());webDriver.quit();}
}

 LoginTests

package Blog;import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;import static java.lang.Thread.sleep;public class LoginTests extends Screen {//账号密码正确@Testvoid LoginSuccess() throws InterruptedException {WebDriver webDriver=new ChromeDriver();webDriver.get("http://124.223.101.247:8080/login.html");sleep(300);webDriver.findElement(By.cssSelector("#username")).sendKeys("chen");webDriver.findElement(By.cssSelector("#password")).sendKeys("12");webDriver.findElement(By.cssSelector("#submit")).click();sleep(300);String cur_url=webDriver.getCurrentUrl();Assertions.assertEquals("http://124.223.101.247:8080/myblog_list.html",cur_url);taskScreenShot(webDriver);webDriver.quit();}//账号密码不正确@Testpublic void loginFalse1() throws InterruptedException {WebDriver webDriver=new ChromeDriver();webDriver.get("http://124.223.101.247:8080/login.html");webDriver.findElement(By.cssSelector("#username")).sendKeys("chen");webDriver.findElement(By.cssSelector("#password")).sendKeys("12345");webDriver.findElement(By.cssSelector("#submit")).click();sleep(300);System.out.println(webDriver.switchTo().alert().getText());webDriver.switchTo().alert().accept();taskScreenShot(webDriver);webDriver.quit();}//测试账号为空@Testpublic void loginFalse2() throws InterruptedException {WebDriver webDriver=new ChromeDriver();webDriver.get("http://124.223.101.247:8080/login.html");webDriver.findElement(By.cssSelector("#username")).sendKeys("");webDriver.findElement(By.cssSelector("#password")).sendKeys("12345");webDriver.findElement(By.cssSelector("#submit")).click();sleep(300);System.out.println(webDriver.switchTo().alert().getText());webDriver.switchTo().alert().accept();webDriver.quit();}@Testpublic void loginFalse3() throws InterruptedException {WebDriver webDriver=new ChromeDriver();webDriver.get("http://124.223.101.247:8080/login.html");webDriver.findElement(By.cssSelector("#username")).sendKeys("chen");webDriver.findElement(By.cssSelector("#password")).sendKeys("");webDriver.findElement(By.cssSelector("#submit")).click();sleep(300);System.out.println(webDriver.switchTo().alert().getText());webDriver.switchTo().alert().accept();webDriver.quit();}//测试回车键@Testpublic void loginFalse4() throws InterruptedException {WebDriver webDriver=new ChromeDriver();webDriver.get("http://124.223.101.247:8080/login.html");webDriver.findElement(By.cssSelector("#username")).sendKeys("chen");webDriver.findElement(By.cssSelector("#password")).sendKeys("12");webDriver.findElement(By.cssSelector("#password")).sendKeys(Keys.ENTER);sleep(300);String cur_url=webDriver.getCurrentUrl();Assertions.assertEquals("http://124.223.101.247:8080/login.html",cur_url);webDriver.quit();}
}

 MyblogListTests

package Blog;import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;import static java.lang.Thread.sleep;public class MyblogLitsTests extends Screen {//测试删除键是否可用@Testvoid DeleteButton() throws InterruptedException {WebDriver webDriver=new ChromeDriver();webDriver.get("http://124.223.101.247:8080/login.html");sleep(300);webDriver.findElement(By.cssSelector("#username")).sendKeys("chen");webDriver.findElement(By.cssSelector("#password")).sendKeys("12");webDriver.findElement(By.cssSelector("#submit")).click();sleep(300);webDriver.findElement(By.cssSelector("#artListDiv > div:nth-child(1) > a:nth-child(6)")).click();taskScreenShot(webDriver);webDriver.quit();}@Testvoid DetailButton() throws InterruptedException {WebDriver webDriver=new ChromeDriver();webDriver.get("http://124.223.101.247:8080/login.html");sleep(300);webDriver.findElement(By.cssSelector("#username")).sendKeys("chen");webDriver.findElement(By.cssSelector("#password")).sendKeys("12");webDriver.findElement(By.cssSelector("#submit")).click();sleep(300);webDriver.findElement(By.cssSelector("#artListDiv > div:nth-child(1) > a:nth-child(4)")).click();taskScreenShot(webDriver);webDriver.quit();}@Testvoid ModifyButton() throws InterruptedException {WebDriver webDriver=new ChromeDriver();webDriver.get("http://124.223.101.247:8080/login.html");sleep(300);webDriver.findElement(By.cssSelector("#username")).sendKeys("chen");webDriver.findElement(By.cssSelector("#password")).sendKeys("12");webDriver.findElement(By.cssSelector("#submit")).click();sleep(300);webDriver.findElement(By.cssSelector("#artListDiv > div:nth-child(1) > a:nth-child(5)")).click();taskScreenShot(webDriver);webDriver.quit();}
}

 QuiteTests

package Blog;import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;import static java.lang.Thread.sleep;public class QuiteTests extends Screen {@Testvoid quite() throws InterruptedException {WebDriver webDriver = new ChromeDriver();webDriver.get("http://124.223.101.247:8080/login.html");sleep(300);webDriver.findElement(By.cssSelector("#username")).sendKeys("chen");webDriver.findElement(By.cssSelector("#password")).sendKeys("12");webDriver.findElement(By.cssSelector("#submit")).click();sleep(300);webDriver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).click();webDriver.switchTo().alert().accept();taskScreenShot(webDriver);}
}

3.2 性能测试 

首先了解一点点概念。

性能测试定义:测试人员借助性能测试工具,模拟系统在不同场景下,对应的性能指标是否达到预期。

性能测试和功能测试的区别: 

功能测试:依靠人工执行

性能测试:依靠工具完成

功能测试:不管在什么场景下,只要能够正常运行即可

性能测试:软件在一些极端的情况下,是不是能够完成运行

影响一个软件性能因素有哪些?

硬件:服务器CPU利用率、内存、磁盘操作频率、CPU核心数

软件:算法、编程语言

用户:用户数量、用户使用时长、用户访问频率

面试题:你在做性能测试的时候,关注哪些指标?

并发用户数、响应时间/平均响应时间、事务响应时间、每秒事务通过数、点击率、吞吐量、思考时间、资源利用率

性能测试分类:

1.基准性能测试:让系统在正常情况下运行,观察软件性能指标(应用场景:软件刚上线需要性能摸底)

2.负载性能测试:验证软件在一定的压力情况下运行,观察性能指标是否出现了拐点

3.压力性能测试:系统处于饱和情况下,观察系统性能指标

4.可靠性能测试 :验证系统在一个持续的时间段内运行,在这个运行时间段,观察系统的性能指标

执行流程:需求分析->测试计划->选择一款性能测试工具->性能测试脚本编写->执行性能测试脚本

性能瓶颈是一定有的,只能不断优化。

我用的性能测试工具是LoadRunner,以下是LoadRunner的三大组件。

VUG:录制脚本

Controller:设计场景,运行场景

Analysis:产生性能测试报告

在loadrunner文件下载路径,找到WebTours文件夹,里面有一个文件名为StarServer.bat,双击进去,

接下来,又在WebTours下面找到conf文件夹里,能找到 httpd.conf文件。

在360浏览器中打开链接。

 我们可以注册账号。在安装路径下WebTours文件夹下cgi-bin文件夹下users文件夹下会存放我们的账号密码。

 打开VUG


http://www.ppmy.cn/news/1124550.html

相关文章

怎么将aac转换成mp3格式?

怎么将aac转换成mp3格式?AAC(它的全称为Advanced Audio Coding)是一种高级音频编码格式。它采用了数字音频压缩算法,旨在提供更高的音频质量和更低的比特率。AAC和Mp3一样都是一种有损压缩算法,通过移除人耳无法察觉的…

【Java】fastjson

Fastjson简介 Fastjson是阿里巴巴的团队开发的一款Java语言实现的JSON解析器和生成器,它具有简单易用、高性能、高可用性等优点,适用于Java开发中的数据解析和生成。Fastjson的主要特点包括: 简单易用:Fastjson提供了简单易用的…

ApiAdmin与ApiAdmin-WEB安装运行

环境配置见ApiAdmin前期环境搭建 一、ApiAdmin安装 phpstudy启动MySQL,Nginx,redis 新建数据库apiadmin,用户apiadmin,密码123456 项目运行时要在phpstudy中打开MySQL,Nginx,redis 1. 获取官方源代码 …

怎样提取视频中的音频?十秒教会你

怎么提取视频中的音频?我们平时在刷视频的时候会听到一些很好听的背景音乐,但有时候我们会发现有的背景音乐音源下载不了,而有的音频是别人自己制作的,根本没有地方可以下载音频,那么我们想要获得视频里的音频要怎么办…

windows下查看端口及占用端口的进程

1、使用命令查看端口,这里查看10000端口 netstat -aon|findstr "10000" 2、使用tasklist命令查看进程 tasklist|findstr "9640"

Hadoop分布式文件系统

一、Hadoop Hadoop之父Doug Cutting Hadoop的发音[hdu:p] ,Cutting儿子对玩具小象的昵称 1、Hadoop发展简史 2002年10月,Doug Cutting和Mike Cafarella创建了开源网页爬虫项目Nutch。2003年10月,Google发表Google File System论文。2004年…

vue3中使用element-plus Notification通知组件内容添加点击自定义事件

需求:点击element-plus Notification通知组件提示内容时,跳转到对应页面或执行某些逻辑。 const toTaskCenter () > {ElNotification.closeAll(); // 跳转前关闭通知router.push("/taskCenter/import"); };// 通过onClick属性绑定点击事…

WebGL 绘制圆形的点

目录 前言 如何实现圆形的点? 片元着色器内置变量(gl_FragCoord、gl_PointCoord) gl_PointCoord的含义 示例程序(RoundedPoint.js) 代码详解 前言 本文将讨论示例程序RoundedPoint,该程序绘制了圆…