测试case提炼与效率提升

背景:

有一个需求需要对前端的请求在服务端对权限进行强校验,不同角色权限对不同栏目、页面、按钮有不同对处理

那么初步计算遍历有所情形会产生的用例数

角色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}                

用例形式

发现的缺陷列表

总结:

自动化完全遍历一次需要半个多小时

手工执行的话所需时间必然数倍 且容易混乱出错

原文地址:https://www.cnblogs.com/maple42/p/8745112.html