WEB_B/S结构两个开发模型测试版本
目的:后面测试基础理论抽象概念,准备示例
Web知识,中间件,数据库
功能测试 自动化 性能测试
模式1:全生命周期的迭代过程
登录模块的开发过程 指定计划 风险分析 实施工程 客户评估 阶段
注册模块的开发过程 指定计划 风险分析 实施工程 客户评估 阶段
程序版本1.0:登录模块
- 用户需求 用户故事story
文字用语 生活化 不专业 口语 可能混乱
“弄一个登录模块的软件, 利用软件, 跟测试人员解释 数据库 中间件 web 关系。利用模块 静态测试 手工 自动化 性能测试”
- 开发人员 读懂 用户需求,编写 XXX软件需求规格说明书
文字用语 专业
开发人员分析用户原始需求story,提炼需求要点,转成 需求规格说明书
软件需要的功能模块:登录模块
B/S结构 java
- 只完成了 功能性的描述)
开发上面文字登录模块功能表达,和 客户 理解 一致?
静态界面原型(未成型之前,提前 客户 先了解软件界面)
登录静态界面原型.html (只有基本外观 没有具体功能实现)
测试:静态测试 不需要运行软件
对找检查列表 查看 需求规格说明书文档编写 和 原型 是否满足用户需求
对找检查列表 查看 文档编写:bug 比如 没加入 非功能性的描述
登录静态界面原型.html :多次最终用户沟通
如果 修改 文字 或 原型界面;项目;消耗的成本 改代码 低
测试人员(尽早和不断进行软件测试) 评审开发编写需求文档(黑盒 静态测试)
- 开发人员 概要设计文档:总体设计: 需求规定,运行环境,基本设计概念,系统结构等总体设计的内容
采用环境 jdk sql server tomcat 实现登录
测试:静态测试 不需要运行软件
对概要设计文档进行评审
最终用户不参与
但是,测试人员 编写 针对登录模块 测试需求,测试计划 ,测试用例文档(测试准备)
4. 开发人员 项目详细文档:说明 一个软件 各个层次,以及 每一个 程序 每一个 模块 每一个页面的内容:
Web项目工程: 编码框架选择 MVC模式
View 视图层
Index.html 显示登录页面
登录错误.html
登录成功页面.html
controller 控制层
处理登录请求和响应的java servlet文件
model 模型层
处理数据库建立连接的java 文件
处理对数据库进行 登录查询 java文件
测试:静态测试 不需要运行软件
对详细设计文档进行评审
最终用户不参与
但是,测试人员 编写 针对登录模块 测试需求,测试计划 ,测试用例文档(测试准备)
数据库的设计 文档(数据字典)
需要那些表,表里面哪些字段,类型
多个表之间联系
- 具体编码
针对 登录模块代码 编码方式 (自顶向下)
步骤1:View 视图层 登录页面进行编码 HTML
代码 作用:对登录页面,用户名和密码输入
:登录成功或失败 时需要显示的内容页面
步骤2:controller 控制层; 登录页面form action 指向的后台代码内容 java
代码 作用:接受从 登录页面 传递过来的数据
在吧数据 传递给 数据库服务器
再接受数据库的查询结果
最后 将 结果 传递给 视图层 用户查看
步骤3:model 模型层 进行数据库的链接 和 查询语句的传递 java + sql
代码 作用:数据库的链接 用户名和密码, 端口 ip等
查询语句
测试:v1.0 版本 登录模块 进行 功能测试
再前面编码过程中,测试人员 编写下面的 登录 功能 测试用例,测试准备阶段
当编码发布完成,达到 测试就绪点; 执行测试
黑盒测试 动态测试
1. 用户存在 fei 123456
2. 用户不存在 some 123456
每一个用例代表对软件的一次执行操作,包括需要的数据和必要的步骤
当前 手工执行
Bug 1. 非功能质量特性,易用性,易操作,默认焦点的位置
onload="document.getElementById('bb').focus()"
修改完bug后,进行 重新测试 回归测试
修改bug,提高软件质量,后续编写 注册模块,避免相似bug
程序版本2.0:登录模块 集成 注册模块
- 用户需求 用户故事story(提交 登录模块版本后, 第二次沟通, 获得用户 描述 注册模块的 原始需求)
文字用语 生活化 不专业 口语 可能混乱
“第二个故事, 和 注册有关的, 快点 ,内容少”
2. 开发人员 读懂 用户需求,编写 XXX软件需求规格说明书
文字用语 专业
开发人员分析用户原始需求story,提炼需求要点,转成 需求规格说明书
在 前面 的规格说明书 基础上继续 编写 继续完善;
可能:增加 性能方面的要求
增加 易用性方面的要求
{遗漏: 对用户名输入数据 基本格式要求:必填 最长10个字符 数字和字母 }
[需求规格书文档,一致不断的编写,所有的原始都满足]
和登录相似,注册 静态界面原型.html
测试:静态测试 不需要运行软件
对找检查列表 查看 需求规格说明书文档编写 和 原型 是否满足用户需求
对找检查列表 查看 文档编写:bug 比如 没加入 非功能性的描述
注册静态界面原型.html :多次最终用户沟通
如果 修改 文字 或 原型界面;项目;消耗的成本 改代码 低
测试人员(尽早和不断进行软件测试) 评审开发编写需求文档(黑盒 静态测试)
- 开发人员 概要设计文档:总体设计: 需求规定,运行环境,基本设计概念,系统结构等总体设计的内容
采用环境 jdk sql server tomcat 实现登录
测试:静态测试 不需要运行软件
对概要设计文档进行评审
最终用户不参与
但是,测试人员 编写 针对登录模块 测试需求,测试计划 ,测试用例文档(测试准备)
5 开发人员 项目详细文档:说明 一个软件 各个层次,以及 每一个 程序 每一个 模块 每一个页面的内容:
Web项目工程: 编码框架选择 MVC模式
View 视图层
Index.html 显示登录页面
登录错误.html
登录成功页面.html
注册页面.html
注册失败.html
controller 控制层
处理登录请求和响应的java servlet文件
处理注册请求和响应的java servlet文件
model 模型层
处理数据库建立连接的java 文件
处理对数据库进行 登录查询 注册插入 java文件
测试:静态测试 不需要运行软件
对详细设计文档进行评审
最终用户不参与
但是,测试人员 编写 针对登录模块 测试需求,测试计划 ,测试用例文档(测试准备)
数据库的设计 文档(数据字典)
需要那些表,表里面哪些字段,类型
多个表之间联系
- 具体编码
针对 注册模块代码 编码方式 (自底向上)
步骤1:model 模型层 进行数据库的链接 和 查询语句的传递 java + sql
代码 作用:数据库的链接 用户名和密码, 端口 ip等
查询语句
步骤2:controller 控制层; 注册页面form action 指向的后台代码内容 java
代码 作用:接受从注册页面 传递过来的数据
在吧数据 传递给 数据库服务器
再接受数据库的查询结果
最后 将 结果 传递给 视图层 用户查看
步骤3:View 视图层 注册页面进行编码 HTML
代码 作用:对注册页面,用户名和密码输入
:注册成功或失败 时需要显示的内容页面
测试:v2.0 版本 注册模块 进行 功能测试
设计 验证 模拟 用户使用软件 注册 各种情况 – 文档化 - 用例
2-1黑盒动态测试
注册模块 新用户合法用户 fei001 111111 用例1 优先级高 跑通
注册模块 非法用户 fei 111111 用例2 优先级低 bug跑通
注册模块 默认输入焦点的位置:用户名 用例3 优先级低 跑通
注册模块 用户名输入框 为空 用例4 能够成功 违反需求 bug
注册模块 用户名输入框 长度11 用例5 能够成功 违反需求 bug
注册模块 用户名输入框 数字和中文 用例6 能够成功(实现登录)
: 某些页面采用编码格式gb2312 某些页面采用编码格式 utf-8
: 错误页面 重新登录 提交没有乱码; 欢迎 登录页面 提交有乱码
注意:新增注册模块,原来 登录模块,公用一个数据库表,2个相关模块
一个模块的变化 增加,另外相关模块产生影响
回归测试 原来 登录模块用例
1. 用户存在 fei 123456 跑通
2. 用户不存在 some 123456 跑通
【新增代码后,原有的代码,不小心修改】:
表示:请求的web资源 在服务器 找不到
服务器:loginError.htm ;请求的是loginError.html
开发:v2.0 版本 修改 1. 编码问题
修改 2. 对注册 登录 表单进行 js + 正则进行 格式校验
V2.2 再次将 上述 8个用例 进行 重新回归测试
2-2白盒静态测试 工具扫描 checkStyle
集成测试过程: 黑盒白盒(动态) + 白盒测试(静态) = 灰盒测试
模式2:只是进行 需求部分的 敏捷
模型 1 2 : 强调 迭代 强调 与用户的沟通 强调拥抱变化 弱化文档 - 敏捷宣言
敏捷开发 – 实现方式 - 可持续的集成
- 用户需求 用户 第一个 故事story 获得 原始 登录需求
2. 开发人员 读懂 用户需求,编写 XXX软件需求规格说明书 和 界面原型的设计
针对 第一个 故事 原始 登录需求
- 用户需求 用户 第二个 故事story 获得 原始 注册需求
2. 补充 XXX软件需求规格说明书 和 界面原型的设计
即 只进行 需求部分的 敏捷 持续集成 迭代
3. 开发完成内容:
进行后续的 整体概要设计 详细设计 编码实现
在编码的过程中,A 程序员 开发 登录
B 程序员 开发 注册
3. 测试完成内容:
开发的过程中,同时,测试人员:基于 需求规格说明书 编写 登录 注册 黑盒动态测试用例
哪个模块 先开发完成 , 先进行 哪个模块的 测试 (H模型)
登录模块为例:自动化功能测试 自动化性能测试
自动化功能:反复 人工执行 动作
动作行为 – 》 自动化脚本
e.g v1.0 ~ v2.0 需要反复执行登录测试用例
前提: 手工 进行 登录操作 是否有bug
Selenium 自动化工具
QTP 自动化工具
登录接口定义
接口地址:http://192.168.1.228:8080/somePro_v1/LoginServlet
提交方式:post
数据格式:
字段 |
说明 |
备注 |
username |
用户名 |
默认 fei |
pwd |
密码 |
默认 123456 |
响应结果:
包含“登录成功”字符串
没有图形化页面或界面,测试接口功能是否正确?
使用第三方工具 伪造发送请求,开发的接口是否符合定义文档的要求
发送的数据:1用例 合法
2 用例 非法
?对于服务器web项目工程代码,不能准确判断,请求的来源 真实用户还是虚拟用户
LR 自动化性能测试工具
进行了功能的验证后,没有问题后
登录模块 时间响应
JUnit 后面的时间 包括 客户端呈现时间 + 服务器处理响应时间
LR 关注:服务器处理响应时间 (工具加压过程中,没有客户端动作)
VuGen 虚拟用户产生器:录制 捕获 优化 获得 单用户进行登录的请求脚本
Controller *控制器: 性能测试场景 设计 和 运行 ; 多用户
Analysis 只是提供 文字 和 图表报告。-》人工 进行 结果分析