• App 自动遍历工具初版 at 2016年02月18日

    谢谢分享,考虑的挺全面。
    对如何实现挺感兴趣,截获接口请求用 socket 服务做代理吗?新老版本界面对比是图片对比还是结构对比,是一次跑 2 个版本还是和指定版本跑下来的结果做对比?

  • #25 楼 @rdtriny 很不错,想了解下这个优秀的质量中心有多少人力,多少时间完成的?

  • 我的匹配度挺高么,是内勤吗

  • #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"
    }
    ]
    }

  • Appium WebView 初探 at 2016年02月15日

    #5 楼 @zsx10110 关于第 2 点,我也遇到这种现象,不切换可以和 native 一样去识别,难道我们对这句话的理解有问题?(For a real device you need to have "setWebContentsDebuggingEnabled" in the web view. Without it the web view is not exposed to automation tools)是否暴露和能否识别是两码事?回头再研究下。。。

  • #1 楼 @seveniruby 如果是由于流程问题没标准文档,需要事后补充,这个我觉得可以,但是通过抓包(应该还要开发提供一个接口地址列表,进行过滤吧)生成的接口案例,测试角度来讲,总感觉缺少了点权威性,毕竟抓包抓的是开发写的代码发出的请求和响应,如果开发代码本身就是有 bug 的,何解?也就是说开发的代码不能既是球员又是裁判。
    然后 Gatling 和 LR 主要是从性能测试的角度设计的,是在假设程序的功能正确的前提下考虑的,其自动生成的脚本也是如我所说的模拟用户操作的请求流,也就是 V 和 C 的交互,当然 LR 支持多协议,只要是符合其协议的接口也能测试。然而这些工具的设计初衷是性能测试为主,是在假设程序或接口正确的前提下进行录制的。

  • “京东钱包” 体验报告 at 2016年02月05日

    报告中有些指标值得商榷:
    内存 不超过 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 首先,对测试工作了解才能开发出好的测试工具,这需要时间的积淀,开发这点没有先天优势,何来开发自己开发一个工具效率比测试高的结论?这个到不是重点,测试提高自身的技术是为了做到透过现象看本质,定位问题准确了,是高效完成目标的重要因素,以我的经历来看,开发喜欢这种服务到位的测试;
    其次,我认可中国国情文化导致的情商高混得好的现象,技术好、情商高是人才,技术烂又混的开的,这个公司本身就有问题。如果是我情愿混的差,也要保留住自己的底线,做人要有原则。

  • 全栈测试工程师确实是个伪命题
    然后你这篇文章也是个伪命题,开发提高技术和测试提高技术殊途同归,都是为了更高效的完成目标,何来对立?何来唯技术论?

  • #14 楼 @sailen 是啊,先把架构设计好,接口设计好,数据结构设计好,先易后难,接口测试做起

  • #32 楼 @sz_cw 这篇文章的内容不是最新的,只针对 mac、linux,后面为了兼容 windows,过滤方法是通过代码实现的;如果非要用脚本实现,看这篇文章,回帖有答案,https://testerhome.com/topics/3856

  • 这是色诱啊。。。

  • #12 楼 @seveniruby 没错,就是这种设计

  • UI 层有木有颠覆的想法,可以天马行空。。。。

  • #9 楼 @apert 开发模式是模块化的,最终一个大功能可能以插件形式提供

  • #7 楼 @m13890 理论上是可以的,你的需求是基于上层建筑,以及定制化配置,调用底层建筑(框架)来实现