软件质量保证与测试
课程大作业
学 院 软件学院
专业班级
姓 名
学 号
完成日期 2022.01.01
目录
1 测试概述
1.1 编写目的
本报告为外卖订餐管理系统的测试报告,目的在于记录软件测试各个环节的测试流程、分析测试结果,找出系统存在的缺陷。基于不同的立场,系统的软件测试目的不同,从用户角度出发,希望通过软件测试暴露软件中隐藏的错误和缺陷,避免在上线使用后对消费者和商家带来经济上的损失和生活上的不便。从软件开发者角度触发,则希望通过测试能够表面该产品不存在系统上的错误和缺陷,验证该产品已确实实现了用户的要求,确立用户对软件质量的信心,提高用户信誉。
1.2 软件来源
通过学习Web课程开发的外卖订餐管理系统。
2 软件功能说明
外卖订餐管理系统由四大模块构成,菜品资源模块、订单资源模块、商家资源模块、用户资源模块,功能上实现对个资源的录入、删除和信息排列功能。
2.1 菜品资源模块
数据块包含菜品的菜品名称、菜品价格、菜品种类、菜品口味选择登内容,菜品名称需要唯一、菜品价格精确到小数点后2位,菜品种类有多种,例如徽菜、粤菜、卤菜和川菜等等,菜品口味选择包括辣度选择、甜度选择等。
在数据操作上,一要实现对菜品资源的录入,商家通过一定的录入渠道,录入菜品资源的相关信息值,作为菜品的资源信息,录入的资源要保存,二要实现对菜品资源的删除,商家可以选择性的菜品的信息进行删改操作;另外,为方便商家和用户查看,系统还要实现对所录入信息的排列,使信息更加直观。
2.2 订单资源模块
数据块包含订单的编号、菜品名称、用户手机号、商家名称、订单金额等。订单编号自动生成,且唯一。
数据操作上,一要实现对订单资源的录入,二要实现对订单资源的排列,且具有条件搜索功能,使商家和用户查看订单信息更直观。
2.3 商家资源模块
数据块包含商家相关信息如店员编号、店员身份、店员姓名、店员手机号等。店员编号唯一,自动生成;店员身份分为店长和店员2种。
数据操作,一要实现的店员的录入;二要实现对店员信息的删除和修改操作;店长可以选择性的删除店员信息;另外,为方便店长查看,系统还要实现对所录入的信息进行排列,使信息更加直观。
2.4 用户资源模块
数据块包含用户相关信息如用户编号、用户昵称、用户手机号和收货地址等,用户编号唯一,注册时自动生成,收获地址可以有多个,下单时需要选择。
数据操作,一要实现对用户信息的录入;二要实现对用户信息的修改操作;三要实现系统管理员对用户信息的排列操作,方便系统管理员查看。
菜品管理子系统的功能构成图如图2.1所示。
图2.1 系统功能构成图
菜品管理系统中录入操作的流程图如图2.2所示。
图2.2 数据录入操作的流程图
菜品管理系统中菜品种类删除操作的流程图如图2.3所示。
图2.3 数据删除操作的流程图
3 软件测试计划
测试主要依据产品规格说明书和设计文档对系统进行测试,包括单元测试、集成测试、功能测试和系统测试,本节将具体介绍外卖订餐管理系统的测试内容、测试环境和测试所用的工具和方法。
3.1 测试目标
(1)为测试各项活动制定一个现实可行的、综合的计划,包括每项测试活动的对象、范围、方法、进度和预期结果。
(2)为项目实施建立一个组织模型,并定义测试项目中每个角色的责任和工作内容。
(3)开发有效的测试模型,能正确地验证正在开发的软件系统。
(4)确定测试所需要的时间和资源,以保证其可获得性、有效性。
(5)确立每个测试阶段测试完成以及测试成功的标准、要实现的目标。
(6)识别出测试活动中各种风险,并消除可能存在的风险,降低由不可能消除的风险所带来的损失。
3.2 测试内容
(1) 代码复杂度测试、判断代码覆盖情况;
(2) 检验外卖订餐管理系统菜品管理子系统是否在功能上能完成对于数据库内容的添加修改删除功能;
(3) 检验外卖管理系统菜品管理子系统能否按照需求完成对于菜品的安排。
3.3 测试环境
表1.1 测试环境及配置
资源名称/类型
配 置
测试PC
Inter(R) Pentium(R) CPU P6000 @ 1.87GHz 1.87GHz
应用服务器
数据库管理系统
MySQL8.2
集成开发环境
idea
代码检测工具
JUnit单元测试工具;check
负载性能测试工具
Jmeter2.3.4
3.4 测试工具和方法
针对单元/集成/功能/非功能测试,采用黑盒/白盒、手工/自动化等方法、LoadRunner、Jmeter、SourceMonitor等工具。
4 测试用例设计
4.1 单元测试
用例编号
TC0001
用例标题
菜品录入单元测试
环境要求
- “红烧肉”为未录入菜品
- 数据库连接成功
测试步骤
1、运行测试程序
2、切换到中文输入法,输入中文“红烧肉”
3、输入价格28.00
4、输入口味选择不辣、微辣、辣
5、选择种类徽菜
6、编译运行程序
预期输出
1、“红烧肉”录入成功
关联的测试用例
TC0001(菜品录入测试)、0002、0003
用例编号
TC0002
用例标题
菜品录入单元测试
环境要求
- “宫保鸡丁”为已录入菜品
- 数据库连接成功
测试步骤
1、运行测试程序
2、切换到中文输入法,输入中文“宫保鸡丁”
3、输入价格24.00
4、输入口味选择不辣、微辣、辣
5、选择种类川菜
6、按回车键开始测试
预期输出
1、“宫保鸡丁”已经存在
关联的测试用例
TC0002(菜品录入测试)、0001、0003
用例编号
TC0003
用例标题
菜品录入单元测试
环境要求
- “@#¥%”为未录入菜品
- 数据库连接成功
测试步骤
1、运行测试程序
2、切换到中文输入法,输入中文“@#¥%”
3、输入价格28.00
4、输入口味选择不辣、微辣、辣
5、选择种类徽菜
6、按回车键开始测试
预期输出
1、菜品名称不符合规范,无法录入!
关联的测试用例
TC0003(菜品录入测试)、0001、0002
用例编号
TC0004
用例标题
菜品删除单元测试
环境要求
- “红烧肉”为已录入菜品
- 数据库连接成功
测试步骤
1、运行测试程序
2、切换到中文输入法,输入中文“红烧肉”
3、按回车键开始测试
预期输出
1、删除成功!
关联的测试用例
TC0004(菜品删除测试)、0005
用例编号
TC0005
用例标题
菜品删除单元测试
环境要求
- “红烧肉”为未录入菜品
- 数据库连接成功
测试步骤
1、运行测试程序
2、切换到中文输入法,输入中文“红烧肉”
3、按回车键开始测试
预期输出
1、该菜品不存在!
关联的测试用例
TC0005(菜品删除测试)、0004
用例编号
TC0006
用例标题
菜品修改单元测试
环境要求
- “红烧肉”为已录入菜品
- 数据库连接成功
测试步骤
1、运行测试程序
2、切换到中文输入法,输入中文“红烧肉”
3、输入新价格32.00
4、按回车键开始测试
预期输出
1、修改成功!
关联的测试用例
TC0006(菜品修改测试)、0007
用例编号
TC0007
用例标题
菜品修改单元测试
环境要求
- “宫保鸡丁”为未录入菜品
- 数据库连接成功
测试步骤
1、运行测试程序
2、切换到中文输入法,输入中文“宫保鸡丁”
3、输入价格26.00
3、按回车键开始测试
预期输出
1、该菜品不存在,修改失败!
关联的测试用例
TC0007(菜品修改测试)、0006
4.2 集成测试
用例编号
TC1001
用例标题
菜品录入删除集成测试
环境要求
- “宫保鸡丁”为未录入菜品
- 数据库连接成功
测试步骤
1、运行测试程序
2、切换到中文输入法,输入中文“宫保鸡丁”
3、输入价格26.00
4、输入可选择口味不辣、微辣、辣
5、输入菜品种类川菜
6、按回车键保存菜品
7、切换到中文输入法,输入中文“宫保鸡丁”
8、按回车键开始测试
预期输出
1、测试成功!
关联的测试用例
TC1001(菜品录入删除测试)、1002
用例编号
TC1002
用例标题
菜品删除录入集成测试
环境要求
- “宫保鸡丁”为已录入菜品
- 数据库连接成功
测试步骤
1、运行测试程序
2、切换到中文输入法,输入中文“宫保鸡丁”
3、按回车键删除菜品
4、切换到中文输入法,输入中文“宫保鸡丁”
5、输入价格26.00
6、输入可选择口味不辣、微辣、辣
7、输入菜品种类川菜
8、按回车键开始测试
预期输出
1、测试成功!
关联的测试用例
TC1002(菜品删除录入测试)、1001
用例编号
TC1003
用例标题
菜品录入修改集成测试
环境要求
- “宫保鸡丁”为未录入菜品
- 数据库连接成功
测试步骤
1、运行测试程序
2、切换到中文输入法,输入中文“宫保鸡丁”
3、输入价格26.00
4、输入可选择口味不辣、微辣、辣
5、输入菜品种类川菜
6、按回车键保存菜品
7、切换到中文输入法,输入中文“宫保鸡丁”
8、输入价格29.00
9、按回车键开始测试
预期输出
1、测试成功!
关联的测试用例
TC1003(菜品录入修改测试)、1004
用例编号
TC1004
用例标题
菜品修改录入集成测试
环境要求
- “宫保鸡丁”为已录入菜品
- 数据库连接成功
测试步骤
1、运行测试程序
2、切换到中文输入法,输入中文“宫保鸡丁”
3、输入价格29.00
4、切换到中文输入法,输入中文“宫保鸡丁”
5、输入价格26.00
6、输入可选择口味不辣、微辣、辣
7、输入菜品种类川菜
8、按回车键开始测试
预期输出
1、该菜品已经存在,无法录入!
关联的测试用例
TC1004(菜品修改录入测试)、1003
用例编号
TC1005
用例标题
菜品修改删除集成测试
环境要求
- “宫保鸡丁”为已录入菜品
- 数据库连接成功
测试步骤
1、运行测试程序
2、切换到中文输入法,输入中文“宫保鸡丁”
3、输入价格29.00
4、切换到中文输入法,输入中文“宫保鸡丁”
5、按回车键开始测试
预期输出
1、测试成功!
关联的测试用例
TC1005(菜品修改删除测试)、1006
用例编号
TC1006
用例标题
菜品删除修改集成测试
环境要求
- “宫保鸡丁”为已录入菜品
- 数据库连接成功
测试步骤
1、运行测试程序
2、切换到中文输入法,输入中文“宫保鸡丁”
3、按回车删除菜品
4、切换到中文输入法,输入中文“宫保鸡丁”
5、输入价格25.00
5、按回车键开始测试
预期输出
1、该菜品不存在,修改失败!
关联的测试用例
TC1006(菜品删除修改测试)、1005
4.3 功能测试
用例编号
TC2001
用例标题
用户下单功能测试
环境要求
- “宫保鸡丁”为已录入菜品
- user1/123456为已存在用户
- 用户余额充足
- 数据库连接成功
- 浏览器IE的Cookie未被禁用
测试步骤
1、运行系统服务
2、输入用户名user1
3、输入密码123456
4、登录
5、选择菜品宫保鸡丁
6、选择口味微辣
7、选择收货地址
8、下单支付
预期输出
- 界面显示下单成功!
- 数据库订单表生成记录
关联的测试用例
TC2001(用户下单测试)、2002
用例编号
TC2002
用例标题
用户下单功能测试
环境要求
- “宫保鸡丁”为已录入菜品
- user1/123456为已存在用户
- 用户余额不足
- 数据库连接成功
- 浏览器IE的Cookie未被禁用
测试步骤
1、运行系统服务
2、输入用户名user1
3、输入密码123456
4、登录
5、选择菜品宫保鸡丁
6、选择口味微辣
7、选择收货地址
8、下单支付
预期输出
- 界面显示余额不足!
- 数据库订单表未生成记录
关联的测试用例
TC2002(用户下单测试)、2001
4.4 非功能测试
用例编号
TC3001
用例标题
系统压力测试
环境要求
- “宫保鸡丁”为已录入菜品
- 数据库连接成功
- 浏览器IE的Cookie未被禁用
- Jmeter压力测试脚本
测试步骤
1、运行系统服务
2、运行Jmeter测试脚本
3、1秒100请求
4、统计请求成功次数
预期输出
- 100次请求成功
关联的测试用例
TC3001(系统压力测试)、3002
用例编号
TC3002
用例标题
系统压力测试
环境要求
- “宫保鸡丁”为已录入菜品
- 数据库连接成功
- 浏览器IE的Cookie未被禁用
- Jmeter压力测试脚本
测试步骤
1、运行系统服务
2、运行Jmeter测试脚本
3、1秒300请求
4、统计请求成功次数
预期输出
- 300次请求成功
关联的测试用例
TC3002(系统压力测试)、3001
5 测试总结
5.1 测试用例执行结果
一、单元测试:
用例编号
预期输出
实际输出
TC0001
“红烧肉”录入成功
“红烧肉”录入成功
TC0002
“宫保鸡丁”已经存在
“宫保鸡丁”已经存在
TC0003
菜品名称不符合规范,无法录入!
“@#¥%”录入成功!
TC0004
删除成功!
删除成功!
TC0005
该菜品不存在!
该菜品不存在!
TC0006
修改成功!
修改成功!
TC0007
该菜品不存在,修改失败!
该菜品不存在,修改失败!
结果分析:TC0003实际输出与预期输出不符,考虑为代码缺陷,开发者并未对输入菜品名称做校验;其余测试结果均与预期相符,单元功能开发符合要求。
二、集成测试:
用例编号
预期输出
实际输出
TC1001
测试成功!
测试成功!
TC1002
测试成功!
测试成功!
TC1003
测试成功!
测试成功!
TC1004
该菜品已经存在,无法录入!
该菜品已经存在,无法录入!
TC1005
测试成功!
测试成功!
TC1006
该菜品不存在,修改失败!
测试成功!
结果分析:TC1006实际输出与预期不符,考虑为代码缺陷,开发者并未考虑删除菜品后再修改时应先查询数据库,判断该菜品是否存在。而是直接修改,把判断放在数据库层,但数据库层更新语句找不到对应数据行也不会报错;其余集成测试结果均与预期相符。
三、功能测试:
用例编号
预期输出
实际输出
TC2001
下单成功!
下单成功!
TC2002
余额不足!
下单成功!
结果分析:TC2002实际输出与预期输出不符,考虑为代码缺陷,开发者并未考虑在下单时对用户余额进行判断是否大于订单金额,而是直接相减,出现余额为负数的情况。TC2001测试结果与预期相符,说明整体功能流程设计成功。
四、非功能测试:
用例编号
预期输出
实际输出
TC3001
100次请求成功
99次请求成功
TC3002
300次请求成功
198次请求成功
结果分析:TC3002实际输出与预期输出有较大差异,考虑为系统吞吐量限制,系统qps大约为200。后续可根据实际需求改善系统,通过增设服务器或优化程序实现。
5.2 测试缺陷报告
软件缺陷报告格式模版
缺陷标题
菜品名称规范未校验
软件/模块名称
菜品管理系统
版本
1.01
测试员
打开日期
严重性
较严重
优先级
较高
问题描述:输入不规范名称的菜品依旧可以录入成功。
缺陷标题
菜品修改前未先查询是否存在
软件/模块名称
菜品管理系统
版本
1.01
测试员
打开日期
严重性
较严重
优先级
高
问题描述:对于不存在的菜品执行修改操作依旧显示修改成功。
缺陷标题
用户下单时未校验余额是否足够
软件/模块名称
菜品管理系统
版本
1.01
测试员
打开日期
严重性
严重
优先级
高
问题描述:用户余额不足依旧可以下单,出现余额为负数的情况。
缺陷标题
系统吞吐量较低
软件/模块名称
菜品管理系统
版本
1.01
测试员
打开日期
严重性
一般
优先级
低
问题描述:系统qps为200左右,无法承受每秒200次以上的请求。
5.3 测试问题总结
经过对菜品管理系统这个软件的测试,得到下面几个问题:
(1)代码复杂度较高
(2)命名不规范
(3)测试人员经常变换
(4)测试程度较浅
(5)没有足够多的测试次数
但由于时间与人员问题,我们的测试问题并未得到解决,我们争取在接下来的时间完善对于本系统的测试。
6 综合评价
6.1 软件质量总体评估
6.2 软件能力评估
**6.2.1 **功能性
该菜品管理系统正确实现了对菜品信息、套餐信息、菜品种类信息和菜品口味信息的录入和删除功能,对录入的菜品信息进行多种排列方式,例如按种类排列、按价格排列、按销量排列等,能从不同角度查看菜品的信息,实现了友好的用户界面。利用图表形象而直观的实现了对菜品信息、套餐信息、菜品种类信息和菜品口味信息的管理操作,并提供了菜品和视图的打印功能,可以将菜品和视图信息打印出来更为直观的方便用户查看和店员修改和删除。同时该系统针对用户和商家做了权限处理,用户仅能看到菜品的部分信息,而商家可以看到全部信息,增加了数据的安全性。
**6.2.2 **易用性
现有系统实现了如下易用性:查询,添加,删除,修改操作相关提示信息的一致性,可理解性 。
**6.2.3 **可靠性
现有系统的可靠性较高。无论从文件系统的可靠性和JAVA程序的可靠性考虑,都有较高的可靠性。该系统独有的文件系统,使得其他软件或系统不能读取其中的数据,因此该系统的可靠性比较高。
**6.2.4 **兼容性
现有系统支持window下的JAVA环境运行,兼容性良好。 现有系统未进行其他兼容性测试。
**6.2.5 **安全性
由于软件由JAVA语言编写,继承了JAVA语言的安全性。
6.3 建议
该菜品管理系统能够对各类菜品、套餐实现有效的录入、删除和修改操作,同时也满足了广大年轻人的使用需求,但是依然有可以优化的地方,比如对于菜品信息的删除功能,当下社会中对于项目开发中的删除功能是十分敏感的,因为数据十分重要。所以我们不能点击删除后数据就永远从数据库消失,这可能给后续带来严重的生产问题。因此我们提出以下建议:建议设计逻辑删除功能,对于菜品或套餐删除后仅不会向用户展示,但依然存在数据库中,具体实现方案可以通过添加数据库字段实现,0表示逻辑删除,1表示未删除。
此外,当下正是互联网时代,互联网不应该仅为年轻人带来便利,不会使用智能设备的老年人也应该受益,所以我们还提出以下建议:对于菜品展示界面,设计语音介绍功能,对于搜索栏,设计语音搜索功能。例如当下的搜索引擎app、电商app和各种视频娱乐app均提供语音功能,语音功能不仅给年轻用户带来了便利,也为一些不会打字的年长者带来了帮助,这样也能扩大我们软件的用户基数,为我们带来好处。
版权归原作者 .wei-upup 所有, 如有侵权,请联系我们删除。