基于jeeSite的软件测试课程作业
对jeesite进行单元测试,功能性测试,性能测试
jeeSite软件启动步骤
普通做法
进入root,命令行输入mvn install
配置数据库
创建数据库jeeSite
create database jeesite default charset 'utf8' collate 'utf8_general_ci';
在web下找到config目录并修改springboot配置文件的数据库密码
进入web/bin中,在命令行敲入.\init-data.bat
在/web
下输入mvn install
然后在target
目录下输入java -jar war.war
访问网页
http://localhost:8980/js
账号system
密码admin
IDEA做法
双击shift
,点击add maven ...
这个选项,然后把root下面的pom.xml
导入即可,如果springboot报错那就alt + enter
添加依赖,报错解决
selenium简单脚本编写
添加依赖
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
下面是打开浏览器并访问百度(示例)
package com.jeesite.selenium;
import org.junit.Test;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* @Description:
* @Author: Cai
* @CreateTime: 2021/12/24
*/
public class ChromeTest {
@Test
public void openChrome() {
//打开浏览器
System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
ChromeDriver chromeDriver = new ChromeDriver();
//访问百度
chromeDriver.get("https://www.baidu.com");
}
}
使用selenium
需要下载chromedriver
步骤
- 创建一个新的
test
,输入所要测试的url,在右上方点击录制(它会自动打开浏览器到所需要的测试网页) - 点击浏览器,
selenium IDE
会自动记录你点击的地方(根据class,id,标签锁定) - 返回
selenium IDE
并结束录制 - 点击执行箭头即可执行刚刚录制的
可以使用selenium IDE
插件进行录制,然后导出成Junit即可,文件的后缀是.side
下面是导出的Junit示例,每个步骤相当于测试样例的步骤了
@Test
public void loginSuccess() {
// Test name: 正确登录
// Step # | name | target | value
// 1 | open | http://localhost:8980/js/a/login |
driver.get("http://localhost:8980/js/a/login");
// 2 | setWindowSize | 1552x840 |
driver.manage().window().setSize(new Dimension(1552, 840));
// 3 | click | css=.login-box |
driver.findElement(By.cssSelector(".login-box")).click();
// 4 | click | id=username |
driver.findElement(By.id("username")).click();
// 5 | type | id=username | system
driver.findElement(By.id("username")).sendKeys("system");
// 6 | click | id=password |
driver.findElement(By.id("password")).click();
// 7 | type | id=password | admin
driver.findElement(By.id("password")).sendKeys("admin");
// 8 | click | id=btnSubmit |
driver.findElement(By.id("btnSubmit")).click();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(driver.getCurrentUrl());
assertEquals(driver.getCurrentUrl(), "http://localhost:8980/js/a/index");
}
Jmeter
下载Jmeter
和谷歌插件 BlazeMeter
在配置文件中修改编码集sampleresult.default.encoding=UTF-8
防止乱码
直接写相当麻烦,使用blazemeter
谷歌插件录制.jmx
会快很多
和selenium IDE
差不多,也是录制
不过需要注册和登录才能下载.jmx
BlazeMeter
插件是非常必要的,如果自己写消息头或者信息头之类的会非常麻烦,而且如果登录的信息是加密过的那就没办法写(JeeSite就是这样,下面是图片)
选定业务
选取岗位管理模块的查看岗位,公司岗位的读取并使用jmeter
测试
设计合适的负载模式,包括负载大小,加载方式
对于公司岗位的数据读取,使用
- 单接口加压(起始人数50人,每隔60秒增加50人,加到200人为上限)
50人不断同时访问(线程数50),持续一段时间
在后台查看岗位数据时,人数一般不是很多,那么我们加大测试量,设置了10个线程,每个线程访问300次,共两个线程组
同时为了仿真,将第一个线程组持续1分钟,后一个线程组延后30s,持续30s
参考:
测试两种协议
http和jdbc
即网页访问测试和数据库读取信息测试
使用两种以上的断言
响应断言(相应的信息的筛选)
持续时间断言(相应多少时间)
json断言(我判断如果返回的数据是0就失败,json断言需要用到JOSNPath的特定语法)
对测试结果(表格和图形)进行分析
Jmeter可以将测试结果导出成图形和表格
导出数据
jmeter -n -t test.jmx -l ../log.txt -e -o ../
-n 无图形化运行
-t 被运行脚本
-l 将运行信息写入日志文件
-e 生成测试报告
-o 指定报告输出目录
出现类似这样即成功
Dec 26, 2021 8:52:55 PM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
Creating summariser <summary>
Created the tree successfully using test.jmx
Starting standalone test @ Sun Dec 26 20:52:55 CST 2021 (1640523175609)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary + 2 in 00:00:04 = 0.4/s Avg: 52 Min: 35 Max: 69 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
summary + 18 in 00:00:27 = 0.7/s Avg: 54 Min: 4 Max: 483 Err: 1 (5.56%) Active: 0 Started: 5 Finished: 5
summary = 20 in 00:00:32 = 0.6/s Avg: 54 Min: 4 Max: 483 Err: 1 (5.00%)
Tidying up ... @ Sun Dec 26 20:53:27 CST 2021 (1640523207851)
... end of run
安全性测试
暂无
Jenkins
Jenkins集成的部分可以看Jenkins 个人搭建流程记录 集成邮件系统(qq邮箱),gitlab服务器,freestyle风格〰 [[4 public/blog/技术/Jenkins 个人搭建流程记录 集成邮件系统(qq邮箱),gitlab服务器,freestyle风格]]
插件下载Violations plugin
解释一下我做的
graph LR
a(本机) --> |将源代码提交到gitLab上面| b(虚拟机)
b --> |Jenkins拉取gitlab镜像| a
a --> |部署到云服务器| c(实际部署的云服务器)
本地部署了Jenkins,安装了JDK8,Maven3.8,源代码也放在本地,实际上要放在另一台服务器
虚拟机,安装了gitlab服务器,使用NAT本地可以访问虚拟机的gitlab
虚拟机网络设置
简单记录虚拟机安装的情况
启动gitlab服务
sudo gitlab-ctl start
gitlab服务停止
sudo gitlab-ctl stop
重启gitlab服务
sudo gitlab-ctl restart
停止并禁用虚拟机 NetworkManager 服务
systemctl stop NetworkManager
systemctl disable NetworkManager
重启网络服务
service network restart