本文章转载于搜狗测试
最近完成了一个比较大的需求的测试:搜狗浏览器追剧功能。
该需求的主要目的就是分析用户的观影行为(比如访问了哪些视频网址,看了哪些电视剧),进而在特定时间给用户弹泡提醒,方便用户更快的消费视频内容。
本文在此介绍一下服务器端测试的思路。
【需求框架】
我们的测试方案主要分三部分:黑盒测试+接口测试+服务器逻辑测试。
接口测试和服务器逻辑测试对应需求框架中的两部分:一、Client-Server信息的收集;二、读取数据库后的运算逻辑;见需求框架中的红色部分。
【测试设计思路】
1、接口测试(client_Server)
通过python的http,urlib等库,构造json数据,模拟客户端发送请求到服务器端,检查服务器响应。
请求字段有dralotOff/dralotOn(追剧功能的关闭/开启)等等。
服务器数据格式类似于Json:
涉及两个点:
(1)服务器返回(json,状态码)。比如,发送获取用户追剧黑名单的请求后,服务器返回对应用户的NotNoticeVideoList(即哪些网站被用户拉黑,不在进行推送追剧的弹泡)。
(2)写入服务器数据库的正确性(比如用户关闭)。比如,用户关闭了追剧功能,发送该请求后,上图中服务器用户观影数据库中的favorSwitch字段应该置为False。
2、服务器端逻辑测试
通过对服务器数据库写入测试数据,调用服务器计算弹泡的脚本后,检查计算后的弹泡信息是否正确。
服务器数据格式类似于Json:
数据库中字段有hid(用户标识符),videoID(观看的是哪一个电视剧),visitTime(观看电视剧的时间),lastVideoNo(最后一次观看的电视剧集数),favorSwitch(追剧功能开关),recentpushlist(最近推送的弹泡信息),modifiedFlag(在弹泡信息生成后,用户是否又观看了新的剧集或有其他变化,比如关闭了追剧功能)。我们会根据每个字段来设计case,具体见下面的示例。
涉及几个点:
(1)用户观影信息数据库中测试数据的构造(Json数据)。比如:观看了西游记第三集,那么计算后的弹泡信息里应该是西游记的第四集。
(2)用户配置数据库中测试数据的构造(Json数据)。比如:当用户关闭了追剧功能后,那么计算后不应该有弹泡信息。
(3)线上电视剧数据库信息的构造。比如:即使用户观看了西游记第三集,如果线上数据库没有对应西游记的相关剧集信息,计算后也不应该有弹泡信息。
【自动化case设计】
【自动化case编写】
1. 底层库封装,主要涉及几个点
(1)环境准备和环境清理
(2)发送请求,解析请求返回的内容
(3)对服务器数据库的读写、清理
(4)调用服务器计算弹泡函数的脚本函数
(5)预期结果检查的函数
示意图:
2. 自动化case用例转为代码,IDE使用eclipse,利用Pyunit框架+Pydev插件
3.部分case的细节示意图
对hid字段的验证:
对visitTime的验证:
4. 举个case的例子