• 你是从哪里看到 mockjs 可以进行接口正确性验证的?不知道你的上下文,不好回答。

    硬要说的话,对于那些透传或者依赖下游服务的接口,通过 mockjs 可以把下游服务模拟掉,便于上游测试接口,也算是一种接口正确性验证的辅助手段。但我了解的 mockjs 大部分用途是前端开发在联调前辅助自己自测用的,前面这种场景用得会比较少,毕竟后端大部分都不是那么熟悉 js 语言,用自己顺手的语言对应框架更趁手。

  • 别迷信这类练手项目,和实际公司项目差的太多了,基本这个项目的经验在面试官眼里面等价于没啥经验。去外包或者创业公司练一练都比这个强。

    因为你不会经历产品需求不清晰需要不断沟通澄清、开发实现影响范围写得模糊需要沟通确认甚至看代码倒推、测试时间很紧张只能从风险角度挑着测、上线后要会看监控确认无故障这类真实项目家常便饭的场景,所以你对这类情况的处理解决能力也无法得知。

  • 个人建议,你就直接持续跑着 5 个左右的 appium 服务,脚本只需要选择用哪个服务就好,这样也可以并发,而且技术上更简单。当然,要记得脚本里面确保每次执行完毕都结束 session 。

    如果要搞用到时启动,你需要了解 python subprocess ,需要知道如何从命令行启动 appium ,需要能监控 appium 服务是否真的启动成功。从你目前的回答看,你对这些方面的知识了解其实并不是很多,所以直接持续开着 appium 服务,脚本只管选择,这个方案可能更适合你。

    当然,有一个绕不过的点,那就是你还得知道如何从命令行,而非 appium desktop 启动 appium 服务,否则做不到多开。这方面的知识一楼已经有说过了,建议可以结合社区搜索一下知识理解一下。如果实在还是不理解,可以再发帖说你找到了哪些文章,个人理解是如何和卡在哪里,便于大家协助你。

  • 自动化测试中,验证码的最佳解决方案是万能验证码或者直接可跳过。

    不能做到独立无人工介入的,都只是半自动化,不大适合用 jenkins 自动触发执行。

  • 往年 MTSC 大会都有小程序测试的相关议题,甚至有邀请到微信的同学来分享。建议可以先看看?

    交流是要相互的,建议你先提出你自己的观点和看法,别人才能回应交流。只是抛问题只能称为咨询。
    而且任何具体工具使用都是依附于当前业务需要的,你也没介绍你的业务情况、痛点难点,大家也不知道给啥建议你好。

  • 信息太少了,而且除了薪资,你也没提到你所在城市或者公司这两个职位之间你的感受对比,无法给出建议。

    从大的行业来说,前端开发对业务的贡献会比自动化测试大,门槛也高一些,所以应该前景更好。但到了具体公司,这并不一定,如果质量是公司瓶颈,测试开发也会很吃香。

  • 我不是活动主办方,控制不了这些 ppt 。

    建议你可以在那个公众号下留言给他们。

  • 各个地区、各家公司要求不一样,这个问题建议你查招聘网站 jd 以及去自己直接面试下,得到的答案才准确。

    PS:自学不管做到什么程度,从公司角度你的实际项目经验还是近乎于 0,需要不少时间才能上手实际项目。深圳竞争还是比较激烈的,非应届且没多少测试方面的经验,不知道好不好找。建议空杯心态,多去试试吧。

  • 看漏了个 Manager ,原来是平台呀。

    可以和作者沟通下,提个 pr 或者直接 fork 到你账号另外维护呀。

  • 谢谢反馈~我们看下是否设置有误。

  • 对 vue 单页应用如何测试 at November 07, 2019

    你要测试的是哪个点,举个具体的例子?

    浏览器的 UI 自动化测试工具(如 selenium、Puppeteer)适用吗?vue 自己也有单测的手段,适用吗?

  • 上下文太少,无法回答这个问题。

    PS:中高级测试的面试,不大可能不涉及测试技术问题吧。

  • 可以直接给 httprunner 提个 pr ,修复下这个问题?

  • 建议先和领导沟通确认下,他想要的到底是啥,想解决什么具体问题?

    领导给的是方向,我们要沟通得出他为什么想要做这个,具体想要做成什么样,澄清他的需求。把方向直接当做目标,不一定就是正确的。

    这类文档规范很多,例如 google 的 Lighthouse ,但要做好要耗费不少精力的。首先得能监控到线上的访问速度数据(测试环境再快也没用,用户慢还是慢),然后对于特别慢的针对性定位解决处理,积累经验。最后再逐步把这个事情常态化,变为规范在开发阶段就遵守落地。

    一上来就直接到最后一步,整体团队很多时候并不那么容易转变过来的。在性能不能和当前业务需要挂钩时,做性能是很难得到团队的支持的。

  • 可以试试文中的套路?如果是有具体哪个点卡住了可以具体发出来。

  • 测试陷阱 1 - 放弃怀疑 at October 31, 2019

    非常同意,放弃怀疑其实就等于放弃了提前发现问题的机会,问题是不会自动消失的,所以整个团队最后还是会被这些问题所累。

    而且很多时候放弃怀疑的人在很多地方也都放弃了思考,变成单纯的执行者,只有工作年限带来的经验值,很容易被保持思考的应届生超越。

  • 建议排查思路:

    1、看下 appium 服务端日志,看下具体的报错信息是什么?
    2、看到报错信息,再对应去排查。

    现在你的错误日志已经在引导你去看 appium 服务端日志了(unknown server-side error,未知的服务端错误),所以你下一步最好就直接去看服务端日志看具体是什么报错。

    没有这个报错信息,大家也很难协助你,因为线索太少了。

  • 小建议,rabbitmq 有 java client 的,直接用那个把消息加到 mq 里是不是更直接省事?

    按照我们目前实践,除去配置项,用 client 5 行代码内应该就可以完成连接队列 + 插入消息的操作了。

  • 哈哈,认同。

    不是修改后问题消失了就是解决了,很可能问题其实没消失,只是变成另一个问题了,所以现象不同了。

  • 我测试了下,这个写法没问题。

    完整用例:

    - config:
        name: testcase description
        variables: {}
    
    
    - test:
        name: /account/sign_in
        request:
            headers:
                If-None-Match: W/"bc9ae267fdcbd89bf1dfaea10dea2b0e"
                User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36
                    (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
            method: GET
            url: https://testerhome.com/account/sign_in
        extract:
            X_CSRF_Token: <meta name="csrf-token" content="(.*)" />
        validate:
            - eq: [status_code, 200]
    
    - test:
        name: /account/sign_in
        request:
            data:
                commit: Sign In
                user[login]: chenhengjie123
                user[password]: xxx
                user[remember_me]: '1'
                utf8: ✓
            headers:
                Content-Type: application/x-www-form-urlencoded; charset=UTF-8
                User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36
                    (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
                X-CSRF-Token: $X_CSRF_Token
                X-Requested-With: XMLHttpRequest
            method: POST
            url: https://testerhome.com/account/sign_in
        validate:
            - eq: [status_code, 200]
    

    不知道你贴上来的用例是否完整,如果是,那你少了第一步的 get 请求(打开登录页面),所以导致没有生成 $X_CSRF_Token 变量。

  • 多用。

    同时简历里别写自己都好久没用的工具,被问倒反而变成扣分项了。

  • repeater 的主要特点是,针对写(post)操作,除了录制服务的流入流量,也可以录制服务的外部调用或者特定调用(如数据库查询、第三方服务调用等)。

    goreplay 看了下简介,没提及针对写操作的针对性适配,不确定是否也有类似能力。

  • 这块其实是工程化的部分了,并不复杂,所以暂时没有计划专门写文章分享这部分。建议可以自己探索学习下。

    repeater 是一个底层组件,还是需要不少探索改造才能在项目上实际使用的,建议要做好自己要额外开发一些配套东西的准备。

  • repeater-console 里没有对应方法,要用 repeater 里面序列化库的反序列化方法。

  • 从你前面配置步骤,没看出太大问题。但你的截图里总是有些像乱码一样的奇怪字符,不知道是不是你的系统默认字符集不大对。

    另外,有个很奇怪的点,你倒数第二个截图里面,repeat 请求返回的 data 值,没见到具体值是啥,展示不完整。

    然后最后的 callback 里用的 id 是必须用 repeat 返回的 data 里面带有的 id 的,因为它查询的是回放结果,直接用和请求 repeat 一样的 id 是不正确的。我刚刚也微调了下正文里的内容,强调一下这个点。