基于 Spring MVC 的开源测试用例管理系统以及开发自测的实践
早前公司领导提出让开发自测,测试么也做做开发。当然了,为了保证自测质量,测试用例仍需测试提供,所以为了提高开发自测的效率和质量,我们开发了捉虫记。
捉虫记是一个完整的Spring MVC项目,现已开源,希望感兴趣的可以一起完善(详见Todo List)
项目地址:youzan/bugCatcher
捉虫记
[ Spring | Spring MVC | Mybatis | Spring Security | jQuery | Bootstrap ]
捉虫记简介
捉虫记 设计初衷是为了方便开发人员自测(当然了,对于需要自行完成测试的测试团队也是适用的),其主要特性为:
- 项目管理 :由需求方发起项目,并按照
瀑布流软件开发模型跟踪整个项目的完成情况; - 用例管理 :方便添加和管理测试用例,也支持Excel、Xmind等文件形式的用例上传,支持用例筛选,并为项目分配需要执行的用例;
- 项目质量报表 :报表以时间线的方式展示各个项目的质量变化;
- 自测质量排名 :以积分排名的方式展示项目成员自测质量高低;
- 精细化的权限控制 :精细的角色分离(产品、开发、测试),提供精细化的权限控制,某角色可以做什么,不可以做什么一目了然;
典型使用场景
提示:具体可参考下面
典型场景使用图示一节,但是什么角色做什么不是绝对的,可以根据团队实际情况调整,比如,可以由测试人员发起项目。
使用方法
环境依赖
- 系统:Linux
- 语言:Java (Version>1.8)
- 数据库:Mysql
- 其他工具:Maven
初始化
修改pfcase-schema.sql中的admin账号的密码和E-mail地址(bugCatcher/src/main/resources/database/pfcase-schema.sql)
INSERT INTO signon VALUES('admin','Your Password');
INSERT INTO account VALUES('admin','Your E-mail address','admin');
修改jdbc.properties中的mysql配置(bugCatcher/src/main/resources/orm/jdbc.properties)
# local
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://<mysql host>:<mysql 端口>/pfcase
jdbc.username=<mysql 用户名>
jdbc.password=<mysql 密码>
修改setup.sh中的mysql配置(bugCatcher/setup.sh)
#!/usr/bin/env bash
mkdir ~/fileupload
mysql -h <mysql host> -P <mysql 端口> -u <mysql 用户名> -p<mysql 密码> < <上述pfcase-schema.sql文件的绝对路径>
执行setup.sh完成初始化
启动
mvn tomcat7:run -Dmaven.tomcat.port=<端口号> &
提示:
<端口号>设置为任意未被占用的端口即可
以部署在本机8080端口为例,打开 http://localhost:8080/ 即能打开捉虫记登录页面
典型场景使用图示
新用户注册
角色-功能对照表
| 角色/功能 | 我的任务 | 执行用例 | 执行评价 | 新建任务 | 新建用例 | 查看用例 | 分配用例 | 上传用例 | 执行质量 | 华山论剑 |
|---|---|---|---|---|---|---|---|---|---|---|
| 测试 | 展示所有人的任务 | — | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| 开发 | 只展示自己的任务 | ○ | — | ○ | ○ | ○ | ○ | ○ | ○ | — |
| 产品 | 只展示自己的任务 | — | — | ○ | ○ | ○ | — | ○ | ○ | — |
| admin | 展示所有人的任务 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
admin:内置账户,拥有最高权限,可以做任何操作,慎用。
产品发起项目,指定项目开发人员:
测试设计用例,将相关用例分配给该项目的开发人员:
新建用例,模块支持新建或者选择已有的:
选择项目,勾选该项目需要执行的用例并分配(用例支持按指定条件搜索/筛选):
捉虫记也支持Excel、Xmind等文件形式的用例上传,但仅做备份用例使用:
开发人员执行用例
执行一条,已执行栏目下勾选一条:
测试检查开发人员用例执行情况并给出评价
测试人员一条条检查下去,功能无误点击good按钮,执行不到位点击bad按钮(可以将bug链接填写上去),当项目下的用例全部执行完成以后会在项目概况下自动打分
项目自测质量的打分会以图表的形式展现
华山论剑
此栏目主要对执行用例的开发人员进行自测质量评价,评分有A(+20)/ B(+10)/ C(-10)三个等级,具体评价标准可以自行定义,最终会给所有人员一个积分排名
Todo List
- bug管理与跟踪
- 。。。
反馈与建议
- 邮箱:canyuns【@】163.com
基于 Spring MVC 的开源测试用例管理系统以及开发自测的实践的更多相关文章
- 基于Spring MVC的Web应用开发(三) - Resources
基于Spring MVC的Web应用开发(3) - Resources 上一篇介绍了在基于Spring MVC的Web项目中加入日志,本文介绍Spring MVC如何处理资源文件. 注意到本项目的we ...
- 基于Spring MVC 实现拦截器
Spring MVC 拦截器 一,具体内容: 在所有的开发之中拦截器属于一个重要的组件,可以说几乎所有的项目都会提供的概念应用,不管是Spring MVC,还是Struts 2.x都是提供有拦截器的, ...
- 基于spring mvc的图片验证码实现
本文实现基于spring mvc的图片验证码,分后台代码和前端页面的展现以及验证码的验证. 首看后台实现代码: @RequestMapping({"authCode"}) publ ...
- Spring MVC第一课:用IDEA构建一个基于Spring MVC, Hibernate, My SQL的Maven项目
作为一个Spring MVC新手最基本的功夫就是学会如何使用开发工具创建一个完整的Spring MVC项目,本文站在一个新手的角度讲述如何一步一步创建一个基于Spring MVC, Hibernate ...
- 基于Spring Mvc实现的Excel文件上传下载
最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring ...
- 如何开始创建第一个基于Spring MVC的Controller
万事开头难,良好的开端是成功的一半! 以下示例怎么开始创建我们的第一个Spring MVC控制器Controller 1.新建一个java类,命名为:MyFirstController,包含以下代码, ...
- 基于spring mvc的注解DEMO完整例子
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件.本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mv ...
- 文件上传--基于Spring MVC框架+SmartUpload
这篇文章是介绍文件上传的,由于在spring MVC上实现起来和直接在servlet中写有些不同,所以特地写了一下这篇文章,关于不同点,大家可以先阅读一下上一篇文章.好了,下面直接上代码. jab包是 ...
- 基于Spring MVC的文件上传和下载功能的实现
配置文件中配置扫描包,以便创建各个类的bean对象 <context:component-scan base-package="com.neuedu.spring_mvc"& ...
随机推荐
- BZOJ 4086: [Sdoi2015]travel(SDOI2015 round2 day1)(分类讨论+容斥原理)
描述:给定一张图(n<1000,m<5000)求有多少点对u,v有不重复经过其他点,共经过k个点的路径.(k<=7) 这个做法应该不是正解吧..顺便说下SDOI的几道题在BZ上都要卡 ...
- Hadoop学习笔记:使用Mrjob框架编写MapReduce
1.mrjob介绍 一个通过mapreduce编程接口(streamming)扩展出来的Python编程框架. 2.安装方法 pip install mrjob,略.初学,叙述的可能不是很细致,可以加 ...
- STM32按键控制程序
由于最近时间比较匆忙 已经有很久的时间没有写博客了 这次和大家分享的是STM32的一个按键的小程序 他的优点呢也是和上面一个LED一样就是便于移植 更改管脚方便 虽然都是些小程序 但是我觉得他们就像基 ...
- Linux Bash Shell入门教程
Linux 系统根据 "#!" 及该字串后面的信息确定该文件的类型,关于这一问题同学们回去以后可以通过 "man magic"命令 及 /usr/share/m ...
- Redis【第二篇】集群搭建
第一步:准备 1.安装包 ruby-2.4.0.tar.gz rubygems-2.6.10.tgz zlib-1.2.11.tar.gz redis-3.3.2.gem 2. 架构: 名称 IP 端 ...
- 探究CSS中的包裹性
之前一直都知道css中的部分元素具有包裹性,今天写博客的时候正好也遇到了一个,所以想总结一下,有错误的地方欢迎指出来. 什么是包裹性? 包裹性就是父元素的宽度会收缩到和内部元素宽度一样. 哪些元素具有 ...
- [LeetCode] Is Subsequence 题解
前言 这道题的实现方法有很多,包括dp,贪心算法,二分搜索,普通实现等等. 题目 Given a string s and a string t, check if s is subsequence ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(八)mysql中文查询bug修复
写在前面的话 在测试搜索时出现的问题,mysql通过中文查询条件搜索不出数据,但是英文和数字可以搜索到记录,中文无返回记录.本文就是写一下发现问题的过程及解决方法.此bug在第一个项目中点这里还存在, ...
- js实现浏览器添加收藏功能
今天搞项目的时候为了实现浏览者实现添加收藏的功能,特地了解了一下相关的API. 也看到了网上各种版本的代码.整理了一下,代码如下.简单易懂. <script> function _addF ...
- 锋利的jQuery事件
一:事件 1.鼠标事件 (1)$()是$(document)的简写,默认参数是document. $(function(){}是$(document).ready(function(){})的简写. ...