基于Session的测试管理

 
基于Session 的测试管理
陈能技
2007-8-10
 
原文:Session-Based Test Management - James Bach
 
用于度量和管理探索性测试的一个方法。
 
简述
Exploratory testing探索性测试是一种不用剧本,不用预先演练的测试。它的效率取决于几种无形的东西:测试员的技能、直觉、经验和追踪预感的能力。但是正是这些无形的东西使得我们的测试经理在解释测试结果的时候感到困惑。例如,当最后经理问到探索性测试员状态时,他们会得到这样的回答“啊,你知道…我测了在这测了一下、那测了一下,就是周围看看。”而且即使测试员记录了一些bug,经理也不清楚他们是怎样找到的。即使经理很有技巧地问测试员他们干了什么,测试员也许忘记了细节或不能大声地描述出他们的想法。
 
当我们为客户做探索性测试时也有这个问题。我们需要为我们的工作做出解释。我们需要给出反映我们实际工作的状态报告。我们需要显示出我们是有创造性的、熟练的探索者,产生一份探索行进的详细地图。
 
它是怎样工作的
我们发明了基于session的测试管理方法来使这些无形的东西更加实在。你可以认为它是结构化的探索性测试,当然看起来像是自相矛盾的,但是“结构化”不是指测试是剧本化的。它是指我们对什么工作要做和怎样报告有一定的期望。在录音室,工作是在“Session”中完成的。一个Session从45分钟到几个小时不等,但是不管时间长短,它是花在测试上的Session章节的时间。 Jonathan Bach STQE 杂志写的一篇文章描述了 sessions 的本质内容。
 
在一个 Session 的最后,测试员提交一份 session 报告,附上关于他们工作的重要信息。这里有一个例子:
CHARTER
-----------------------------------------------
Create a test coverage outline and risk list for DecideRight
#AREAS
DecideRight
OS | Win98
Build | 1.2
Strategy | Exploration & Analysis
START
-----------------------------------------------
4/16/01 11:15pm
TESTER
-----------------------------------------------
Jonathan Bach
Tim Parkman
TASK BREAKDOWN
-----------------------------------------------
#DURATION
short
#TEST DESIGN AND EXECUTION
100
#BUG INVESTIGATION AND REPORTING
0
#SESSION SETUP
0
#CHARTER VS. OPPORTUNITY
100/0
DATA FILES
-----------------------------------------------
tco-jsb-010327-A.txt
rl-jsb-010327-A.txt
TEST NOTES
-----------------------------------------------
Tim and I walked through the User Guide table of contents and index to create the following TCO:
Operating Systems:
Win98
Win2000
General Features:

Installation
User Manual
Online Help
UI
Preferences
Prominent Windows:
Main Table window
Criteria Weights window
Option Ratings window
Documents window
Start-up window
Managers and Wizards:
DecideRight Advisor
Category Label Editor
Numeric Editor
Scenario Manager
Report Generator
QuickBuild
Decision Elements:
Language Elements
Preferences
Sensitivity Indicators
Weighting
Input Options
Decision Table
Options Ratings
Baseline
Interoperability:
OLE
Import / Export
Graphs
Printing
BUGS
-----------------------------------------------
#N/A
ISSUES
-----------------------------------------------
#ISSUE
Manual mentions different platforms (Win 3.1, WFW, and WinNT 3.51) and does not mention Win2000. We think Win 2000 is important to test on and that the older OSes are no longer meaningful.
#ISSUE
We did this analysis on Win98. I have no data to suggest that features may be different on other operating systems, but I'm not sure about that.
 
Session 度量
Session度量是表达探索性测试过程的状态的主要方法。它包括以下元素:
1. Session完成的数量
2. 问题发现的个数
3. 功能区域覆盖的个数
4. 用于准备测试花费的session时间百分比
5. 用于测试花费的session时间百分比
6. 用于调查问题花费的session时间百分比
 
任务报告
在每个session结束时,测试员和经理一起讨论。我们发现SBTM(Session-Based Test Management)的价值有赖于测试经理与测试员关于工作的讨论,帮助测试员和经理从这个会议中得到最多(讨论大概15-20分钟),我们用一个问题的checklist来进行讨论。
 
扫描工具
我们的扫描工具通过查找标记扫描session报告。扫描的结果会累计,也就是说在所有session报告中相同标记的所有信息会在每次扫描时被收集在一起。
 
对经理的指引
我们发现这种方法依赖测试经理的技巧,所以我们会致力于一份讨论session协议的经理指南,指南还会把我们使用SBTM的好处和在使用过程中碰到的问题写进去。当这份指南准备好的时候我们会把它张贴出来的。
 
介绍
Jonathan Bach STAR West 2000 第一次介绍 SBTM Session-Based Test Management ),演讲名称叫 "How to Measure Ad Hoc Testing"
 
 
 
 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JeeSpringCloud是一个基于SpringBoot2.0的后台权限管理系统,界面简洁美观敏捷开发系统架构。核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。 互联网云快速开发框架,微服务分布式代码生成的敏捷开发系统架构。项目代码简洁,注释丰富,上手容易,还同时集中分布式、微服务,同时包含许多基础模块和监控、服务模块。模块包括:定时任务调度、服务器监控、平台监控、平台设置、开发平台、单点登录、Redis分布式高速缓存、会员、营销、在线用户、日志、在线人数、访问次数、调用次数、直接集群、接口文档、生成模块、代码实例、安装视频、教程文档 代码生成(单表、主附表、树表、列表和表单、redis高速缓存对接代码、图表统计、地图统计、vue.js)、dubbo、springCloud、SpringBoot、mybatis、spring、springmvc。 功能 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 岗位管理:配置系统用户所属担任职务。 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 参数管理:对系统动态配置常用参数。 通知公告:系统通知公告信息发布维护。 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 登录日志:系统登录日志记录查询包含登录异常。 在线用户:当前系统中活跃用户状态监控。 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 代码生成:前后端代码生成(单表、主附表、树表、列表和表单、增删改查云接口、redis高速缓存对接代码、图表统计、地图统计、vue.js) ,并生成菜单和权限直接使用。 系统接口:根据业务代码自动生成相关的api接口文档。 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 在线接口文档:使用swager生成在线文档。 ActiveMQ队列:提供ActiveMQ队列,处理批量发送大数据量邮件、大数据量日志文件。 工作流:功能包括在线办公、我的任务、审批测试、流程管理、模型管理。 CMS:功能包括内容管理、内容管理、统计分析、栏目设置、首页。 dubbo:代码生成直接生成dubbo对接代码。 服务器Down机邮件监控:通过定时任务监控服务器是否Down机,并发送通知邮件。 服务器监控:通过sigar进行服务器图形化监控。 异常邮件监控:全局拦截系统异常,并发送通知邮件。 单点登录:使用shior和Redis、共享session方式实现单点登录。 Redis分布式高速缓存:代码生成直接生成Redis对接代码。 特性: JeeSpringCloud基于SpringBoot+SpringMVC+Mybatis+Redis+SpringCloud+Vue.js微服务分布式代码生成的敏捷开发系统架构。项目代码简洁,注释丰富,上手容易,还同时集中分布式、微服务,同时包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块。成为大众认同、大众参与、成就大众、大众分享的开发平台。JeeSpring官方qq群(328910546)。代码生成前端界面、底层代码(spring mvc、mybatis、Spring boot、Spring Cloud、微服务的生成)、安全框架、视图框架、服务端验证、任务调度、持久层框架、数据库连接池、缓存框架、日志管理、IM等核心技术。努力用心为大中小型企业打造全方位J2EE企业级平台ORM/Redis/Service仓库开发解决方案。一个RepositoryService仓库就直接实现dubbo、微服务、基础服务器对接接口和实现。 努力用心为大中小型企业打造全方位J2EE企业级平台开发解决方案。 Spring Boot/Spring cloud微服务是利用云平台开发企业应用程序的最新技术,它是小型、轻量和过程驱动的组件。微服务适合设计可扩展、易于维护的应用程序。它可以使开发更容易,还能使资源得到最佳利用。 微服务/集群(nignx) 支持REST风格远程调用(HTTP + JSON/XML):基于非常成熟的Spring Boot框架,在Spring Boot Spring Cloud中实现了REST风格(HTTP + JSON/XML)的远程调用,以显著简化企业内部的跨语言交互,同时显著简化企业对外的Open API、无线API甚至AJAX服务端等等的开发。 事实上,这个REST调用也使得Dubbo可以对当今特别流行的“微服务”架构提供基础性支持。 另外,REST调用也达到了比较高
**项目说明** - 采用SpringBoot、MyBatis、Shiro框架,开发的一套权限系统,极低门槛,拿来即用。设计之初,就非常注重安全性,为企业系统保驾护航,让一切都变得如此简单。 - 提供了代码生成器,只需编写30%左右代码,其余的代码交给系统自动生成,可快速完成开发任务 - 后台系统支持MySQL、Oracle、SQL Server、PostgreSQL等主流数据库,客户端系统仅支持MySQL <br> **具有如下特点** - 灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求 - 完善的部门管理及数据权限,通过注解实现数据权限的控制 - 完善的XSS防范及脚本过滤,彻底杜绝XSS攻击 - 支持分布式部署,session存储在redis中 - 友好的代码结构及注释,便于阅读及二次开发 - 引入quartz定时任务,可动态完成任务的添加、修改、删除、暂停、恢复及日志查看等功能 - 页面交互使用Vue2.x,极大的提高了开发效率 - 引入swagger文档支持,方便编写API接口文档 <br> **数据权限设计思想** - 管理管理、角色管理、部门管理,可操作本部门及子部门数据 - 菜单管理、定时任务、参数管理、字典管理、系统日志,没有数据权限 - 业务功能,按照用户数据权限,查询、操作数据【没有本部门数据权限,也能查询本人数据】 <br> **项目结构** ``` renren-security ├─renren-common 公共模块 │ ├─renren-admin 管理后台 │ ├─db 数据库SQL脚本 │ │ │ ├─modules 模块 │ │ ├─job 定时任务 │ │ ├─oss 文件存储 │ │ └─sys 系统管理(核心) │ │ │ └─resources │ ├─mapper MyBatis文件 │ ├─statics 静态资源 │ ├─template 系统页面 │ │ ├─modules 模块页面 │ │ ├─index.html AdminLTE主题风格(默认主题) │ │ └─index1.html Layui主题风格 │ └─application.yml 全局配置文件 │ │ ├─renren-api API服务,此部分用于二次开发 │ ├─renren-generator 代码生成器 │ └─resources │ ├─mapper MyBatis文件 │ ├─template 代码生成器模板(可增加或修改相应模板) │ ├─application.yml 全局配置文件 │ └─generator.properties 代码生成器,配置文件 │ ├─client 客户端模块,业务前端部分 ``` <br> **技术选型:** - 核心框架:Spring Boot 2.0 - 安全框架:Apache Shiro 1.4 - 视图框架:Spring MVC 5.0 - 持久层框架:MyBatis 3.3 - 定时器:Quartz 2.3 - 数据库连接池:Druid 1.1 - 日志管理:SLF4J 1.7、Log4j - 页面交互:Vue2.x <br> **软件需求** - JDK1.8 - MySQL5.5+ - Maven3.0+ <br> **本地部署** - 通过git下载源码 - 创建数据库renren_security,数据库编码为UTF-8 - 执行db/mysql.sql文件,初始化数据【按需导入表结构及数据】 - 导入仓库、仓位、设备数据,请按照表结构导入。 - 修改renren-admin模块application-dev.yml文件,更新MySQ ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
这里是一个简单的基于MyBatis注解的学生管理程序示例: 1. 创建数据库和表 首先,我们需要创建一个名为 "student" 的数据库,并在其中创建一个名为 "student_info" 的表。表中包含以下字段:id、name、age、gender、address。 2. 创建Java项目并导入MyBatis依赖 在Eclipse或者IntelliJ IDEA中创建一个Java项目,并在项目的pom.xml文件中加入以下依赖: ``` <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.x.x</version> </dependency> ``` 3. 创建实体类 创建一个名为 "Student" 的实体类,包含以下属性:id、name、age、gender、address,并提供相应的setter和getter方法。 ``` public class Student { private int id; private String name; private int age; private boolean gender; private String address; // setter和getter方法 } ``` 4. 创建MyBatis映射文件 在src/main/resources目录下创建一个名为"StudentMapper.xml"的文件,并编写相应的MyBatis映射语句。这里使用注解的方式来实现映射,示例代码如下: ``` public interface StudentMapper { @Select("SELECT * FROM student_info WHERE id = #{id}") public Student getStudentById(int id); @Insert("INSERT INTO student_info(name, age, gender, address) VALUES(#{name}, #{age}, #{gender}, #{address})") public int addStudent(Student student); @Delete("DELETE FROM student_info WHERE id = #{id}") public int deleteStudent(int id); @Update("UPDATE student_info SET name = #{name}, age = #{age}, gender = #{gender}, address = #{address} WHERE id = #{id}") public int updateStudent(Student student); } ``` 5. 创建MyBatis配置文件 在src/main/resources目录下创建一个名为 "mybatis-config.xml" 的文件,并配置MyBatis的相关参数,示例代码如下: ``` <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/student"/> <property name="username" value="root"/> <property name="password" value=""/> </dataSource> </environment> </environments> <mappers> <mapper resource="StudentMapper.xml"/> </mappers> </configuration> ``` 6. 创建MyBatis工厂 创建一个名为 "MyBatisUtil" 的工具类,用于创建MyBatis的SqlSessionFactory对象,示例代码如下: ``` public class MyBatisUtil { private static SqlSessionFactory sessionFactory = null; static { try { String resource = "mybatis-config.xml"; Reader reader = Resources.getResourceAsReader(resource); sessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } public static SqlSessionFactory getSqlSessionFactory() { return sessionFactory; } } ``` 7. 创建测试类 在src/test/java目录下创建一个名为 "StudentTest" 的测试类,用于测试操作数据库的功能。 ``` public class StudentTest { @Test public void testGetStudentById() { SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession(); try { StudentMapper mapper = session.getMapper(StudentMapper.class); Student student = mapper.getStudentById(1); System.out.println(student.getName() + " " + student.getAge() + " " + student.getGender() + " " + student.getAddress()); } finally { session.close(); } } @Test public void testAddStudent() { SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession(); try { StudentMapper mapper = session.getMapper(StudentMapper.class); Student student = new Student(); student.setName("小明"); student.setAge(18); student.setGender(true); student.setAddress("北京市朝阳区"); int count = mapper.addStudent(student); session.commit(); System.out.println("添加了" + count + "条记录"); } finally { session.close(); } } @Test public void testDeleteStudent() { SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession(); try { StudentMapper mapper = session.getMapper(StudentMapper.class); int count = mapper.deleteStudent(1); session.commit(); System.out.println("删除了" + count + "条记录"); } finally { session.close(); } } @Test public void testUpdateStudent() { SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession(); try { StudentMapper mapper = session.getMapper(StudentMapper.class); Student student = mapper.getStudentById(2); student.setName("小红"); student.setAge(20); student.setGender(false); student.setAddress("北京市海淀区"); int count = mapper.updateStudent(student); session.commit(); System.out.println("更新了" + count + "条记录"); } finally { session.close(); } } } ``` 以上就是一个基于MyBatis注解的学生管理程序的示例,可以根据实际需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值