[Gamma阶段]测试报告
测试方法及过程
在正式发布前,为检验后端各接口功能的正确性,后端服务器对压力的耐受程度,以及前端各页面、功能的运行情况,我们对我们的服务器及小程序进行了多种测试。除去随开发进行的基本正确性测试外,针对上述三种情形,我们分别进行了单元测试、压力测试以及功能测试。
单元测试
单元测试的主要目的,是测试后端所有接口的工作是否正常。其内容主要包含两方面:
- 接口在正常情况下是否能发挥预期功能
- 接口在异常情况下是否能返回预期错误信息
Gamma阶段的所有单元测试与Alpha、Beta阶段相同,在pycharm下使用Coverage工具进行测试。经过修改后已经通过了所有单元测试。
在Gamma阶段,我们依旧针对每一个接口都设计了相应的单元测试。现在,三个阶段单元测试的总数高达203个。
在运行完所有单元测试后,单元测试的代码覆盖率高达96%,切实确保了所有接口的正确性。
单元测试中发现的bug如下:
后端单元测试Bug汇总
接口 | 现象 | 原因 | 是否解决 |
---|---|---|---|
/mcm/invite/<int:user_id>/ |
调用接口时返回错误码500 | 数据库操作时搜索的键名错误 | 是 |
/mcm/invitations/send/ |
后端返回的邀请信息全是自己的信息,实际上应为被邀请者的信息 | 对数据库搜索到的数据进行的索引错误 | 是 |
/mcm/accept/<int:invitation_id>/ |
同意后未加入队伍 | 更新数据库是未进行保存 | 是 |
/mcm/quit/ |
用户退出队伍后未成为单人队伍的队长 | 未更新用户身份字段 | 是 |
/mcm/accept/<int:invitation_id>/ |
邀请同意后被邀请者仍能在邀请列表里看见 | 未对被邀请者可见的邀请信息进行过滤 | 是 |
/mcm/invite/<int:user_id>/ |
能够邀请队友 | 发出邀请是应过滤现有队友 | 是 |
/my/profile/modify/ |
无法修改个人资料 | account超出最大长度限制 | 是 |
/mcm/search/user/ |
返回的user_id不正确 | 返回的user_id为整数,应改为string类型 | 是 |
/mcm/match/ |
返回的推荐用户中包含自己 | 没有设置相关的查询过滤条件 | 是 |
/mcm/search/user/ |
无法获取name参数 | name参数在url中,不能从body中获取 | 是 |
/mcm/match/ |
获取推荐用户时没有正确过滤已发送邀请的用户 | 设置的相关查询过滤条件不正确 | 是 |
/mcm/quit/ |
用户作为队员退出某一队伍单独一人时未自动成为队长 | 缺少对数据表中相关字段的设置 | 是 |
/mcm/invite/<int:user_id>/ |
调用接口时返回错误码500 | 数据库操作时搜索的键名错误 | 是 |
/mcm/invitations/send/ |
后端返回的邀请信息全是自己的信息,实际上应为被邀请者的信息 | 对数据库搜索到的数据进行的索引错误 | 是 |
/mcm/accept/<int:invitation_id>/ |
同意后未加入队伍 | 更新数据库是未进行保存 | 是 |
/mcm/quit/ |
用户退出队伍后未成为单人队伍的队长 | 未更新用户身份字段 | 是 |
/mcm/accept/<int:invitation_id>/ |
邀请同意后被邀请者仍能在邀请列表里看见 | 未对被邀请者可见的邀请信息进行过滤 | 是 |
/mcm/invite/<int:user_id>/ |
能够邀请队友 | 发出邀请是应过滤现有队友 | 是 |
表中详细列出的BUG的现象及具体原因,目前后端发现的所有BUG均已解决。
压力测试
进行的压力测试与Beta阶段使用相同工具。基本参数如下:
- 并发用户数:500
- 总请求数 :5135
进行压力测试后的结果如下:
- 测试结果:
总请求数量为5135个的情况下,失败请求数为2,表现良好。
平均响应时间为0.905s,吞吐率为51.2req/s。
Gamma阶段压力测试的表现相比Beta阶段,有较大提升。
Beta阶段压力测试详情请见这里
前端功能测试
对于前端的功能测试,仍采用与Alpha阶段相同的方式,即在不同的机型、不同的操作系统下,对每个页面的每个功能进行一一测试,以检测其功能的正确性。前端功能测试的测试矩阵如下:
测试矩阵 | 功能测试 | 页面显示 | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
测试机型 | 测试环境 | 登录 | 搜索 | 查看分类标签 | 首页智能推荐 | 修改个人信息 | 修改简历 | 查看招募 | 发布招募 | 查看我的发布 | 采纳申请 | 申请招募 | 查看我的申请 | 填写美赛个人信息 | 填写美赛问卷 | 换一批推荐 | 退出队伍 | 邀请推荐队友 | 查看已发邀请 | 查看收到邀请 | 接受和拒绝邀请 | 搜索用户 | 页面排版 |
Redmi K20 Pro | Android 9.0 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 显示的人错误(偶尔) | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 |
Mi6 | Android 9.0 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 显示的人错误(偶尔) | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 |
Honor Play | Android 9.0 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 显示的人错误(偶尔) | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 |
IQOO | Android 9.0 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 显示的人错误(偶尔) | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 |
iphone7 | IOS | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无法查看个人简历 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 |
iphone8 | IOS | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无法查看申请者 | 无法查看申请者 | 无问题 | 无法查看个人简历 | 无问题 | 无问题 | 无问题 | 退出队伍有时显示其他人 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 | 无问题 |
场景测试
- 典型用户:冰哥
-
用户需求
冰哥是计算机系的大三学生。由于系里实践与展示课程的要求,冰哥想要参加美国大学生数学建模比赛,但苦于无法找到合适的队友 -
场景描述1
- 冰哥打开微信,进入小小易校园小程序,并通过微信登录
- 进入首页,点击底部导航栏中的“美赛”模块,进入美赛首页
- 填写美赛相关的基本信息并完成美赛信息收集问卷,冰哥便看到了系统自动匹配的队友。
- 在换了几批匹配队友并查看了其信息后,冰哥找到了合适的队友并发送了邀请,等待回答
-
场景描述2
- 冰哥打开微信,进入小小易校园小程序,并通过微信登录
- 进入首页,点击底部导航栏中的“美赛”模块,进入美赛首页
- 填写美赛相关的基本信息并完成美赛信息收集问卷后,冰哥因为有急事退出了小程序
- 再次登录小程序,进入美赛页面,冰哥收到了来自多个匹配队友的邀请。
- 冰哥查看邀请者的信息,选择最合适的队友,接受了邀请,完成了组队
回归测试
从后端的接口测试部分可以看见,在进行Gamma阶段的单元测试时,我们同时运行了前两个阶段已完成的单元测试,并对测试失败的接口进行了修正,最后顺利通过了Alpha、Beta阶段的所有单元测试,保证了前两个版本功能的正确性。
出口条件
Gamma阶段的出口条件概括为:完成一个界面美观的数学建模比赛组队模块。
数学建模模块的具体功能如下:
- 填写、修改数学建模相关信息功能
- 用户填写问卷后,根据用户填写的答案自动打分,并匹配相应队友
- 通过搜索对特定用户发出组队邀请
- 通过首页推荐模块对匹配的队友候选发出邀请
- 管理自己发出、收到的所有邀请
- 用户不满意当前队伍时,可以自行退出当前队伍
- 当A用户向B用户发出了邀请,且B用户还未答复,或B用户与A用户处于同一队伍时,不再向A用户推荐B用户