# TestReportPlatform **Repository Path**: cabehow/TestReportPlatform ## Basic Information - **Project Name**: TestReportPlatform - **Description**: 实训 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-05-28 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## TestReportPlatform ### 项目结构 ``` TestReportPlatform ├── README.md // 项目总体说明文档 ├── pom.xml // maven依赖配置文件 └── src/main ├── java/com/lenovo // 项目后端代码 │ ├── SpringMvcConfig.java // 拦截器配置类,用于登录判断,权限拦截 │ ├── GitCodeStatDataSourceConfig.java // 多数据源的配置类(gitcodestat库) │ ├── LenovoDataSourceConfig.java // 多数据源的配置类(lenovo库) │ ├── TestreportApplication.java // Spring boot入口类 │ ├── codestatreport // 使用gitcodestat数据库 │ │ ├── git // github平台代码统计 │ │ │ ├── controller │ │ │ │ ├── CodeStatOnlyMasterController.java │ │ │ │ └── GitJiraNameRelationshipController.java │ │ │ ├── mapper │ │ │ │ ├── CodeStatOnlyMasterMapper.java │ │ │ │ └── GitJiraNameRelationshipMapper.java │ │ │ ├── model │ │ │ │ ├── CodeStatOnlyMaster.java │ │ │ │ └── GitJiraNameRelationship.java │ │ │ └── service │ │ │ ├── CodeStatOnlyMasterService.java │ │ │ ├── CodeStatOnlyMasterServiceImpl.java │ │ │ ├── GitJiraNameRelationshipService.java │ │ │ └── GitJiraNameRelationshipServiceImpl.java │ │ └── jira ······//功能未完成 // jira平台bug统计 │ ├── interceptor // 各种拦截器 │ │ ├── tools │ │ │ ├── CheckToken.java // 检查tokn的工具类 │ │ │ └── GetCookieVallue.java // 获取cookie的工具类 │ │ ├── AllReportInterceptor.java │ │ ├── EmailInterceptor.java │ │ ├── FeedBackInterceptor.java │ │ ├── GeneralInterceptor.java │ │ ├── GeneralInterceptor2.java │ │ ├── GeneralInterceptor3.java │ │ ├── IfPermission.java │ │ ├── JekinsBuildInterceptor.java │ │ ├── JekinsInterceptor.java │ │ ├── MessageInterceptor.java │ │ └── UserInterceptor.java │ ├── session │ │ └── LevelControl.java // 权限检测类 │ ├── testreport // 使用lenovo数据库 │ │ ├── general │ │ │ ├── controller │ │ │ │ └── index.java // 基础处理器(主界面,登录,注册) │ │ │ └── service // 为case和report提供通用的Service层接口 │ │ │ ├── GeneralCaseService.java │ │ │ └── GeneralReportService.java │ │ ├── gray/web // 灰度环境:Web端语言环境测试 │ │ │ ├── compatibility │ │ │ └── languageTest │ │ │ ├── controller │ │ │ │ ├── GrayWebCaseController.java │ │ │ │ ├── GrayWebDetailController.java │ │ │ │ └── GrayWebReportController.java │ │ │ ├── mapper │ │ │ │ ├── GrayWebLanguageEnglishPropertiesCaseMapper.java │ │ │ │ ├── GrayWebLanguageEnglishPropertiesReportMapper.java │ │ │ │ ├── GrayWebLanguageTraditionalPropertiesCaseMapper.java │ │ │ │ └── GrayWebLanguageTraditionalPropertiesReportMapper.java │ │ │ ├── model │ │ │ │ ├── GrayWebLanguageEnglishPropertiesCase.java │ │ │ │ ├── GrayWebLanguageEnglishPropertiesCaseExample.java │ │ │ │ ├── GrayWebLanguageEnglishPropertiesReport.java │ │ │ │ ├── GrayWebLanguageEnglishPropertiesReportExample.java │ │ │ │ ├── GrayWebLanguageTraditionalPropertiesCase.java │ │ │ │ ├── GrayWebLanguageTraditionalPropertiesCaseExample.java │ │ │ │ ├── GrayWebLanguageTraditionalPropertiesReport.java │ │ │ │ └── GrayWebLanguageTraditionalPropertiesReportExample.java │ │ │ └── service │ │ │ ├── GrayWebLanguageEnglishPropertiesCaseServiceImpl.java │ │ │ ├── GrayWebLanguageEnglishPropertiesReportServiceImpl.java │ │ │ ├── GrayWebLanguageTraditionalPropertiesCaseServiceImpl.java │ │ │ └── GrayWebLanguageTraditionalPropertiesReportServiceImpl.java │ │ ├── jenkins // Jenkins相关 │ │ │ ├── controller │ │ │ │ └── ExecutorJenkins.java │ │ │ ├── model │ │ │ │ └── Job.java │ │ │ ├── service │ │ │ │ ├── jenkinsService.java │ │ │ │ └── jenkinsServiceImpl.java │ │ │ ├── DownloadFormJenkins.java │ │ │ └── JekinsApi.java │ │ ├── online/web/smoke │ │ │ ├── controller │ │ │ │ ├── OnlineWebCaseController.java │ │ │ │ ├── OnlineWebDetailController.java │ │ │ │ └── OnlineWebReportController.java // 所有的findAllVersion,和大部 │ │ │ ├── mapper // 分的findReportByTime │ │ │ │ ├── OnlineWebSmokeCaseMapper.java │ │ │ │ └── OnlineWebSmokeReportMapper.java // 定义访问数据库的接口 │ │ │ ├── model │ │ │ │ ├── OnlineWebSmokeCase.java │ │ │ │ └── OnlineWebSmokeReport.java │ │ │ └── service │ │ │ ├── OnlineWebSmokeCaseService.java │ │ │ ├── OnlineWebSmokeReportService.java │ │ │ ├── OnlineWebSmokeCaseServiceImpl.java │ │ │ └── OnlineWebSmokeReportServiceImpl.java │ │ ├── qa/web │ │ │ ├── compatibility │ │ │ │ ├── controller │ │ │ │ │ ├── QaWebCaseController.java │ │ │ │ │ ├── QaWebDetailController.java │ │ │ │ │ └── QaWebReportController.java │ │ │ │ ├── mapper │ │ │ │ │ ├── QaWebCompatibilityCaseMapper.java │ │ │ │ │ ├── QaWebCompatibilityReportMapper.java │ │ │ │ ├── model │ │ │ │ │ ├── QaWebCompatibilityCase.java │ │ │ │ │ ├── QaWebCompatibilityCaseExample.java │ │ │ │ │ ├── QaWebCompatibilityReport.java │ │ │ │ │ └── QaWebCompatibilityReportExample.java │ │ │ │ └── service │ │ │ │ ├── QaWebCompatibilityCaseService.java │ │ │ │ ├── QaWebCompatibilityCaseServiceImpl.java │ │ │ │ ├── QaWebCompatibilityReportService.java │ │ │ │ └── QaWebCompatibilityReportServiceImpl.java │ │ │ └── languagetestbypage // QA环境,灰度环境:Web端语言环境测试 │ │ │ ├── controller │ │ │ │ ├── QaWebLanguageCaseController.java │ │ │ │ ├── QaWebLanguageDetailController.java │ │ │ │ └── QaWebLanguageReportController.java │ │ │ ├── mapper │ │ │ │ ├── QaWebLanguageEnglishCaseMapper.java │ │ │ │ ├── QaWebLanguageEnglishReportMapper.java │ │ │ ├── model │ │ │ │ ├── QaWebLanguageEnglishCase.java │ │ │ │ ├── QaWebLanguageEnglishCaseExample.java │ │ │ │ ├── QaWebLanguageEnglishCaseWithBLOBs.java │ │ │ │ ├── QaWebLanguageEnglishReport.java │ │ │ │ └── QaWebLanguageEnglishReportExample.java │ │ │ └── service │ │ │ ├── QaWebLanguageCaseService.java │ │ │ ├── QaWebLanguageCaseServiceImpl.java │ │ │ ├── QaWebLanguageReportService.java │ │ │ └── QaWebLanguageReportServiceImpl.java │ │ ├── test.server.api // 各端全接口测试 │ │ │ ├── controller │ │ │ │ ├── CaseController.java │ │ │ │ ├── DetailController.java │ │ │ │ └── ReportController.java │ │ │ ├── mapper │ │ │ │ ├── TestServiceApiCaseMapper.java │ │ │ │ └── TestServiceApiReportMapper.java │ │ │ ├── model │ │ │ │ ├── TestServiceApiCase.java │ │ │ │ ├── TestServiceApiCaseExample.java │ │ │ │ ├── TestServiceApiCaseWithBLOBs.java │ │ │ │ ├── TestServiceApiReport.java │ │ │ │ └── TestServiceApiReportExample.java │ │ │ └── service │ │ │ ├── CaseServiceImpl.java │ │ │ └── ReportServiceImpl.java │ │ └── user // 用户相关的操作(登录等) │ │ ├── controller │ │ │ ├── FindAndUpdate.java │ │ │ ├── LoginAndRegister.java │ │ │ ├── MessageRecord.java │ │ │ └── Question.java │ │ ├── mapper │ │ │ ├── FeedbackMapper2.java │ │ │ ├── MessageCenterMapper.java │ │ │ └── UserinfoMapper2.java │ │ ├── model │ │ │ ├── FeedBack.java │ │ │ ├── FeedBackExample.java │ │ │ ├── MessageCenter.java │ │ │ ├── MessageCenterExample.java │ │ │ ├── Userinfo.java │ │ │ └── UserinfoExample.java │ │ └── service │ │ ├── MessageService.java │ │ ├── MessageServiceImpl.java │ │ ├── RedisUserService.java │ │ ├── RedisUserServiceImpl.java │ │ ├── UserService.java │ │ └── userServiceImpl.java │ └── utils // 工具类,用来解决一些公用的问题 │ └── Utils │ └── resources // 资源文件以及模版引擎 ├── application.properities // Spring Boot配置文件 ├── favicon.ico ├── Config │ └── JobFilter.txt // Jenkins相关Job的过滤器 ├── mapper │ ├── gitCodeStatDatabase // 使用gitcodestat数据库的xml文件 │ │ └── ······ │ └── lenovoDatabase // 使用lenovo数据库的xml文件 │ └── ······ ├── static └── templates // 模版文件(界面) ├── css │ └── ······ ├── error // 出错时展示界面 │ └── ······ ├── html // 包含html页面 │ ├── report_list // 对应“查看报告”tab │ ├── third_platform // 对应“第三方平台”tab │ ├── settings // 对应“用户设置”tab │ ├── questions // 对应“反馈”tab │ └── jenkins // 对应“Job列表”tab ├── images // 图片资源 │ └── ······ ├── scripts // js文件储存位置 │ └── ······ ├── style/authority │ └── ······ ├── index.html // 基本界面 ├── login.html // 登录界面 ├── register.html // 注册界面 └── introduce.html // 介绍页面 ``` ### 环境要求: 本项目使用的技术环境为:Spring Boot(2.1.4),Theme Leaf,Mybatis3,Mysql,Redis 开发工具使用Intellij IDEA,jdk版本为1.8 项目采用经典的MVC架构,许多包结构相似,如下: ``` package ├── controller // 控制器,控制模型与视图的交互逻辑 │ └── ··· ├── mapper // 用来进行与数据库的访问操作(dao) │ ├── xxx.java // 定义进行数据库操作的接口 │ └── xxx.xml // 编写xxx.java定义的方法的具体实现(sql语句),现在统一移到resources │ // 下的mapper目录 ├── model // 模型层,用于数据持久化 │ └── ··· └── service // 业务层,封装通用业务逻辑(使用一个或多个模型操作的方法) └── ··· // 通常包含多个Service接口及其对应的Impl实现 ``` 一般情况下,controller不直接调用mapper中的方法,而是通过使用service层封装的方法来达成目的(解耦) `pom.xml` 是 maven 依赖配置文件。 `TestreportApplication.java`是Spring Boot的入口类 `SpringMvcConfig.java`定义了拦截器,`interceptor`包是其具体实现 `GitCodeStatDataSourceConfig`和`LenovoDataSourceConfig`是多数据源的配置文件,此外注意在入口类关闭一些springboot的自动配置 ------ ------ ### 接口文档 所有请求都需要添加请求头: | 请求头 | 描述 | | ------ | ------------------------------------------------------------ | | Cookie | JSESSIONID=xxx;Lenovo-sessionId=xxx(二者值相同,且缺一不可) | #### testreport部分 1.[POST] `/.*?/FindAllReportByTime` 查询某段时间内某张表的所有report记录信息 | 参数 | 类型 | 描述 | 是否非空 | | --------- | ------ | -------------------------------- | -------- | | tablename | string | 表名,决定程序从哪一张表读取数据 | 是 | | start | string | yyyy-MM-dd形式,开始时间 | 是 | | end | string | yyyy-MM-dd形式,结束时间 | 是 | | version | string | 从视图层选取得到 | 否 | 返回值 ```json [ { "rid": 142, "type": "服务端", "version": "5.0.8", "jobname": "公有网盘接口自动化测试", "casenum": 249, "successnum": 248, "failnum": 1, "reporttime": "2019-06-05 23:03:58.0" }, ] ``` 2.[POST] `/.*?/FindAllVersion` 查询某张表中全部的版本信息 | 参数 | 类型 | 描述 | 是否非空 | | --------- | ------ | -------------------------------- | -------- | | tablename | string | 表名,决定程序从哪一张表读取数据 | 是 | 返回值 ```json ["5.0.8","5.0.6","5.0.5"] ``` 3.[POST] `/.*?/FindByRid` 得到某项report包含的case信息 | 参数 | 类型 | 描述 | 是否非空 | | --------- | ------ | ---------------------------------- | -------- | | rid | int | report的id,每个report包含多条case | 是 | | tablename | string | 表名 | 是 | 返回值(一个html页面代码) 4.[POST] `/.*?/FindByCid` 得到某case的具体信息(detail) | 参数 | 类型 | 描述 | 是否非空 | | --------- | ------ | -------- | -------- | | cid | int | case的id | 是 | | tablename | string | 表名 | 是 | 返回值 ```json [ { "cid":36914, "rid":null, "api":"访问外链", "type":null, "path":null, "method":null, "statuscode":null, "ornot":null, "detail":"xxxxxx", "track":null } ] ``` 5.[POST]`/.*?/UpdateTrackBycid`发送问题跟进信息 | 参数 | 类型 | 描述 | 是否非空 | | --------- | ------ | -------------------------- | -------- | | cid | int | case的id | 是 | | tablename | string | 表名 | 是 | | track | string | 跟进的信息,由测试人员填写 | 是 | 6.[POST] `/.*?/SendEmail` 将日志发送到email | 参数 | 类型 | 描述 | 是否非空 | | --------- | ------ | --------- | -------- | | emailaddr | string | email地址 | 是 | | cid | int | case的id | 是 | | tablename | string | 表名 | 是 | 经过测试,得到每个tab和表名以及接口url的对应关系如下: ``` ###### 线上 - 服务端 - 全接口测试:`tablename: online_service_api_report` - [POST] /test/web/api/report/FindAllVersion - [POST] /test/web/api/report/FindAllReportByTime - Web端 - 冒烟测试:`tablename: online_web_smoke_report` - [POST] /online/report/FindAllVersion - [POST] /online/report/FindAllReportByTime - 核心功能测试:`tablename: online_web_core_report` - [POST] /online/report/FindAllVersion - [POST] /online/report/FindAllReportByTime - 兼容性测试:`tablename: online_web_compatibility_report` - [POST] /qa/report/FindAllVersion - [POST] /qa/report/FindAllReportByTime ###### TEST - 服务端 - 全接口测试:`tablename:test_service_api_report` - [POST] /online/report/FindAllVersion - [POST] /test/web/api/report/FindAllReportByTime - Web端 - 核心功能测试:`tablename:test_web_core_report` - [POST] /online/report/FindAllVersion - [POST] /online/report/FindAllReportByTime ###### QA - 服务端 - 全接口测试:`tablename:qa_service_api_report` - [POST] /online/report/FindAllVersion - [POST] /test/web/api/report/FindAllReportByTime - Web端: - 核心功能测试:`tablename:qa_web_core_report` - [POST] /online/report/FindAllVersion - [POST] /online/report/FindAllReportByTime - 语言环境测试 - English(Page):`tablename: qa_web_language_english_report` - [POST] /qa/web/languagebypage/report/FindAllVersion - [POST] /qa/web/languagebypage/report/FindAllReportByTime - 简体中文(Page):`tablename: qa_web_language_chinese_report` - [POST] /qa/web/languagebypage/report/FindAllVersion - [POST] /qa/web/languagebypage/report/FindAllReportByTime - 繁体中文(Page):`tablename: qa_web_language_traditional_report` - [POST] /qa/web/languagebypage/report/FindAllVersion - [POST] /qa/web/languagebypage/report/FindAllReportByTime ###### 灰度 - Web端 - 核心功能测试:`tablename: gray_web_core_report` - [POST] /online/report/FindAllVersion - [POST] /online/report/FindAllReportByTime - 兼容性测试:`tablename: gray_web_compatibility_report` - [POST] /qa/report/FindAllVersion - [POST] /qa/report/FindAllReportByTime - 语言环境测试 - English(Page):`tablename: gray_web_language_english_report` - [POST] /qa/web/languagebypage/report/FindAllVersion - [POST] /qa/web/languagebypage/report/FindAllReportByTime - 简体中文(Page):`tablename: gray_web_language_chinese_report` - [POST] /qa/web/languagebypage/report/FindAllVersion - [POST] /qa/web/languagebypage/report/FindAllReportByTime - 繁体中文(Page):`tablename: gray_web_language_traditional_report` - [POST] /qa/web/languagebypage/report/FindAllVersion - [POST] /qa/web/languagebypage/report/FindAllReportByTime - English(Properties):`tablename: gray_web_language_english_properties_report` - [POST] /gray/web/language/english/properties/FindAllVersion - [POST] /gray/web/language/english/properties/FindAllReportByTime - 中文繁体(Properties):`tablename: gray_web_language_traditional_properties_report` - [POST] /gray/web/language/tw/properties/FindAllVersion - [POST] /gray/web/language/tw/properties/FindAllReportByTime - Android端 - 核心功能测试:`tablename: gray_android_core_report` - [POST] /online/report/FindAllVersion - [POST] /online/report/FindAllReportByTime - iphone端 - 冒烟测试:`tablename: gray_iphone_smoke_report` - [POST] /online/report/FindAllVersion - [POST] /online/report/FindAllReportByTime ``` #### codestatreport部分 ###### git平台 1.[POST] `/staff/getAllStaff` 获取某一部门下所有员工 | 参数 | 类型 | 描述 | 是否非空 | | ---------- | ------ | -------- | -------- | | department | string | 部门信息 | 是 | 返回值 ```json [ { "gitname": "xxx" }, ] ``` 2.[POST] `/staff/getAllRelations` 获取员工的中文名、gitname和jiraname关系,不需要参数 返回值 ```json [ { "id": 1, "chineseName": "xxx", "gitName": "xxxgit@litsoft.com.cn", "jiraName": "xxxjira", "department": "客户端" }, ] ``` 3.[POST] `/codestat/only_master/getStatsByDepartmentByTime`通过部门和时间段查询master分支的数据 | 参数 | 类型 | 描述 | 是否非空 | | ---------- | ------ | ------------------------ | -------- | | department | string | 部门信息 | 是 | | start | string | yyyy-MM-dd形式,开始时间 | 是 | | end | string | yyyy-MM-dd形式,结束时间 | 是 | 返回值 ```json [ { "rd_name": "zhaohx@lenovocloud.com", "total_add_line": 176, "function_name": "codestat_web", "total_del_line": 87, "branch": "master", "total_line": 89, "total_commits": 29 }, ] ``` ###### jira平台