• @JinZhu 这样子之后 除了可以 DDMS 无法查看设备进程 还可以解锁哪些姿势?😅

  • HttpRunnerManager 正式发布 at March 05, 2018

    @yinquanwang 能否制作个 docker 部署

  • 你可以看看这个 http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=486788 前几天升级内核 116 之后,注销然后切换到了 gnome 环境,然后再重启 进入 unity 桌面环境后,就这个德性了 没 无启动栏 launch,无 menu bar 只有桌面背景. 实际是 unity 的事.
    我重启后 进入上一内核 112 是加载界面正常的 ,那就说明 116 内核还有救,我就登录 116 内核 选择 recory 模式进命令行,然后操作那些命令 去卸载 unity 然后重装 unity7

  • 如果是黑屏 或 读进度后 一直黑进不去的话 看你的界面是 unity 还是 gnome 一般默认用的都是 unity7 桌面环境,
    一般都是 unity7 的问题, 重启选择那个第二个 recory 模式 进入 tty 命令行,去卸载 然后重装 unity7.

  • @debugtalk

    api
    suite
    testcases

    这么分,起名起的脑仁子疼. 能不能推荐或整理个 命名原则规范.....

  • 更新后 发现
    是 ape.strings 对应现在的 max.strings
    ape.xpath.actions 对应现在的 max.xpath.actions

    还多了一个 max.config 是配置什么的

    cmd@TR:~/workspace/git/Maxim$ cat max.config 
    max.startAfterNSecondsofsleep = 6000
    max.wakeupAfterNSecondsofsleep = 4000
    
    
  • 我觉的 人工智能测试 可以搞测试,不过要看什么样的企业. 给多少投入,定了人工智能测试要到什么目标.

    这种企业 100 家 只有 2-3 家可以符合这种规模和体量还有 money 的吧. 说 BAT 搞我信.
    我们这种二线 三线小厂 还是业务测试为王, 有点盈利上规模了,才会上些接口自动化 和 UI 自动化 和持续集成.

    做到以上两点 业务测试 和 有给配个 2-3 个人 做接口自动化 和 UI 自动化 和持续集成 就已经算测试行业内不错的企业了.

    做好以上两点的企业,我觉的 可以搞搞 组合 Fuzzing 模糊测试,这东西 还和以上两点 关系密切些,对组合好用例和精简用例 有很大帮助.

    最近 也接触了一些 Fuzzing 模糊测试开源工具,有 google oss-fuzz 的 有微软的 neural fuzzing
    和比较有名的 Hypothesis

  • 基于 python 学习简单 底层用的 uiautomator2 python 版( 既是晓聪根据 google uiautomator2 改的 python 版)

    制作了个 atx-agent 安装到手机端(既是一个 u2 server 类似 appium server 的角色)
    处理速度快。 同功能脚本 手机 你可以测试用 appium 和 u2 分别做同样的用例 来比较

  • 是啊,快快弄好 httprunner 有人扒了 Locust https://testerhome.com/topics/11853 的新衣,性能请求不足,您老怎么看。

  • Author only
  • 1 是否支持同步, HITCHHIKER_SYNC_ONOFF 同步什么内容,和谁同步? docker 镜像里 是否开启同步了? 怎么查 docker 镜像中配置的环境变量?
    2 "api": "http://ip:port/api/", // API 接口,调试用, 环境变量使用上面的 这个具体怎么用 后边接哪些 去哪查?
    3 "safeVM": false, // 是否使用安全脚本,如 require HITCHHIKER_SAFE_VM 安全具体怎么个安全法?
    4 "enableUpload": true, // 是否支持上传脚本和数据, HITCHHIKER_ENABLE_UPLOAD 同问题 1 docker 镜像里 是否开启了? 怎么查 docker 镜像中配置的环境变量?
    其他问题都类似, 就是怎么安装 docker 镜像前,如何查当前配置的 Hitchhiker 环境变量。。。。

  • @brookshi appconfig.json 也就是 http://doc.hitchhiker-api.com/cn/installation/configuration.html
    里边注释的这些 都可以写进 docker-compose.yml 中对应各节配置的 environment: 的吧?

    我都提取了出来,您看下 是不是下边的格式或支持的都可以写到 docker-compose.yml

    有几个问题:
    1 都可以改吗? 哪些不推荐更改 使用默认?
    2 有些使用效果不明,能更详细说明吗?
    3 这些参数支持,docker 安装部署后,热修改更新吗?会立即生效吗? 还是初始化后不可改?

    hitchhiker:
        environment:
          - HITCHHIKER_APP_HOST=http://localhost:6666/ # 修改为本机ip及端
          - HITCHHIKER_APP_LANG  # 语言目前只对邮件内容起作用
          - HITCHHIKER_SYNC_ONOFF # 是否支持同步
          - HITCHHIKER_SYNC_INTERVAL # 同步间隔单位()
          - HITCHHIKER_DEFAULT_HEADERS # 请求默认带的headers
          - HITCHHIKER_SCRIPT_TIMEOUT # 脚本执行时间毫秒
          - HITCHHIKER_SAFE_VM # 是否使用安全脚本
          - HITCHHIKER_ENABLE_UPLOAD # 是否支持上传脚本和数据
          - HITCHHIKER_APP_INVITE_DIRECTLY # 不通过邮件验证来邀请成员
    
          - HITCHHIKER_DB_HOST # mysql 的host
          - HITCHHIKER_DB_PORT # mysql端口
          - HITCHHIKER_DB_USERNAME # mysql 用户名
    
          - HITCHHIKER_SCHEDULE_DURATION # schedule 监测时间间隔
          - HITCHHIKER_SCHEDULE_STORE_UNIT # schedule 存储的单位支持按个数存 count 和按天存: day
          - HITCHHIKER_SCHEDULE_COUNT # schedule 存储的大小
          - HITCHHIKER_SCHEDULE_STORE_CONTENT # schedule record response 是否存储, all表示所有都存下来, forFail表示只存失败的, none表示都不存这会很大影响数据库大小和性能
          - HITCHHIKER_SCHEDULE_PAGESIZE # schedule record 在浏览器端显示的一页的个数 
          - HITCHHIKER_SCHEDULE_MAILFORFAIL # 只在失败时发邮件
    
          - HITCHHIKER_STRESS_COUNT # 压力测试表最大长度
          - HITCHHIKER_STRESS_PORT # 压力测试的端口
          - HITCHHIKER_STRESS_UPDATE_INTERVAL # 压力测试实时更新时的间隔毫秒  
    
          - HITCHHIKER_MAIL_CUSTOM #是否需要自定义mail可以使用 "api"  "smtp"
          - HITCHHIKER_MAIL_API # custom为"api"时会使用这个mail接口, Hitchhiker会post {target, subject, content}到这个接口
          - HITCHHIKER_MAIL_SMTP_HOST # "smtp.qq.com"
          - HITCHHIKER_MAIL_SMTP_PORT 
          - HITCHHIKER_MAIL_SMTP_TLS # 是否需要走tls加密
          - HITCHHIKER_MAIL_SMTP_USER # smtp用户名  "***@qq.com"
          - HITCHHIKER_MAIL_SMTP_PASS # smtp密码
          - HITCHHIKER_MAIL_SMTP_From # 发邮件的邮箱默认空会使用user
          - HITCHHIKER_MAIL_SMTP_NICKNAME # nickname昵称
          - HITCHHIKER_MAIL_SMTP_RU # 证书验证不通过时是否报错
    
          - MYSQL_ROOT_PASSWORD=hitchhiker888  # mysql密码
          - MYSQL_DATABASE=hitchhiker-prod # mysql 数据库
    
    
  • @zyanycall
    坛子里的人用 Hitchhiker 的多吗?

    看了这几天有人评 Locust

    https://testerhome.com/topics/11853

    感觉还不如目前公司在用的 jmeter 了,一直在找替代方案.HttpRunner 也使用过,里边也有用 Locusts 做压测端.

    不知道谁评测过 Hitchhiker 的压测能力和水平.@zyanycall 要不来一波啊,看看他的皇帝的新衣能被扒否?

  • C:\Users\cmd>adb devices -l
    List of devices attached

    • daemon not running. starting it now on port 5037 * error: could not install smartsocket listener: cannot bind to 127.0.0.1:5037: 通常每个套接字地址 (协议/网络地址/端口) 只允许使用一次。 (10048) could not read ok from ADB Server
    • failed to start daemon * error: cannot connect to daemon

    C:\Users\cmd>adb kill-server

    • server not running *

    C:\Users\cmd>taskkill /f /im adb.exe
    成功: 已终止进程 "adb.exe",其 PID 为 10480。
    成功: 已终止进程 "adb.exe",其 PID 为 2740。
    成功: 已终止进程 "adb.exe",其 PID 为 14784。
    成功: 已终止进程 "adb.exe",其 PID 为 10364。

    请尝试以上命令 adb kill-server 或 taskkill /f /im adb.exe

  • monkeyTest 工具使用排坑记 at February 05, 2018

    😁 哈哈。怼怼受关注,怼怼修复快。

  • 又骗我学 Fuchsia😆 ?

  • monkeyTest 工具使用排坑记 at February 05, 2018

    @lose
    还是作者的老风格, 总把一些跑自家的东西写死,也不处理为相对获取....
    这哪里是开源.....

    
    BaseMonitor.py
    if __name__ == '__main__':
    
        # cpu_rate("2749")
        pid = get_pid("com.jianshu.haruki", "DU2TAN15AJ049163")
        # print(pid)
        # get_flow(pid, "wifi", "DU2TAN15AJ049163")
        # get_battery("DU2TAN15AJ049163")
        # get_men("com.jianshu.haruki", "DU2TAN15AJ049163")
        # print(get_cpu_kel())
        # cpu_kel = get_cpu_kel("DU2TAN15AJ049163")
        # print(cpu_rate(pid,cpu_kel,"DU2TAN15AJ049163"))
        get_flow(pid, "gprs", "emulator-5554")
        # print(get_flow("com.jianshu.haruki", "gprs"))
        # print(get_flow("com.jianshu.haruki", "gprs"))
        # print(get_flow("com.jianshu.haruki", "gprs"))
    
    
    
    
    BasePickle.py
    if __name__ == "__main__":
        # readInfo(PATH("../info/DU2TAN15AJ049163_battery.pickle"))
        # readInfo(PATH("../info/emulator-5554_fps.pickle"))
        # readInfo(PATH("../info/emulator-5554_battery.pickle"))
        # readInfo(PATH("../info/emulator-5554_men.pickle"))
        # readInfo(PATH("../info/DU2TAN15AJ049163_men.pickle"))
        # readInfo(PATH("../info/emulator-5554_flow.pickle"))
        readInfo("E:\\app\\py\\monkey1\\info\\info.pickle")
        # readInfo(PATH("../info/DU2TAN15AJ049163_cpu.pickle"))
    
    
    BaseReport.py
    if __name__ == '__main__':
    
        workbook = xlsxwriter.Workbook('report.xlsx')
        info = [{'emulator-5554': {'cpu': 'E:\\app\\py\\monkey1\\info\\emulator-5554_cpu.pickle', 'battery': 'E:\\app\\py\\monkey1\\info\\emulator-5554_battery.pickle', 'men': 'E:\\app\\py\\monkey1\\info\\emulator-5554_men.pickle', 'flow': 'E:\\app\\py\\monkey1\\info\\emulator-5554_flow.pickle', 'header': {'rom': 770300, 'kel': '2核', 'monkey_log': 'E:\\app\\py\\monkey1\\log\\55dd9a83-3337-46d5-bb1f-6f64b85be7cbmonkey.log', 'beforeBattery': 99, 'pix': '1440x810', 'time': '10秒', 'afterBattery': 99, 'phone_name': 'GT-I9500_samsung_4.4', 'net': 'gprs'}, 'fps': 'E:\\app\\py\\monkey1\\info\\emulator-5554_fps.pickle'}}, {'DU2TAN15AJ049163': {'cpu': 'E:\\app\\py\\monkey1\\info\\DU2TAN15AJ049163_cpu.pickle', 'battery': 'E:\\app\\py\\monkey1\\info\\DU2TAN15AJ049163_battery.pickle', 'men': 'E:\\app\\py\\monkey1\\info\\DU2TAN15AJ049163_men.pickle', 'flow': 'E:\\app\\py\\monkey1\\info\\DU2TAN15AJ049163_flow.pickle', 'header': {'rom': 3085452, 'kel': '8核', 'monkey_log': 'E:\\app\\py\\monkey1\\log\\732ac6cd-dd84-4818-80ea-d9b5339c6774monkey.log', 'beforeBattery': 94, 'pix': '1080x1920', 'time': '15秒', 'afterBattery': 94, 'phone_name': 'H60-L02_Huawei_4.4', 'net': 'gprs'}, 'fps': 'E:\\app\\py\\monkey1\\info\\DU2TAN15AJ049163_fps.pickle'}}]
    
    
        tem = OperateReport(workbook)
        tem.monitor(info)
        tem.analysis(info)
        tem.crash()
        tem.close()
        # print(len(data["cpu"]))
    
    
  • https://github.com/openatx/uiautomator2 是基于 google 的 uiautomator 的 python client API 实现
    https://github.com/NetEaseGame/ATX 是基于图像识别的

  • 我意思是 抽离解决方案。。。 搞那种共性问题 的通用解决方案,或者集思广益 提供方案的时候 说明是基于什么前提上下文场景的一个方案。 否则,其他人只能自己玩了一遍后 才知道适合不适合,大大增加了时间和精力成本。

  • atx 的 uiautomator2 同样功能 比如我之前做的 android toast 同样的功能 同样的被测 app 同样的手机。
    比较下来, atx 的 u2 连接到启动 app 这块 明显比用 appium 的 u2 快,感官上就明显感到 atx 的 u2 连接秒连,而 appium server 你就看吧 日志滚啊滚啊 adb 操作啊 安装 io-appium-server 操作啊 检查这个操作啊一顿下来,10 几 20 秒过去了。。。。

  • 嗯 是的,好多共性问题,都有不同的解决代码方案。但各个方案也许都有坑,或不适合自家项目的场景。所以希望 大神进来评估和讨论。

    我现在重点看 joko 的 Auto_Analysis 和 lose 的 appium 两个项目。

    Auto_Analysis 代码非常工整简洁,用的都是 py 高级写法,logging 管理用的也是看的执行过程非常的爽,感觉目录结构 lib po pulic 这些更像是一个搞过 java 项目的。

    lose 测试小书童 近期更像频繁啊,star 数明显增加,目录结构命名更符合 py 目前流行的 pageobject 那种,但代码没 Auto_Analysis 工整,基本 demo 里有许多自家 app 测试的东西,没有完全剥离开,好多用例也都保留在了项目里,不像 Auto_Analysis 做了一个测试 apk 和 Demo。但它的用例维护比较麻烦 要改三处 py 好像,

    不过这些都不是大问题,lose 测试小书童 的学习和整合能力明显更强,很有潜力。开源就是怕你开源了就不维护了。

    群里还是有很多大神的,但感觉有的好东西,都是藏着掖着给自家用的。。。。

  • Appium 开源分享优化版 at February 02, 2018

    创建文件/home/cmd/workspace/git/appium/Log/info.pickle 成功
    创建文件/home/cmd/workspace/git/appium/Log/sum.pickle 成功
    创建文件/home/cmd/workspace/git/appium/Log/devices.pickle 成功

    创建这几个文件 和 *.pickle 是做什么用的 能介绍下吗?

  • 支持楼主的分析精神 鼓捣精神。就是需要您这样的先行者。

  • 😁 😅 插桩的源码工程 也是开源的啊 这个我没仔细调试过,难度太大了。。。。也没时间仔细看。