测试计划
Gamma阶段依然以场景测试为主。我们归纳了三条场景主线:
一、典型用户:查看
- 访问排名页面 / 搜索课程
- 查看课程页面
- 查看教师页面
- 为他人评论点赞或点踩
二、典型用户:评论
- 登录网站
- 搜索课程
- 查看课程页面
- 撰写点评
三、管理员
- 登录网站
- 查看所有评论
- 查看用户页面
- 删除用户评论
其它(详见后文)
针对找回密码这一功能设计了场景测试。
针对已有功能进行回归测试。
设计了多机型测试环节,针对PC端和移动端主流浏览器和设备进行适配测试。
测试过程
- 自动化测试与手工测试的结合。由于本阶段的前端界面针对用户体验作了较多的优化,我们安排测试人员重写了一部分自动化测试代码(主要是URL访问部分的)。自动化测试主要针对已有功能,而手工测试主要针对本阶段新增的功能(找回密码、管理员用户等)。
- 人员分工的调整。原有的测试人员之一汪慕澜同学在Gamma阶段专心实现网站在国外服务器上的部署和https协议上,不再负责测试工作。本阶段的测试工作由李青阳同学一人负责。
- 重视用户体验。我们通过以下两个手段进行用户体验调查:一是专门邀请几名同学使用我们的网站并通过Github Issue提供反馈意见,二是邀请没有计算机专业背景的家长体验我们的网站并给出意见和建议。
- 多机型测试。在稳定阶段我们进行了多机型测试,但尚未针对移动端的适配做进一步的优化。
测试结果(一些影响用户体验的地方,功能性Bug在问题1中回答)
以下部分由测试人员发现:
- 提交评论后的Alert、个人信息页面的部分内容由英文更改为中文
- 主页的放大镜图标不是按钮,带有迷惑性
- 排名页面没有显示四项具体指标的分数
- 将主页下面“关于我们”更换为“用户反馈”
以下部分由网站用户反馈得到:
- 移动端存在一部分显示问题,例如排名页面的表头被压缩得很厉害,且无法通过横屏解决
- 课程页面部分文字没有加粗或高亮,用户难以分辨表头与表格内容
- 希望增加课表定制功能
回答问题
1. 在测试过程中发现了多少Bug?有哪些是Gamma阶段的新Bug?有哪些是前两个阶段没有发现的Bug?
- 搜索结果数目为10的整数倍时,搜索结果的分页机制会产生一个多余的页。【已修复】
- 主页前端显示修改后,“选择专业”多选框不起作用。【已修复】(Gamma阶段新引入的)
- 处于未登录状态下仍然可以“赞/踩”(前两个阶段没有发现)
- “赞/踩”操作无法撤销(前两个阶段没有发现)
- 如果用户选择进行匿名评论,那么这一条评论不会出现在Ta的个人信息页面中(前两个阶段没有发现)
- 如果在个人信息页面进行注销操作,那么注销后仍然会停留在个人信息页面
- 修改个人信息时,在不选择学校的情况下仍然能选择学院(前两个阶段没有发现)
2. 你是怎么进行场景测试(scenario testing)的?包括你预期不同的用户会怎样使用你的软件?他们有什么需求和目标?你的软件提供的功能怎么组合起来满足他们的需要?(仅描述新功能即可)
2.1 洗月:一个健忘的女生,总是记不住自己各个网站的密码。
需求和目标:在忘记密码的情况下,找回自己公课网账号的密码
测试场景:
- 此处省略洗月注册公课网账号的部分
- 几个月后,洗月想登录公课网点评一下这学期的课程,却怎么也想不起来密码了。
- 在连续尝试了好几个密码失败后,她点击了登录按钮旁边的“忘记密码”。
- 她在新出现的输入框中填写了自己的电子邮箱,点击“重置密码”。
- 几秒钟后,她的邮箱收到了公课网发送的电子邮件,里面包含了用于重置密码的链接。
- 洗月打开链接,按照说明填写了新的密码。之后她利用新的密码登录了公课网。
2.2 公正:网站的管理员,反感部分用户给出的不合理评价
需求和目标:删除用户的不合理评价(哪些评价属于不合理评价由管理员自行评判)
测试场景:
- 公正登录了自己的管理员账号,进入了管理员专属的“所有评论列表”页面。
- 他从上到下浏览今天提交到公客网上的评论。
- 他生气地发现用户“木叶丸”针对某课程的评价只有4个字“鸡你太美”。
- 他点击了列表中的“删除”按钮,成功删除了木叶丸的评论。
- 第二天,木叶丸登录自己的公客网账号时,发现自己的“信箱”收到了一封邮件。
- 他点击导航栏上面的相应按钮,进入了个人信箱页面。
- 个人信箱里有一条未读消息,通知木叶丸:他的评论“鸡你太美”已经被管理员删除。
3. 你是否有回归测试确保新功能的加入没有影响已有功能?请给出一到两个测试用例并解释。
测试用例1:
def test_rank_changemode(self):
append = "rank/"
self.driver.get(self.host + append)
time.sleep(3)
ein = self.driver.find_elements_by_id('radio')
self.assertEqual(len(ein), 2)
ein[1].click()
time.sleep(3)
table = self.driver.find_element_by_id("top_teachers")
tbody = table.find_element_by_tag_name('tbody')
terms = tbody.find_elements_by_tag_name('tr')
print(len(terms))
tds = terms[1].find_elements_by_tag_name('td')
print("teacher mode, goto teacher page")
tds[0].find_element_by_tag_name('a').click()
time.sleep(6)
解释:该用例旨在测试排名页面的“模式切换”组件。在Gamma阶段我们优化了排名页面,显示了更多表项。这一功能的加入没有影响已有的模式切换功能。
测试用例2:
def test_searchCourse_home(self):
# if raise exception, try adjusting the zoom level
self.driver.get(self.host)
time.sleep(3)
e20 = self.driver.find_element_by_id("buttonSelectDepartment")
e20.click()
e21 = self.driver.find_element_by_id("departmentList")
e21s = e21.find_elements_by_tag_name('a')
print(len(e21s))
index = 1 # school of math and systematic science
e21s[index].click()
time.sleep(3)
e31 = self.driver.find_element_by_id("searchboxCourse")
e31.send_keys('\n') # you can modify the keywords
time.sleep(6)
解释:该用例旨在测试首页的搜索功能。在Gamma阶段我们改变了首页的前端,这一变更没有影响旧有的搜索模式。
以下为上述两个测试用例通过测试的截图:
4. 给出你的测试矩阵(test matrix),也即在什么样的平台、硬件配置、浏览器类型……上对你的软件进行测试?
设备 | 浏览器 | 操作系统 | 手机型号 |
---|---|---|---|
PC端 | Internet Explorer | Windows 10 | |
Microsoft Edge | Windows 10 | ||
百度浏览器 | Windows 10 | ||
Chrome | Windows 10 | ||
Safari | macOS | ||
移动端 | 华为浏览器 | Honor 10 | |
小米浏览器 | Redmi Note 4X | ||
QQ浏览器 | Honor 10, Redmi Note 4X | ||
猎豹浏览器 | Redmi Note 4X | ||
Chrome | iPhone 6S | ||
Safari | iPhone 6S | ||
平板电脑 | 华为浏览器 | 华为平板电脑 | |
Chrome | 华为平板电脑 |
测试结果:
- PC端在IE浏览器和百度浏览器上存在适配问题。IE浏览器上无法查看已有的用户评论。百度浏览器上的用户评论位置偏上,偏离了前端的矩形边框。
- 移动端的适配总体上可以接受。普遍存在的问题是排名页和搜索结果页的表格过于拥挤,用户无法看清。
5. 你的软件Gamma版本的出口条件(exit criteria)是什么?也即在什么条件下,认定你的软件已经足够好,可以发布Gamma版本?
一、用户的登录、注册、找回密码
用户登录:
- 输入正确的用户名、密码、验证码(不区分大小写),能够登录。
- 上述3项有任何一项错误,不允许登录。
- 用户可以点击“看不清,换一张”来更换验证码。
用户注册:
- 填写合法的邮箱、用户名、密码,正确的验证码(不区分大小写),系统会向该邮箱发送验证邮件。
- 点击邮件中的链接,则成功注册。
- 邮箱、用户名、密码的形式不合法,则不允许注册并在对应的位置给出提示。
- 验证码填写不正确,不允许注册。
- “密码”和“确认密码”不一致,不允许注册。
- 用户可以点击“看不清,换一张”来更换验证码。
找回密码:
- 填写正确的邮箱、验证码,系统会向该邮箱发送邮件。
- 点击邮件中的链接,能够进入重置密码页面。
- 填写两次新的密码并保存,密码被用户重置。
- 两次密码不一致,不允许重置密码。
二、搜索课程功能
首页的搜索功能如下:
编号 | “选择专业”多选框 | 输入框 | 搜索结果 |
---|---|---|---|
1 | 不填 | 不填 | 返回数据库中的所有课程 |
2 | xxx学院 | 不填 | 返回xxx学院的所有课程 |
3 | 不填 | String1 | 返回课程名中含有String1的所有课程 |
4 | xxx学院 | String1 | 返回xxx学院,课程名含有String1的所有课程 |
搜索结果页仅有一个输入框,返回课程名中包含关键字(可不填)的所有课程。
三、排名页面
- 支持按课程排名和按老师排名两种模式,用户可自由切换。
- 两种模式均按照“综合评分”由高到低,由上到下进行排列。
- 两种模式均需显示四项具体指标的分数和评论次数。
- 该页面可通过点击导航栏上的“Rank”按钮访问。
四、课程页面与教师页面
课程页面:
- 正确显示了该课程的名称和基本信息。
- 正确显示了该课程当前四项指标各自的平均分。
- 以表格的形式显示由其它老师教授的该课程、该老师教授的其它课程。
- 显示所有针对该课程的用户评论。
- 该页面可通过排名页面、搜索结果页面、课程页面,点击课程名称来访问。
- 在登录时,可以点击按钮进入撰写评论页面。
教师页面:
- 显示了该教师的姓名、头像(可能为默认头像)、个人主页链接(可能缺失)、所教授的课程。
- 点击个人主页链接,能够跳转到正确的教师个人主页。
- 该页面可通过排名页面、搜索结果页面、课程页面,点击教师的姓名来访问。
五、用户评论
- 必须在登录状态下才能进入该页面。
- 正确填写了四项具体指标的分数、填写了文字评论后,评论可以被成功提交。
- 缺任何一项的分数,或文字评论不填,不允许提交评论并进行提示。
- 文字评论支持插入emoji。
- 可以对其它用户的评论进行点赞或点踩。
六、修改个人信息与注销
这两个功能位于登录后的导航栏右侧。
- 点击“注销”则退出登录。
- 在个人信息页面,支持修改头像、学校、学院。
- 在个人信息页面,能够查看该用户近期的评论。
七、网站安全性
- 基于https协议访问。
- 能防范用户直接向网站post数据。
- 对评论文字进行适当转义,防范用户在评论中插入音视频。
- 通过邮箱验证与验证码机制防范恶意注册。
八、管理员
- 拥有普通用户的所有功能。
- 能够浏览所有的评论,默认顺序为时间的逆序。
- 能够删除用户的评论。
- 如果用户A的评论被删除了,那么A的“信箱”将会收到一条提醒消息。