谢谢分享,考虑的挺全面。
对如何实现挺感兴趣,截获接口请求用 socket 服务做代理吗?新老版本界面对比是图片对比还是结构对比,是一次跑 2 个版本还是和指定版本跑下来的结果做对比?
我的匹配度挺高么,是内勤吗
#1 楼 @chenhengjie123 这个方法不错,谢了
#3 楼 @seveniruby “以至于现在我们组就算不做接口测试, 也会习惯的挂上拦截代理去分析整个交互流程. 确保每个环节都是对的”,这点我非常赞同,我之前也写过分层框架实现该功能了,优点多多。
HAR 是个标准,对于通用化确实非常好,特别是对于打算开源的工具。但实际应用中,可能有些场景需求其无法满足,可能有的人自定义一套内部标准,只要实现解析这套标准的方法即可。我之前也写过一套自定义的标准,是结合分层思想的,把部分内容裁剪掉了,也增加了部分内容,以下是 demo:
{
"testcase": "layTestCase",
"scope": 7,
"dbDependController": true,
"uiDependController": true,
"useProxy": true,
"controller": [
{
"step": 1,
"url": "{internetAddr}inProduct/product.screen",
"method": "get",
"param": "productId=${productId}",
"postBody": false,
"encode": "GBK",
"proxy": "xx.xx.xxx.xx:8080",
"delay": 0,
"isDownload": "buy1"
},
{
"step": 2,
"url": "{internetAddr}login.do",
"method": "get",
"param": "date=#{UTC}",
"postBody": false,
"checkPoint": "\"code\":\"1\"",
"encode": "GBK",
"delay": 0,
"proxy": "xx.xx.xxx.xx:8080"
},
{
"step": 3,
"url": "{internetAddr}insProduct/saveChoices.do",
"method": "post",
"param": "totalPsn=2&childPsn=1&productPeriod=12&startDate=#{getDate(1)},
"postBody": false,
"regx": "idProduct={input type=\"hidden\" id=\"idProduct\" name=\"idProduct\" value=\"(.*)\"/>}#1,
"encode": "GBK",
"delay": 0,
"proxy": "xx.xx.xxx.xx:8080",
"isDownload": "buy2"
},
{
"step": 4,
"url": "{internetAddr}insuranceProduct/checkProdcut.do",
"method": "post",
"param": "idOrder=${idOrder}&idProduct=${idProduct}",
"postBody": false,
"encode": "GBK",
"delay": 0,
"proxy": "xx.xx.xxx.xx:8080"
}
],
"database": [
{
"refStep": 3,
"mode": "sql",
"dbName": "dbName1",
"queryParam": "${idOrder},${idProduct}",
"sql": "select id,amount from table where id =? and product=?",
"compareType": "content",
"dbAssert": "ID_PRODUCT=P004,AMOUNT=1"
},
{
"refStep": 4,
"mode": "proc",
"dbName": "dbName2",
"queryParam": "iiiooo,${idProduct},#{getDate(1)},2012-05-05,null,null,null",
"sql": "gs_package_calc.calc_sus_day",
"compareType": "content",
"dbAssert": "a,3,null"
}
],
"ui": [
{
"refStep": 1,
"chkImages": "tzlc,perINfo"
}
]
}
#1 楼 @seveniruby 如果是由于流程问题没标准文档,需要事后补充,这个我觉得可以,但是通过抓包(应该还要开发提供一个接口地址列表,进行过滤吧)生成的接口案例,测试角度来讲,总感觉缺少了点权威性,毕竟抓包抓的是开发写的代码发出的请求和响应,如果开发代码本身就是有 bug 的,何解?也就是说开发的代码不能既是球员又是裁判。
然后 Gatling 和 LR 主要是从性能测试的角度设计的,是在假设程序的功能正确的前提下考虑的,其自动生成的脚本也是如我所说的模拟用户操作的请求流,也就是 V 和 C 的交互,当然 LR 支持多协议,只要是符合其协议的接口也能测试。然而这些工具的设计初衷是性能测试为主,是在假设程序或接口正确的前提下进行录制的。
报告中有些指标值得商榷:
内存 不超过 80M,这个为何要写死,单个应用程序最大内存限制,按硬件配置不同而不同,可动态获取:adb -s $udid shell getprop dalvik.vm.heapgrowthlimit
帧率不小于 10,我没记错的话应该是 60fps
内存抖动,我理解的内存抖动,GC 过程基本上是剧烈的直上直下趋势,峰顶是尖的,文章中的图峰顶是平的,GC 的频率还是有一段间隔的,这可能是人为频繁切换某个功能导致的正常现象,当然还要结合手机的配置来看,配置低的 GC 也要相对频繁
从评论来看,也能看出测试行业的一个缩影 -- 浮躁,部分评论有点扯远了,有的甚至没理解就开始评论
我是以一个测试人员的职业习惯,怀着严谨的态度看这篇文章的,我的评论也不是针对作者,而是这篇文章可能带来的负面影响:
1.“测试与开发的对立?唯技术论?这条路真的对么???”
这是个伪命题,我之前已做过评论,为了传播点正能量,再以个人观点详述一遍:
a.关于测试和开发的对立,测试和开发两种角色并存是出于良性制衡的考虑,绝非对立。然而现实很骨感,但任何事都要从自身开始找原因(制度不合理等客观因素先不谈),造成测试与开发的对立,一是得不到对方真正的尊重,二是出现问题了推卸责任、扯皮,没有担当。在得不到对方真正尊重的前提下,通过良好的沟通技巧,有原则性的 妥协,甚至私交,确实可以顺利开展工作,达到表面的 祥和,但对方骨子里对测试这个岗位的蔑视是不会改变的,聚沙成塔,圈子里的大部分人都这么想,对于整个测试行业的发展是不利的;
b.唯技术论,我的理解技术分为 IT 技能和业务知识,这个是必要条件,因为测试岗位是技术岗位,请看清楚 “技术” 两个字,情商是重要条件,情商可以让你的技术发扬光大,更好的开展工作,也可以让你走的更远。但千万不要本末倒置,也不要被行业的不良之风影响你的三观,我就看到过一旦失去土壤就跌的惨的;
2.技术碾压开发论
测试拥有的技术,不是为了碾压开发,是要更高效的解决问题(用数据、精确定位能力,而不是用嘴巴和人情,试问国际化研发合作,你也要用低效率的电话和邮件沟通吗),是要得到人家内心的尊重,这是良性开展工作的前提,也是让人家对测试这个行业有个全新的认知。
不知道你是怎么得出开发的效率一定比测试高?测试工具由谁来开发 ,如果公司有条件,当然有测试开发岗位承担,原因很简单,测试更了解测试,维护更方便;
3.测试的核心职责
“技术只是增强发现问题能力的一种手段,跟进问题更多是靠情商,就是说的说话做事。”
表面上看没问题,有这么一种场景:测试和开发分隔两地,测试和开发距离比较远,也用情商去解决吗?
最后,再次着重指出,测试是技术岗位,技术是必要条件,情商是重要条件,情商背靠技术,才能走的更远。
#10 楼 @skytraveler 如果开发用到了 Spring 框架,用其自带的测试框架确实不错
#8 楼 @skytraveler 我的目的是通过把 UserDAO 实现类的 方法体重写来获取返回数据,达到隔离外部数据库的目的,这违背单测原则吗?还是我没领会你的意思。。。
#66 楼 @furiousslade 你还是没看明白本意,捉急啊。。。
#62 楼 @441385483 没说一样重要!
做技术的当然技术比情商重要,做销售的当然情商更重要,搞科研的科学怪人甚至可以连情商都不需要,明白?
千万别把测试和开发放到对立面,于人于己没有一丁点好处,不要因为某几个逗逼和这个角色接梁子;
技术是必要条件,情商是重要条件,不要本末倒置;
情商,我的理解是良好的沟通,有时候为了提高沟通效率,也要直言不讳,官僚主义害死人。
没多少技术,不做实事,纯靠溜须拍马,揣测上司心意上位的,千万别影响你的三观,哪天没这个土壤了,他们会死的很惨。
最后不得不说,不要让这篇文章影响你对技术和情商的关系。
#23 楼 @441385483 首先,对测试工作了解才能开发出好的测试工具,这需要时间的积淀,开发这点没有先天优势,何来开发自己开发一个工具效率比测试高的结论?这个到不是重点,测试提高自身的技术是为了做到透过现象看本质,定位问题准确了,是高效完成目标的重要因素,以我的经历来看,开发喜欢这种服务到位的测试;
其次,我认可中国国情文化导致的情商高混得好的现象,技术好、情商高是人才,技术烂又混的开的,这个公司本身就有问题。如果是我情愿混的差,也要保留住自己的底线,做人要有原则。
全栈测试工程师确实是个伪命题
然后你这篇文章也是个伪命题,开发提高技术和测试提高技术殊途同归,都是为了更高效的完成目标,何来对立?何来唯技术论?
#32 楼 @sz_cw 这篇文章的内容不是最新的,只针对 mac、linux,后面为了兼容 windows,过滤方法是通过代码实现的;如果非要用脚本实现,看这篇文章,回帖有答案,https://testerhome.com/topics/3856
这是色诱啊。。。
#12 楼 @seveniruby 没错,就是这种设计
UI 层有木有颠覆的想法,可以天马行空。。。。