| 用户信息 | 用户情况 |
|---|---|
| 用户姓名 | 小明 |
| 用户身份 | 北航红楼梦协会会长 |
| 用户动机 | 准备开一次红楼梦线下研讨会,让大家相互交流自己的读书心得 |
| 用户困难 | 没有社团活动场地查询的平台,只能向社联管理者直接询问 |
| 典型场景 | 通过网页端实现活动场地的查询,并选择适当的场地进行申请 |
场景测试:小明
需求分析:马上就要到举办社团活动的日子了,然而小明不知道北航有哪些社团活动场地可供申请,也不知道想申请的活动场地是否已被占用,想要一个平台可以查询相关信息。
使用场景:小明用注册的账号登录北航社团管理网站,在页面上方导航栏中选择场地查询,通过搜索框搜索想要的时间地点,点击查询/刷新按钮后成功的得到了自己需要的场地信息,确定好所需的场地后,进入社团活动界面,点击编辑按钮选择确定好的时间地点,完成场地的申请。
| 用户信息 | 用户情况 |
|---|---|
| 用户姓名 | 小王 |
| 用户身份 | 北航社联管理员 |
| 用户动机 | 希望对各个社团开展的活动进行审核,并对其进行评价 |
| 用户困难 | 没有实用的审核评价平台,只能社联内部自己统计信息 |
| 典型场景 | 通过网页端完成对社团活动信息的审核,审核通过后还可以对活动进行评分 |
场景测试:小王
在 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
原文:https://www.cnblogs.com/RogerPirates/p/13040183.html