引言
1.1编写目的
本测试计划报告是对图书管理系统项目的测试的整体规划和相关测试过程的说明。目的在于更好地测试图书管理系统的功能,发现其存在的问题,并对测试过程和测试时间有更好的指导作用。并有助于更好的实现以下目标:
确定图书管理系统的功能和软件构件。
针对不同买家和卖家采取不同的测试方法和策略,并对这些策略加以说明。
确定所需的资源,并对开发图书管理系统的工作量进行估计。
列出图书管理系统测试项目的可交付元素。
生成有代表性的测试用例。
1.2背景
a.测试的软件(系统)为图书管理系统
b.测试前的准备工作
测试过程 | 所需准备 | 所做工作 |
单元测试 | 每个模块的每个功能代码编写完成 | [1]检查代码 [2]证明代码正确性 |
集成测试 | 单元测试完成之后(单个构件可正常运转) | 自底向上集成化地进行测试 |
功能测试 | 需求文档在开发前期已经完备(即已经把用户要求清楚地罗列) | 将系统的实际表现与其需求进行比较,并进行功能的合理划分 |
性能测试 | 在确定系统能执行需求所要求的功能之后 | 主要是对可靠性、可用性和可维护性的测试(不仅仅是这三方面) |
注:对于验收测试(acceptance test)和安装测试(installation test)在这个系统中我们认为不需要。验收测试应当是老师的验收。所以后文中不再对这两个验收过程进行陈述。
1.3参考资料
1.图书管理系统需求文档
计划
2.1软件说明
软件质量说明
软件功能 | 输入 | 输出 |
卖家添加书籍 | 书籍名 作者 价格 库存 简介 分类 | 卖家收到提示(是否添加成功)可在【显示书籍】功能中查看是否添加成功 |
卖家删除书籍 | 书籍名称 | 卖家收到提示(是否删除成功)可在【显示书籍】功能中查看是否删除成功 |
卖家编辑书籍(可修改书籍的任意一条或几条信息) | 书籍名 作者 价格 库存 简介 分类 | 可在【显示书籍】功能中查看,并覆盖原始的书籍信息 |
卖家查看订单 | 卖家不需输入 | 显示所有订单信息 |
卖家编辑订单(即选择是否发货) | y/n y:发货 n:暂不发货 | 已发货/跳回上一界面 |
买家登录 | 输入买家账号 | 买家功能页面 |
买家搜索书籍 | 书籍名称 | 按书籍是否存在输出的结果不同 |
买家购买书籍(添加订单) | 输入书名 [1]若存在,添加收货人 收货地址 联系电话 [2]不存在,结束输入 | [1]询问是否付款 [2]提示买家书籍不存在 |
买家编辑订单 | [1]已付款的订单:选择是否申请退款(y/n) [2]未付款的订单:选择是否付款(y/n) | [1]提示买家是否申请成功 [2]选择y:提示买家付款成功 选择n:跳转至上一界面 |
买家查看订单 | 订单编号 | 订单详细情况(包括书籍名 分类 收货人…….) |
买家查看店家推荐的书 | 不需输入 | [1]若之前有订单,推荐销量最高的一本书 [2]无订单历史,推荐最新上架的一本书即可 |
显示当前书(卖家+买家) | 不需输入 | 所有书本信息 |
2.2测试内容
测试过程 | 时间分配 | 所做工作 |
单元测试 | 4.7——5.10 | [1]检查代码 [2]证明代码正确性 |
集成测试 | 5.11——5.20 | 自底向上集成化地进行测试 |
功能测试 | 5.24——5.26 | 将系统的实际表现与其需求进行比较,并进行功能的合理划分 |
性能测试 | 5.27-6.1 | 主要是对可靠性、可用性和可维护性的测试(不仅仅是这三方面) |
2.3单元测试(unit testing)
参与人员:
测试部位:
<1>类的实现:
书(book)
订单(order)
<2>各函数的实现:
add_book(添加书)
delete_book(删除书)
display_book(显示书)
search_book(搜索&编辑书)
add_order(添加订单)
display_order(显示所有订单)
search_order(搜索&编辑订单)
recommend(推荐书功能)
进度安排:
随着代码的开发进行,不做硬性规定。但需在之前设定的代码生成时间内完成,以保证项目整体的完成时间。
测试日期 | 工作内容 |
4.7——4.25 | 在实现代码的基础上完成对类和添加删除书本和显示书本相关代码的检查 |
5.1——5.10 | 在实现代码的基础上完成对剩余函数的代码审查 |
条件
a.设备需求:一台电脑 可运行的环境(如dev c visual stdio 等)
b.人员需求:会使用相应的编译工具。
测试资料
a.测试程序段举例
typedef struct BOOK{
char Name[30];//书名
char Writer[30];//作者
double Price;//价格
int Sales;//销量
int Stock;//库存
char Abstract[300];//简介
char classification[30];//分类
char Offer_Account[30];//上架的店铺
SYSTEMTIME sys;//商家时间
struct BOOK *next;
}Book,*_Book;
b.路径测试框图
以delete_book此函数举例,来说明路径测试的工作流程。即每条不同的路径都必须至少执行一次。
2.4.4测试目的
集成测试的是对将一些单个构件组合而成的系统进行的测试。主要是测试这个组合而成的系统有没有失效,发现一些接口处的错误。
2.5功能测试(function test)
参与人员:
2.5.1 进度安排
软件功能 | 时间安排 |
卖家添加书籍 | 5.24 |
卖家删除书籍 | 5.24 |
卖家编辑书籍(可修改书籍的任意一条或几条信息) | 5.24 |
卖家查看订单 | 5.25 |
卖家编辑订单(即选择是否发货) | 5.25 |
买家登录 | 5.25 |
买家搜索书籍 | 5.26 |
买家购买书籍(添加订单) | 5.26 |
买家编辑订单 | 5.26 |
买家查看订单 | 5.26 |
买家查看店家推荐的书 | 5.26 |
显示当前书(卖家+买家) | 5.26 |
2.5.2条件
a. 设备需求:一台电脑 可运行的环境(如dev c visual stdio 等)
b.人员需求:了解用户需求,能够对照需求进行测试。
2.5.3测试资料
输入示例:
软件功能 | 输入示例 | 输出示例 |
卖家添加书籍 | 软件工程 杨卫东 79 5 图灵计算机科学丛书 计算机 | 书籍名: 软件工程 作者: 杨卫东 价格: 79 库存: 5 简介: 图灵计算机科学丛书 分类: 计算机 上架时间:2017年6月11日20时58分51秒 |
卖家删除书籍 | 软件工程 | 输入你要删除的书本名称: 软件工程 删除成功 |
卖家编辑书籍(可修改书籍的任意一条或几条信息) | 书籍名: 软件工程 作者: 杨卫东 价格: 79 库存: 10 销量: 0 简介: 图灵计算机科学丛书 分类: 计算机 | 编辑成功! |
卖家查看订单 | 输入功能编号 | [1]当前没有任何订单 [2] 订单号:1497186689 书籍名: NJKK 作者: Jinh 价格: 200.000000 库存: 200 简介: 英国名著 分类: 爱情 收货人: a 收货地址: aa 联系电话: 123 状态: 已付款 物流: 未发货 评价: 买家账号:971027
|
卖家编辑订单(即选择是否发货) | y/n | y:发货成功 n:跳转至上一界面 |
买家搜索书籍 | 输入功能编号即可 | 输出所有书籍信息 |
买家购买书籍(添加订单) | [1]软件工程 小方 西安电子科技大学 123456789 [2]软件工程 小明 NULL 987654321 | [1] 书籍名: 软件工程 作者: 杨卫东 价格: 79.000000 库存: 10 销量: 0 简介: 图灵计算机科学丛书 分类: 计算机 收货人: 小方 收货地址: 西安电子科技大学 联系电话: 123456789 单号:1497186438 购买件数(若只输如回车表示跳过,即不够买): 1 下单时间:2017年6月11日21时7分18秒 是否付款? y/n 付款成功 [2]提示出错 |
买家编辑订单 | 输入订单编号 | 是否付款y/n? Y:付款成功 N:返回上一界面 |
买家查看订单 | 输入订单编号 | 订单号:1497186689 书籍名: NJKK 作者: Jinh 价格: 200.000000 库存: 200 简介: 英国名著 分类: 爱情 收货人: a 收货地址: aa 联系电话: 123 状态: 已付款 物流: 未发货 评价: 卖家店铺号:wenhaounique |
买家查看店家推荐的书 | 输入功能编号 | [1]输出销量最高的书 [2]输出最新上架的书 |
显示当前书(卖家+买家) | 输入功能编号 | 展示所有书籍信息 |
2.5.4测试目的
功能测试的目的主要是检查集成的系统是否按照需求中指定的那样执行它的功能。
2.6性能测试(performance test)
参与人员:
2.6.1进度安排
5.27——6.1
2.6.2条件
a. 设备需求:一台电脑 可运行的环境(如dev c visual stdio 等)
b.人员需求:略懂硬件,对软件性能有整体地了解
2.6.3测试资料
可靠性、可用性、可维护性的测量都基于失效数据,但由于我们时间、能力、精力的限制和代码的局限性此部分无法完成。
2.6.4测试目的
将集成的构件与非功能系统需求进行比较,包括安全性、精确性、速度和可靠性等。能给出对约束系统功能的执行方式,方便系统的使用与维护。
测试设计说明
3.1单元测试(unit testing)
3.1.1控制
人工输入一些测试用例,对于每个功能测试的先后顺序并无要求。
3.1.2输入
在代码走查之后,确定无语法错误、数据结构错误的情况下,输入一些测试数据。现在列出函数测试的示例。
//测试增加一本书这个函数
输入:
1 | 2 | 3 | 4 | 5 | 6 | 7 | |
书籍名: | …… | …… | …… | …… | …… | …… | |
作者 | …… | …… | …… | …… | …… | …… | |
价格 | …… | …… | …… | …… | …… | …… | |
库存 | …… | …… | …… | …… | …… | …… | |
简介 | …… | …… | …… | …… | …… | …… | |
分类 | …… | …… | …… | …… | …… | …… |
注:省略号……代表有内容,此处省略不填,实际测试中应填入相应说明。
表中空白处即为不填,为空值。
选择数据的策略:测试用例应当覆盖尽可能多的情况,也应覆盖尽可能多的不合法输入,所以此处列举了一种合法输入和几种不合法输入。当然,不合法的输入还有很多,此处不一一列举。由于此处的不合法输入有很多种,测试当中想做到完全是不现实的,也是不科学的。
3.1.3输出
1 | 2 | 3 | 4 | 5 | 6 | 7 | |
书籍名: | …… | 提示错误 | 提示错误 | 提示错误 | 提示错误 | 提示错误 | 提示错误 |
作者 | …… | ||||||
价格 | …… | ||||||
库存 | …… | ||||||
简介 | …… | ||||||
分类 | …… |
3.2集成测试(integration testing)
3.2.1控制
人工输入,按自底向下的顺序进行测试。(参照之前的构件图)
3.2.2输入
输入应该分卖家模块和买家模块对每个模块的每个功能都进行测试,以下仅对买家模块的一个功能进行举例。
//买家可查看店长推荐的图书
若要测试此功能,应先将有订单和无订单进行分类测试
- 先不添加订单,进行无订单测试。
在测试程序中调用recommend函数即可,无需输入具体数据。
- 在添加订单此功能测试结束并且成功运行的条件下,可进行有订单测试。
步骤与上述相同。
3.2.3输出
(1)无订单,此时输出应为最新上架的图书,按需求应是在代码中最后生成的那本书。
(2)有订单,此时输出为售出量最多的图书。
3.3功能测试(function test)
3.3.1控制
输入为人工输入,对界面的操作性进行测试。
3.3.2输入
此时的输入就很复杂了,在此不列举。但输入时应注意,每个模块的每个功能的各个输入选项在理论上应都测试,但这基本不可能,即使是在这样一个简单的系统内。所以测试时应尽量记录每条测试路径,防止做一些不必要的输入。
3.3.3输出
此时的输出也是十分难以预料,会根据输入变化。在此也不列举。
3.4功能测试(function test)
在前文中说到此模块的测试在目前由于我们技术和代码的问题,无法做到。
评价准则
4.1范围
局限性:由于时间和人力问题,测试用例无法做到全而精,无法覆盖绝大部分情况,对于不合法的输入,也仅仅是提示错误而已。对于用户来讲,这种做法并不能带给他们很好的体验。
4.2数据整理
为了测试更好的进行,减少重复输入的次数,现在将一些必要的输入列举如下。
//卖家增加一本书
书籍名:软件工程
作者:杨卫东
价格:79
库存:10
简介:图灵计算机科学丛书
分类:计算机
//买家添加订单
书名:软件工程
收货人:小方
收获地址:西安电子科技大学
联系电话:123456789