这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/2020SPRINGS/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/2020SPRINGS/homework/10699 |
团队名称 | 知社 |
这个作业的目标 | 项目的测试工作 |
作业正文 | https://www.cnblogs.com/zhishe/p/12858483.html |
其他参考文献 | 构建之法 |
1. 测试工作安排
日期 | 任务 |
---|---|
5.6~5.7 | 后端单元测试 |
5.8 | 前端和后端联调 |
5.9 | 收尾工作 |
2. 测试工具选择和运用
前端:
直接通过浏览器本地进行预览测试
功能 | 预期 | 结果 |
---|---|---|
社团认证申请 | 申请认证后,显示申请成功;已认证社团进行重复申请,显示”该社团已经是认证社团“ | 符合预期 |
社团认证审核 | 审核成功后,显示审核成功,申请状态由待审核切换为已批准,管理员不能继续对记录进行操作;社长界面可以看到申请记录的状态已切换为已批准 | 符合预期 |
社长换届 | 社长可以申请社长换届;社长换届界面,社长输入换届对象用户名,若输入的用户名不存在,则显示”该新社长 xxx 用户不存在“;若没有输入换届原因,则提示”换届原因不能为空“ | 符合预期 |
社长换届审核 | 审核成功后,显示审核成功,申请状态由待审核切换为已批准,管理员不能继续对记录进行操作;原社长现在只能通过”我加入的社团“该社团 | 符合预期 |
搜索社团 | 能够根据社团名称、社团类别(下拉列表)和社团官方状态(下拉列表)进行组合搜索并且能够重置搜索条件,当无参数时列出所有社团 | 已实现 |
社团推荐 | 根据社团等级高低进行排序,返回对应社团列表和具体信息,在首页进行展示 | 已完成 |
社团信息 | 根据不同社团Id获取相应的社团信息并展示,支持社长修改社团的部分详细信息(如头像、简介、社团类型(下拉列表)和QQ群) | 已完成 |
个人中心 | 根据用户Id获取相应的个人信息并展示,支持用户修改个人详细信息(用户名除外)和密码,支持用户以链接和本地图片两种方式上传头像 | 已完成 |
创建社团 | 管理员批准后,新创社团出现在“我管理的社团”,申请结果->创建社团 出现申请信息 | 和预期相同 |
加入社团 | 学生申请后,社长审核通过后成功加入社团 | 成功 |
退出社团 | 我的社团'内不出现该社团,可通过搜索社团重新申请加入,该社社长可查看退社通知 | 和预期相同 |
创建社团 | 批准后创建成功 | 成功 |
解散社团 | 批准后社团解散 | 成功 |
论坛功能 | 能够查看论坛和评论,发送帖子 | 能够实现基本的功能,但是出现以下问题:1、不能够通过回车键发送评论 2、在发起个人贴的时候图片是通过 url 添加的 3、在活动论坛中图片和文字之间过于紧贴,没有空白的地方,视觉上有点不舒服。4、在活动论坛中没有收起评论的功能 5、发布帖子没有添加图片的时候,显示的时候都会有个图片的占位符 |
社长申请活动 | 能够申请活动,申请的活动的时间需要是未来的时间 | 已完成 |
管理员审核活动 | 可以批准申请的活动 | 已完成 |
活动结束(可选) | 社长根据活动发布后,因其他因素,可以提前设置结束 | 未完成 |
删除活动(可选) | 后期因为大量活动结束,根据需要删除活动,社长或管理员可以删除活动 | 未完成 |
活动评论 | 可以评论活动,评论活动帖子 | 已完成 |
活动撤销 | 社长申请活动后未审核时可以撤销申请 | 已完成 |
社团活动申请 | 社团活动管理可以筛选查看 | 已完成 |
活动论坛查询帖子 | 完成筛选查询 | 已完成 |
搜索公告 | 能够根据公告标题和公告内容进行组合查询,罗列出结果 | 成功 |
查看公告 | 能够弹出对话框展示公告的标题、内容、创建时间、更新时间 | 成功 |
发布公告 | 输入标题和内容后即可在公告列表被看到(标题和内容不可为空) | 成功 |
修改公告 | 修改标题和内容后即可在公告列表被看到(标题和内容不可为空) | 成功 |
删除公告 | 点击删除后,弹出确认框,若确认,公告即从公告列表被移除 | 成功 |
后端:
使用 Postman 进行接口测试,通过 URL 请求后端的接口,通过查看得到的响应状态码(200,400,401,403,500)等判断每次请求的状态,也能直接看到响应结果的样式。
3. 测试用例文档
后端的测试用例主要是测试两个方面:
-
拒绝访问的情况,如:
Assertions.assertThrows(EntityNotFoundException.class, () -> { forumService.updatePost(deletedPostId, new FmsPostParam()); }, " 帖子不存在,却可以更新 "); Assertions.assertThrows(ApiException.class, () -> { forumService.updatePost(activityPostId, new FmsPostParam()); }, " 帖子类型是活动帖,却可以更新 ");
Module Denied Situations 活动模块 非社长,不可以创建活动 非管理员,不可以修改活动申请状态 非社长,不可以修改活动申请状态 不存在的活动,不可以删除活动 非社长或管理员,不可以删除活动 已删除的活动,不可以修改活动 非管理员,不可以修改活动 申请与审核模块 社团已存在,不可以创建 社团创建申请已存在并且还没审核,不可以重复申请 申请不存在,不可以审核 申请已审核完毕,不可以审核 社团不存在,不可以解散 社团解散申请已存在并且还没审核,不可以重复申请 社团不存在,不可以加入 已加入社团,不可以加入 社团不存在,不可以查看加入列表 社团不存在,不可以退出 未加入社团,不可以退出 社团不存在,不可以查看退出信息列表 社团不存在,不可以换届 社团不存在,不可以认证 论坛模块 帖子不存在,不可以更新 帖子已删除,不可以更新 帖子类型是活动帖,不可以更新 不是发帖人,不可以更新帖子 帖子不存在,不可以删除 帖子类型是活动帖,不可以删除 帖子不存在,不可以对其发表评论 不是评论发布者,不可以删除评论 公告模块 不是社长,不可以发布公告 不是社长,不可以更新公告 公告不存在,不可以更新公告 公告已删除,不可以更新公告 公告不存在,不可以删除公告 公告已删除,不可以删除公告 不是社长,不可以删除公告 -
允许访问的情况,如:
// 更新帖子 Assertions.assertDoesNotThrow(() -> { forumService.updatePost(personalPostId, postParam); }, " 帖子更新异常 "); // 删除帖子 Assertions.assertDoesNotThrow(() -> { forumService.deletePost(personalPostId); }, " 帖子删除异常 ");
我们对每个业务中的主要方法都进行了单元测试,
4. 测试体会
单元测试确实是比较重要的一环,通过单元测试,虽然无法保证我们的应用没有 bug,但是可以发现一些隐藏的 bug,我们在编写代码中遗漏的情况。
不过有的测试是依赖数据库中的数据的,这就需要我们在测试过程中维护好那些数据,保证跑单测时那些数据都是存在的。否则就会出现上一秒单测跑通了,下一秒又挂了。
我们目前都是在做白盒测试,每个后端开发人员编写自己对应业务的单测。这样有个问题就是,我们很多时候思维定势,遗漏了一些边界或者特殊情况,在编写代码和做单元测试的时候都是一根筋,同样的思路,自然也不会测出那些意想不到的 bug。因此,后续我们可能需要再做一些黑盒测试,以及对测试用例进行复审,使测试尽可能覆盖一些常见的问题。
另外,我们编写单元测试的时机也偏晚了些,在编写代码的时候完全没有考虑单元测试,等我们的代码都写完了才着手编写单测,这样也没有很好把单元测试运用到我们的项目中。
5. 项目测试评述
总体上来说,我们的项目测试起步较晚,可能还有一些情况需要进一步测试。
测试大部分是针对用户权限以及数据存在性,一些数据校验、返回格式、数据更新还需要再测试加强。