• 你的 App 有这个功能吗? Appium 这个层面做不到隐藏,可以滚动一下再点

  • 在这里找

  • 如果原来也是格式化的数据,应该也很容易转成 json
    404 NotFound 20170801 转成 {"code": "404", "descript": "NotFound", "date": "20170801"}

    不过不幸的团队各有各的不幸😂

  • Rails 的话,迁徙代码:
    change_column_null(:users, :nickname, false, 'nickname')

    把 users 表的 nickname 列设置为不可为 Null,如果有行 nickname 为 Null ,则把它设为 'nickname'
    这算是 Rails 提供的 “最佳实践” 吧

    如果有两个团队开发了两个应用,都在直接读写数据库使用 nickname 这一列,历史数据中有 nickname 为 Null 。
    一个团队需要 nickname 不为 Null ,已经开发完成准备上线,另一个团队一个月后才能开发这个变更。
    为了这一个月,第一个团队需要在应用代码中处理两种情况……
    这个坑其实在 “两个应用都直接读写数据库” 的时候就挖好了。

    如果还不能从根源解决,但能做到《持续交付》里说的,每次数据或数据结构变更必须使用在版本控制系统中的 SQL 文件完成。部署测试环境的时候就能知道有变更,对涉及的测试用例用两份数据执行两次。
    目的不明确的视角 13 楼方法挺好。

  • 你需要先弄明白你们 App 启动过程中 Activity 出现顺序
    adb logcat -b events | findstr yourAppPackageName

    当 apk 包的 activity 与打开应用后其它的 activity 不匹配时候,应该怎么办?

  • 以前用虚拟机是利用快照和镜像。之后数据库在 Docker 容器里,准备好数据之后 ``
    执行

    # 准备数据
    docker commit api-test init:1
    # 执行测试
    docker run --name api-test init:1
    begin api-test
    # 执行测试
    docker run --name api-test init:1
    begin api-test
    # 追加测试数据
    docker commit api-test init:2
    # 执行测试
    docker run --name api-test init:2
    begin api-test
    

    Mock 自己也写过、也用过现有工具、也用过在线服务。

    一个技术方案是在很多因素影响下产生的:组织结构、要达到的效果、人员技术能力、硬件资源、投入时间……

  • 那接口测试时需要组合的就有 0、10、9、-1、” 0”、11、””、null 等接口测试用例组合

    比如 Google 地图 API 这种在互联网上公开的接口,能做到这些算合格。一个内部管理系统能做到就很优秀了。
    我见识少,接触过的公司,能做到一个接口有一条正向用例的就很少了。

    用 TestNG 的话,就是写 JAVA 咯,用 JDBC 写 SQL 或者 ORM 框架也行,比用 Shell 好一些吧。

    不过需要在 Host 切换、token 、数据恢复上花很多心思,说明在环境治理上还很原始。这些问题会影响交付过程中的方方面面,并不是接口测试时才会面临的问题。

    见过最好的项目,没有数据恢复的说法,因为每次测试执行都在新环境上。测试代码里也不需要准备数据,因为维护了有一个包含测试数据的镜像。测试环境包含了三方服务(包括单点登录)的 Mock 服务,所以测试代码里也不需要这些东西。

  • 有事不能去了,转一张票
    已转

  • 已领取

  • 这里可以使用 “参数化构建过程” 中添加的参数。
    不过会什么要在一个项目里使用不同分支?

  • 你知道这两个的区别吗
    .//*[@text='toast']
    .//*[contains(@text, "toast")]

  • 没去试带图片的,查找的时候不需要文本完全一致,.//*[contains(@text, "toast")]

  • 公司支付薪水,你付出时间。
    每次碰到这种情况,把浪费的时间记下来,如果有其他人一块记录就更好了。看看一个月有多少。

  • @seveniruby @Lihuazhang 17 和 20 都是 “手机为什么那么烫揭秘”

  • 在微信里一直是 “正在跳转”
    iOS 10.3.3
    微信 6.5.8

  • 点 “阅读原文”,是打开这个链接吗? https://proxy.testerhome.com:8000/

    无效的证书
    错误码 107 (net::ERR_SSL_PROTOCOL_ERROR)

  • 聊聊发布 at 2017年08月14日

    1、无固定发布周期

    近几年发现,仅仅做测试执行,学习测试技术运用,远远没有推动整个团队的测试质量提升更有成就感。

    刚入行的时候看了不少测试的、软件工程之类的书。觉得在目前软件开发水平分工和垂直分工这么多的情况下,一个基础扎实的新人,在没有过多帮助的情况下,一天之内搭建一个自用的环境,并且可以信任它的表现和生产环境一致性很高,应该是基础的要求吧。现在觉得现实真是无情。

    “欸,好像是个 bug 。”
    不对,前置项刚被别人改了。
    换一条……还不对,这条历史数据有问题,大概有人直接改数据库个改错了。
    算了,从头造……还不对,这里调用方是写死的,只能固定的 id 才有效
    那就用固定的……“喂,A 君,这个 id 我正在用你怎么改了。”“一会就好,稍等稍等 “
    固定 id 也不对,总该是 bug 了吧……“我们组用另一个 IP ,你绑错 host 了” “但是依赖功能要用另一个呀”“那我不知道,你想想办法吧”
    折腾半天,终于想办法绕过了,还不对……“哦,依赖服务的测试环境被他们改坏了,还没修,你试试用生产吧”
    好,试就试……“哎呀不行,这里有加密、测试和生产密钥不一样”“那做个挡板?”“行啊、你问运维开权限吧”
    “不能用 szrz 传文件呀?”“不能,用 FTP”“FTP 每次传都要输密码呀”“是的”
    还不对,欸怎么数据没变, 怎么 500 错误了……哦刚有人在发布
    还不对,大概是 bug 吧,提到系统里。“过来看看啊,我本地复现不了啊”……看了半天之后 “你本地配置文件多久没更新了啊,和线上差太多了啊”
    “你用的参数不对呀”“是 B 君给我的参数表”“哦,测试环境没用那个,给你另一份,用这个算”
    还不对,大概可能也许是 bug 个吧?
    “嗯,是 bug ,这个问题我昨天发现已经改了,你重新发布下测试环境就好了”
    “@#%!#@%¥¥#”

  • 请教全链路压测的概念 at 2017年07月30日

    从看的文章和听的演讲理解,目的是对生产环境产生压力并观测数据,为了不对真实用户产生影响,有一些关键问题要处理:

    1. 写数据如何处理
    2. 不造成生产环境不可用
    3. 读时效性数据

    至于其他方面,没看出有什么区别。如果没有技术债等原因产生的部署困难,部门隔离等组织原因。对测试环境产生压力也是要尽量实现 “全链路” 什么的。如果理解的对,大概是是 “全链路压测” 这个名字起得不好。

  • Export Charls Root Certificate and Private Key 导出 .pem 格式的证书再传输到手机上安装

  • 了解设计、标准,看 RFC 。实际实现时,怎么做的都有。
    很多不同是因为服务端和浏览器的实现,并不一定符合 RFC ,服务端框架和浏览器对 HTTP 的实现也是随着版本更迭在变化。

  • 对第三方支付进行整体 mock

    这样也绕不过加密解密呀?

  • “服务器不稳定” 太暧昧,需要继续问 “为什么”
    关键是,整个系统的设计里,前端怎么判断抢红包的过程结束了呢?
    如果是这种轮询设计:

    1、前端:“现在第一名是谁?” 后端:“是甲。”
    2、前端:“现在第一名是谁?” 后端:“是乙。”
    3、前端:“现在第一名是谁?” 后端:“抢完了别问了。”
    

    服务器在并发压力大的情况下,漏了第 2 步的响应——网络不好,服务端出错,都会产生这个 bug 。
    排查后得到的 bug 根因就不是性能问题,而是设计问题。

    1、前端:“现在第一名是谁?” 后端:“是甲,没抢完。”
    2、前端:“现在第一名是谁?” 后端:“是乙,没抢完。”
    3、前端:“现在第一名是谁?” 后端:“是丙,抢完了。”