提交 f70f2272 authored 作者: 黄承天's avatar 黄承天

详细设计更新

上级 9df8ed0e
...@@ -12,6 +12,9 @@ import java.nio.charset.StandardCharsets; ...@@ -12,6 +12,9 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.List; import java.util.List;
import java.util.Objects;
import static java.util.Objects.isNull;
/** /**
* <p>Description : measurement * <p>Description : measurement
...@@ -113,10 +116,10 @@ public class FileUtil { ...@@ -113,10 +116,10 @@ public class FileUtil {
List<Measure> measures = reportVo.getMeasures(); List<Measure> measures = reportVo.getMeasures();
for (Measure measure : measures) { for (Measure measure : measures) {
String row = rowTemp String row = rowTemp
.replace("#{order}", measure.getOrder().toString()) .replace("#{order}", isNull(measure.getOrder()) ? "" : measure.getOrder().toString())
.replace("#{title}", measure.getTitle()) .replace("#{title}", isNull(measure.getTitle()) ? "" : measure.getTitle())
.replace("#{expected}", measure.getExpected()) .replace("#{expected}", isNull(measure.getExpected()) ? "" : measure.getExpected())
.replace("#{practice}", measure.getPractice()) .replace("#{practice}", isNull(measure.getPractice()) ? "" : measure.getPractice())
.replace("#{success}", measure.getSuccess() ? "成功" : "失败") .replace("#{success}", measure.getSuccess() ? "成功" : "失败")
.replace("#{message}", measure.getMessage()); .replace("#{message}", measure.getMessage());
content.append(row); content.append(row);
...@@ -139,7 +142,7 @@ public class FileUtil { ...@@ -139,7 +142,7 @@ public class FileUtil {
i = bis.read(buffer); i = bis.read(buffer);
} }
} catch (Exception e) { } catch (Exception e) {
log.error("error:{}", e.getMessage()); log.error("error:" + e);
} finally { } finally {
if (bis != null) { if (bis != null) {
try { try {
......
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon.ico><title>adapter</title><link href=static/css/serviceConfig.f14ab9ce.css rel=prefetch><link href=static/js/serviceConfig.767d4038.js rel=prefetch><link href=static/css/app.f596fcc9.css rel=preload as=style><link href=static/css/chunk-vendors.717c90ab.css rel=preload as=style><link href=static/js/app.80934e38.js rel=preload as=script><link href=static/js/chunk-vendors.5f648e7a.js rel=preload as=script><link href=static/css/chunk-vendors.717c90ab.css rel=stylesheet><link href=static/css/app.f596fcc9.css rel=stylesheet></head><body><noscript><strong>We're sorry but adapter doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=static/js/chunk-vendors.5f648e7a.js></script><script src=static/js/app.80934e38.js></script></body></html> <!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon.ico><title>adapter</title><link href=static/css/serviceConfig.c2069076.css rel=prefetch><link href=static/js/serviceConfig.f214e3f3.js rel=prefetch><link href=static/css/app.f596fcc9.css rel=preload as=style><link href=static/css/chunk-vendors.717c90ab.css rel=preload as=style><link href=static/js/app.4f323ca6.js rel=preload as=script><link href=static/js/chunk-vendors.5f648e7a.js rel=preload as=script><link href=static/css/chunk-vendors.717c90ab.css rel=stylesheet><link href=static/css/app.f596fcc9.css rel=stylesheet></head><body><noscript><strong>We're sorry but adapter doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=static/js/chunk-vendors.5f648e7a.js></script><script src=static/js/app.4f323ca6.js></script></body></html>
\ No newline at end of file \ No newline at end of file
## 自动测试模块-设计文档 ## 自动测试-详细设计
### 概述 ### 概述
自动测试模块是一个独立的微服务。 自动测试模块是一个独立的微服务。
它的作用是对于特定的系统,在特定的运行环境下(包括操作系统、浏览器版本)是否可以正常运作 它的作用是对于特定的系统,在特定的运行环境下(包括操作系统、浏览器版本)是否可以正常运作进行自动测试并进行评价
它的根本功能需求,可以概括为3步: 最核心功能,可以概括为3步:
- 事先写好测试用例 - 事先写好测试用例
- 由程序来执行测试用例 - 由程序来执行测试用例
- 输出测试报告 - 输出测试报告
### 总体设计 ### 总体设计
使用Spring Boot框架。 使用Spring Boot框架。
使用mysql作为数据库,存储测试用例数据与测试报告数据。 使用MySQL作为数据库,存储测试用例数据与测试报告数据。
以restful接口形式对外提供其功能,数据格式采用json格式。
分为2个模块:用户模块、测试模块。
其优点可以概括为以下2点:
- 运行环境已经配好,用户可以直接使用。
- 只要配置好测试用例后,一键便可执行整套测试用例完成对系统的测试。
### 功能设计
功能设计按模块划分。
#### 用户模块
首先展示的是登录页面,可在此进入注册、登录和找回密码。登录成功后在用户的总览操作页面可进行修改密码和退出登录。
##### 登录
若已有注册好的账号则可以直接输入用户名、密码进行登录。
##### 注册
注册需要填写的内容有用户名、密码、身份证号、手机号。
##### 找回密码
方案1:需要填写身份证号、手机号和新密码。确认身份证号和手机无误后即可。
方案2:需要填写身份证号、手机号、验证码和新密码。以确认身份证号无误为前提,进行手机验证码发送的机制。
方案3:需要填写身份证号、手机号、验证码和新密码。以确认身份证号和手机无误为前提,进行生成图片验证码的机制。
##### 修改密码
需要填写旧密码和新密码,确认旧密码无误后可成功修改为新密码。
##### 退出登录
退出当前登录的用户。
#### 测试模块
登录成功后进入该用户的总览操作页面,用户可以在总览页面中看到自己的**测试系统**列表,对自己的**测试系统**进行管理。
##### 打开测试系统
打开选中的测试系统,可以进行测试用例、测试报告的管理和使用。
测试用例:包含一系列自动化的浏览器操作,也就是描述了一套测试过程的数据。需要填写标题、地址并选择运行的浏览器,然后添加测试步骤。测试用例可以添加、修改、删除、执行。也可以一键执行测试系统下的所有测试用例。
测试步骤:步骤代表的是一个单独的操作。可以是对页面上某个元素的操作,也可以是不针对元素的返回、前进之类的操作。多个步骤组合起来形成一个测试用例。测试步骤可以在测试用例的详情窗口中添加、修改、删除。
测试报告:由测试用例执行后生成,内容包括测试用例的基本信息以及每个步骤的标题、是否成功的结果、相关信息。每个测试用例所生成的测试报告会被归在这个测试用例下。测试报告可以查看、删除、以html文件形式下载。
##### 删除测试系统
删除测试系统的同时会删除其中的所有测试用例和测试报告。
### 使用技术
#### MySQL
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库
内,这样就增加了速度并提高了灵活性。也是现今常用的一种数据库了。
以restful接口形式对外提供其功能,包括:测试用例的增删改查、测试用例的执行、测试报告的查询。 #### Selenium
数据格式采用json格式 Selenium是一个用于Web应用程序测试的工具
使用selenium组件实现测试用例的执行,该组件依赖对应的驱动程序 Selenium测试直接运行在浏览器中,就像真正的用户在操作一样
#### 关于测试用例 支持的浏览器包括IE,Firefox,Safari,Google Chrome,Opera等。
- 测试用例就是类似于脚本,用于解释整个测试过程的数据。 这个工具的主要功能包括:
- 测试用例是事先写好的,针对性很高,需要提前对网站系统做充分的了解,包括各种元素的:
- 定位方式(id、class、xpath、css)
- 操作类型(输入、点击、切换、初始)
- 预期结果(根据某个元素的值来判断是否输入成功、根据点击后的页面标题来判断是否跳转成功)。
- 测试用例的编写并非由客户来做,而是由专门的人来写。
- 程序根据测试用例来实现自动测试。
- 根据实际结果与期望结果是否一致来判断当前步骤是否成功,最终输出测试报告。
#### 关于Selenium 测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。
这是本项目所使用的组件,用它实现的网页自动化测试功能 测试系统功能——创建回归测试检验软件功能和用户需求
在运行时需要与浏览器版本对应的驱动程序(否则会出错),放在项目同目录下即可。 这是本项目实现自动测试的核心组件。在运行时需要与浏览器版本对应的驱动程序(否则会出错),放在项目同目录下即可。
##### 驱动程序下载地址 ##### 驱动程序下载地址
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论