基于jeeSite的软件测试课程作业 流程记录
2021-12-28
·
hexer

基于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");
}

image-20211227220438122

Jmeter

下载Jmeter和谷歌插件 BlazeMeter

在配置文件中修改编码集sampleresult.default.encoding=UTF-8防止乱码

直接写相当麻烦,使用blazemeter谷歌插件录制.jmx会快很多

selenium IDE差不多,也是录制

不过需要注册和登录才能下载.jmx

BlazeMeter插件是非常必要的,如果自己写消息头或者信息头之类的会非常麻烦,而且如果登录的信息是加密过的那就没办法写(JeeSite就是这样,下面是图片)

image-20211227214021991

选定业务

选取岗位管理模块的查看岗位,公司岗位的读取并使用jmeter测试

设计合适的负载模式,包括负载大小,加载方式

对于公司岗位的数据读取,使用

  • 单接口加压(起始人数50人,每隔60秒增加50人,加到200人为上限)

50人不断同时访问(线程数50),持续一段时间

在后台查看岗位数据时,人数一般不是很多,那么我们加大测试量,设置了10个线程,每个线程访问300次,共两个线程组

同时为了仿真,将第一个线程组持续1分钟,后一个线程组延后30s,持续30s

参考:

JMeter性能测试,完整入门篇

测试两种协议

http和jdbc

即网页访问测试和数据库读取信息测试

使用两种以上的断言

响应断言(相应的信息的筛选)

持续时间断言(相应多少时间)

json断言(我判断如果返回的数据是0就失败,json断言需要用到JOSNPath的特定语法)

json断言详解

对测试结果(表格和图形)进行分析

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

image-20211227220132305

image-20211227220155401

虚拟机网络设置

简单记录虚拟机安装的情况

启动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