背景:
有一个需求需要对前端的请求在服务端对权限进行强校验,不同角色权限对不同栏目、页面、按钮有不同对处理
那么初步计算遍历有所情形会产生的用例数
角色role 有 -1 、0、1、2、3、4、5、99 共 8 种
栏目数:25
每个栏目下页面数:平均约2~3个
每个页面交互类元素数:平均约 5 个
初步估算 用例数 8*25*2*5 = 2000 条
简化等价类后(通过PICT)剩余 400 条
设计自动化检测用例
1、用户权限与session关联参数化
2、role变更抽离原子化
3、封装公共请求部分 ,抽离出需要的role、uri 、断言内容 作为参数
session参数化
${cookies}= Create Dictionary UM_distinctid=15f536c8e52adb-0ffcfc0c6858-31677c00-240000-15f536c8e535a2 Hm_lvt_8e3083d000c3b20677d54943fd264b4d=1516674788,1517559265 Hm_lpvt_8e3083d000c3b20677d54943fd264b4d=1518441473 gr_user_id=a69ed53d-19d4-4ef2-954c-4ec0ab9a371e laravel_session=${session}
封装公共部分抽离参数
设置role ${role} ${role} query SELECT `role_v3` FROM `t_review_user` WHERE `account` ='mp_test'; ${header} create dictionary Accept=application/json, text/plain, */* User-Agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36 X-CSRF-TOKEN=fqbmdFDuKEyirIET4xlAwMq4dLPAoovTkqLGVPQy Accept-Language=zh-cn Accept-Encoding=gzip, deflate ${cookies}= Create Dictionary UM_distinctid=15f536c8e52adb-0ffcfc0c6858-31677c00-240000-15f536c8e535a2 Hm_lvt_8e3083d000c3b20677d54943fd264b4d=1516674788,1517559265 Hm_lpvt_8e3083d000c3b20677d54943fd264b4d=1518441473 gr_user_id=a69ed53d-19d4-4ef2-954c-4ec0ab9a371e laravel_session=${session} log ${cookies} Comment ${proxies} create dictionary "http"="http://127.0.0.1:8888" "https"="http://127.0.0.1:443" create session api http://test-review-v3.meipian.cn ${header} ${cookies} #verify=${CURDIR}${/}chain.pem ${addr} get request api ${uri} #{"theme":"0","abstract":"分享自「美篇」","user_id":"${user_info}","title":"${title}","cover_img_url":"http://t-static2.ivwen.com/users/11522545/868987b1256543499e8b1900f739d48b.jpg","token":"${token}","music_desc":"","vote":{},"cover_crop":"","music_url":"","local_id":"3feaef4b66534cd8bee13203454a7956","privacy":"3","content":[{"img_url":"http://t-static2.ivwen.com/users/11522545/868987b1256543499e8b1900f739d48b.jpg","img_height":593,"img_width":947}]} sleep 1 log ${addr.content} ${respdata} to json ${addr.content} pretty_print=True should contain ${addr.content} ${assert}
用例形式
发现的缺陷列表
总结:
自动化完全遍历一次需要半个多小时
手工执行的话所需时间必然数倍 且容易混乱出错