Beta阶段测试报告
Beta阶段测试报告
Beta阶段发现的bug
- 网页端页面刷新会出现空白页,
- 社团信息编辑英文名称不能为空,
- 场地选择没有添加错误处理,导致可以选择已经被预定的场地,
- 通过域名访问不能跳转到网页端登陆页面,
- 信息编辑请求数据(数组)和返回数据(对象)类型不一致,
- 社团信息编辑标签显示问题(添加标签后,再次进入编辑页面无显示),
- 小程序端无法获得新闻文章列表
Alph阶段发现的bug
- 编辑页面的问题
- 登陆问题(登陆后不登出无法再次登录)
场景测试
北航社团社长
用户信息 | 用户情况 |
---|---|
用户姓名 | 小明 |
用户身份 | 北航红楼梦协会会长 |
用户动机 | 准备开一次红楼梦线下研讨会,让大家相互交流自己的读书心得 |
用户困难 | 没有社团活动场地查询的平台,只能向社联管理者直接询问 |
典型场景 | 通过网页端实现活动场地的查询,并选择适当的场地进行申请 |
场景测试:小明
-
需求分析:马上就要到举办社团活动的日子了,然而小明不知道北航有哪些社团活动场地可供申请,也不知道想申请的活动场地是否已被占用,想要一个平台可以查询相关信息。
-
使用场景:小明用注册的账号登录北航社团管理网站,在页面上方导航栏中选择场地查询,通过搜索框搜索想要的时间地点,点击查询/刷新按钮后成功的得到了自己需要的场地信息,确定好所需的场地后,进入社团活动界面,点击编辑按钮选择确定好的时间地点,完成场地的申请。
北航社联管理员
用户信息 | 用户情况 |
---|---|
用户姓名 | 小王 |
用户身份 | 北航社联管理员 |
用户动机 | 希望对各个社团开展的活动进行审核,并对其进行评价 |
用户困难 | 没有实用的审核评价平台,只能社联内部自己统计信息 |
典型场景 | 通过网页端完成对社团活动信息的审核,审核通过后还可以对活动进行评分 |
场景测试:小王
- 需求分析:小王是北航社联的管理员,负责对社团申请的活动进行审核,审核通过后还需要根据活动的开展情况对活动进行评分,他希望有一个统一的管理平台来完成这些功能,而不需要自己和社团人员单独沟通活动信息。
- 使用场景:小王使用注册的账号登录北航社团管理网站,在主页可以看到自己负责管理的社团,点击社团下方的审核即可进入该社团的活动审核评价界面,点击审核按钮查看社团提供的信息材料,根据材料选择其是否通过审核,若通过审核,后续可以点击评价按钮给出对于该活动的评分及建议,这便捷的帮助小王完成了他的工作。
回归测试
在 test
文件夹下,我们主要在 controllers
及 models
中的 *_test.rb
文件写了大量关于控制器及模型的测试代码,通过 Rails 自带的 rails test
单元测试命令进行回归测试。
-
测试用例 1,测试活动更新功能
test 'should update activity' do club = clubs(:acapella) activity = activities(:singer) put activity_update_path(club_id: club.id, activity_id: activity.id), params: { name: 'PUBG', start_time: '2020-05-20 13:14:00', position: 'home', post_horizontal_image_token: 'one', post_vertical_image_token: 'two', host_clubs: %w[kkk acapella_club], end_time: '2020-05-22 13:14:00', date: '2020-05-20', begin_time: '2020-05-20 13:14:02', finish_time: '2020-05-20 13:14:10' } assert_response 200 assert_match activity.id.to_s, @response.body end
通过提前设置好的
fixtures
中的.yml
文件,并借助 Rails 原生方法,选择阿卡贝拉社团及此社团开展的歌手活动,向活动更新路径发出put
请求,并且通过参数传递想要更新的字段。如果更新操作成功,则浏览器应该返回200响应,通过assert_response
进行断言。同时,根据app/controllers/club_management_controller.rb
中活动更新方法的这段代码:if @activity.save render status: 200, json: response_json( true, data: { activity_id: @activity.id } ) else render status: 400, json: response_json( false, code: ClubManagementErrorCode::ACTIVITY_UPDATE_FAILED, message: 'Activity profile update failed.', data: { errors: @activity.error_messages } ) end
如果更新成功,在 html 响应中应当返回被更新活动的 id,这一断言通过正则表达式匹配
assert_match
实现。以上操作模拟了一次活动更新的过程,运行测试后没有错误发生,表明回归测试成功。 -
测试用例 2,测试对社团活动的审核功能
test 'should review activity' do activity = activities(:basketball) club = clubs(:kkk) review_state = true review_reason = 'whatever' put activity_review_path(club_id: club.id, activity_id: activity.id), params: { review_state: review_state, review_reason: review_reason } assert_response 200 puts JSON.parse(@response.body)['data'] assert_equal review_state, JSON.parse(@response.body)['data']['review_state'] assert_equal review_reason, JSON.parse(@response.body)['data']['review_reason'] end
同上,选择 kkk 社团
(胡编的奇怪名字)的篮球活动,向活动审核路径发出put
请求,传递审核成功及自定义的审核原因。同样,浏览器应该返回200响应。puts
将响应中的data
字段输出,用于观察信息。最后,使用assert_equal
断言审核信息与我们传递的无误
测试矩阵
网页端
浏览器 | 版本 | 注册账号绑定 | 社团信息编辑 | 活动信息上传 | 新闻信息上传 | 活动审核 | 新闻审核 |
---|---|---|---|---|---|---|---|
Chrome | 81.0.4044.129 | √ | √ | √ | √ | √ | √ |
Safari | 13.4.1 | √ | √ | √ | √ | √ | √ |
Edge | 44.18362.449.0 | √ | √ | √ | √ | √ | √ |
火狐 | 76.0.1 | √ | √ | √ | √ | √ | √ |
出口条件
完成Beta阶段的计划,且新增部分没有bug