• @ycwdaaaa 坐阵 谁敢去?

  • 😆 给我整一个

  • capabilities.setCapability("automationName","uiautomator2");

    不清楚这句你是配置在哪里的.

    在 UICrawler 的 config.yml 里

    1 配置 appium

    #一些默认值
    DEFAULT_VALUE:
      #Appium server IP, 0.0.0.0代表Server在本地
      APPIUM_SERVER_IP: 0.0.0.0
      #Appium Server端口
      PORT: 4723
      #IOS 才会用到WDA_PORT
      IOS_WDA_PORT: 8001
    

    2 和启动 apk

    #以下的内容很关键,而且需要根据不同的APP定制
    CRITICAL_ELEMENT:
      #微信小程序用下面的包名
      #ANDROID_PACKAGE: com.tencent.mm
      #ANDROID_MAIN_ACTIVITY: com.tencent.mm.ui.LauncherUI
      #Android包名和启动的Activity
      ANDROID_PACKAGE: com.***.***
      ANDROID_MAIN_ACTIVITY: .****
    

    其它的你按需配置 .
    1 参考手机真机需要开启的相关开发者选项 开启相关,然后手机连上 USB 到执行 pc 机
    2 adb devices -l 确认执行 pc 找的到被测真机和 yourSerialNo 你的手机设备串号
    3 启动 appium --session-override

    4 在 UICrawler.jar 和 config.yml 的目录下 执行 java -jar UICrawler-2.21.jar -f config.yml -u yourSerialNo

    不需要指定 capabilities.setCapability("automationName","uiautomator2");

  • 同时注意,INPUTTEXT 在匹配到的 xpath 控件中输入 text 指定字符,输入需要提前安装 adbkeyboard , 且还需要在手机中手动设置为当前输入法
    该输入法工具 在工程目录 D:\Maxim\test\ADBKeyBoard.apk 下.

    D:\Maxim\test>adb install ADBKeyBoard.apk
    Success

  • 2018年10月24日
    已升级为 appium1.9.1 ,在 ubuntu18.04.1 windows10 升级后均重跑 UICrawler2.21 配置不变 成功
    升级记录

    https://testerhome.com/topics/12988#reply10 (以上为 win10 版本且带支持做 win32 uwp win 应用 UI 自动化的 appium1.9.1 升级方式.)

  • 2018年10月24日尝试升级 appium1.8.1 升级为 appium 1.9.1 记录:
    win10 OS 内部版本 17134.345
    Java version 1.8.0_181

    1 win10 所有设置->开发者选项 开启开发人员模式

    2 控制面板->程序和功能
    卸载掉 Windows Software Development Kit - Windows 10.0.16299.15 或者 Windows 10.0.0.17134.12 我实际保留了 Windows 10.0.0.17134.12 只卸载了 10.0.16299.15

    3 下载 17763.1.180914-1434.rs5_release_WindowsSDK.iso 并安装 Windows Software Development Kit 17763.1.180914

    4 控制面板->程序和功能
    卸载 Windows Application Driver V1.0

    5 下载 安装 WindowsApplicationDriverV1.1.msi 最终看到的版本是 V1.1.3.0

    6 管理员模式 powershell 卸载掉 appium 和 windows-build-tools
    npm uninstall appium -g
    npm uninstall --global --production windows-build-tools

    7 管理员模式 powershell 安装 windows-build-tools
    日志如下

    PS C:\WINDOWS\system32> npm install --global --production windows-build-tools
    > windows-build-tools@5.0.0 postinstall D:\nodejs\node-global\node_modules\windows-build-tools
    > node ./dist/index.js
    Downloading vs_BuildTools.exe
    [============================================>] 100.0% of 1.12 MB (1.12 MB/s)
    Downloaded vs_BuildTools.exe. Saved to C:\Users\cmd\.windows-build-tools\vs_BuildTools.exe.
    
    ---------- Visual Studio Build Tools ----------
    ---------- Visual Studio Build Tools ----------
    ---------- Visual Studio Build Tools ----------
    Successfully installed Visual Studio Build Tools.
    ------------------- Python --------------------
    Python 2.7.14 is already installed, not installing again.
    
    Now configuring the Visual Studio Build Tools..
    
    All done!
    
    + windows-build-tools@5.0.0
    

    8 管理员模式 powershell 安装 appium1.9.1
    日志如下:

    PS C:\WINDOWS\system32> npm i appium -g
    D:\nodejs\node-global\appium -> D:\nodejs\node-global\node_modules\appium\build\lib\main.js
    
    > appium-chromedriver@4.5.0 install D:\nodejs\node-global\node_modules\appium\node_modules\appium-chromedriver
    > node install-npm.js
    
    [13:37:31] [Chromedriver Install] Installing Chromedriver version '2.42' for platform 'win' and architecture '32'
    [13:37:31] [Chromedriver Install] Opening temp file to write 'chromedriver_win32' to...
    [13:37:31] [Chromedriver Install] Opened temp file 'C:\Users\cmd\AppData\Local\Temp\2018924-12004-j4vp48.psto\chromedriver_win32.zip'
    [13:37:31] [Chromedriver Install] Downloading https://chromedriver.storage.googleapis.com/2.42/chromedriver_win32.zip...
    [13:37:43] [Chromedriver Install] Writing binary content to C:\Users\cmd\AppData\Local\Temp\2018924-12004-j4vp48.psto\chromedriver_win32.zip...
    [13:37:43] [Chromedriver Install] Extracting C:\Users\cmd\AppData\Local\Temp\2018924-12004-j4vp48.psto\chromedriver_win32.zip to C:\Users\cmd\AppData\Local\Temp\2018924-12004-j4vp48.psto\chromedriver_win32
    [13:37:43] [Chromedriver Install] Creating D:\nodejs\node-global\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win...
    [13:37:43] [Chromedriver Install] Copying unzipped binary, reading from C:\Users\cmd\AppData\Local\Temp\2018924-12004-j4vp48.psto\chromedriver_win32\chromedriver.exe...
    [13:37:43] [Chromedriver Install] Writing to D:\nodejs\node-global\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe...
    [13:37:43] [Chromedriver Install] D:\nodejs\node-global\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe successfully put in place
    
    > appium-selendroid-driver@1.12.0 install D:\nodejs\node-global\node_modules\appium\node_modules\appium-selendroid-driver
    > node ./bin/install.js
    
     found:46] Java version 1.8.0_181
    [13:37:46] Ensuring D:\nodejs\node-global\node_modules\appium\node_modules\appium-selendroid-driver\selendroid\download exists
    [13:37:46] Downloading Selendroid standalone server version 0.17.0 from http://repo1.maven.org/maven2/io/selendroid/selendroid-standalone/0.17.0/selendroid-standalone-0.17.0-with-dependencies.jar --> D:\nodejs\node-global\node_modules\appium\node_modules\appium-selendroid-driver\selendroid\download\selendroid-server-7cf7163ac47f1c46eff95b62f78b58c1dabdec534acc6632da3784739f6e9d82.jar
    [13:38:38] Writing binary content to D:\nodejs\node-global\node_modules\appium\node_modules\appium-selendroid-driver\selendroid\download\selendroid-server.jar.tmp
    [13:38:38] Selendroid standalone server downloaded
    [13:38:38] Determining AndroidManifest location
    [13:38:38] Determining server apk location
    [13:38:38] Extracting manifest and apk to D:\nodejs\node-global\node_modules\appium\node_modules\appium-selendroid-driver\selendroid\download
    [13:38:39] Copying manifest and apk to D:\nodejs\node-global\node_modules\appium\node_modules\appium-selendroid-driver\selendroid
    [13:38:39] Cleaning up temp files
    [13:38:39] Fixing AndroidManifest icon bug
    
    > appium-windows-driver@1.4.0 install D:\nodejs\node-global\node_modules\appium\node_modules\appium-windows-driver
    > node install-npm.js
    
    info WinAppDriver You must use WinAppDriver version 1.1
    info WinAppDriver Verifying WinAppDriver version 1.1 is installed via comparing the checksum.
    info WinAppDriver WinAppDriver.exe version 1.1 already exists with correct checksum, not re-downloading
    
    > heapdump@0.3.9 install D:\nodejs\node-global\node_modules\appium\node_modules\heapdump
    > node-gyp rebuild
    
    
    D:\nodejs\node-global\node_modules\appium\node_modules\heapdump>if not defined npm_config_node_gyp (node "D:\nodejs\node-global\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "D:\nodejs\node-global\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
    在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。
      heapdump.cc
        正在创建库 D:\nodejs\node-global\node_modules\appium\node_modules\heapdump\build\Release\addon.lib 和对象 D:\nodejs\node-global\node_modules\appium\node_modules\heapdump\build\Release\addon.exp
      正在生成代码
      已完成代码的生成
      addon.vcxproj -> D:\nodejs\node-global\node_modules\appium\node_modules\heapdump\build\Release\\addon.node
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\appium\node_modules\fsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
    
    + appium@1.9.1
    added 524 packages from 419 contributors in 171.165s
    
    
    

    从上已知 1.9.1 winuiauto 的依赖如下:
    Java version 1.8.0_181 java 版本不是硬性 不明确
    windows-build-tools@5.0.0
    17763.1.180914-1434.rs5_release_WindowsSDK.iso
    WinAppDriver V1.1

    从已往记录已知 1.8.1 winuiauto 的依赖如下:
    windows-build-tools 3.1.0
    17134.12.180419-0858.rs4_release_svc_prod2_WindowsSDK.iso
    WinAppDriver V1.0

    如果 对应不上 实际最后的 npm i appium -g 就会报各种错 算是一种经验手段吧.

  • 一顿操作猛如虎,最后给个商业工具地址 😂 这很腾讯

  • Genymotion 在阿里云上线了! at October 12, 2018
  • @zyanycall 达康书记 首篇没了 第 二 第三篇呢

  • docker 化部署 实时性 Grafana 你可以问问你们运维

  • 你问 appetizer 作者 交流下 他们就是主攻这一方向的 APM 性能捕获 监控.
    腾讯 wetest 也有

    感觉 是两个方向 一个是 APM 应用性能监控 一个是 app 专项测试 如何自动化?

    那个 ATX 的作者,最近有集成关于 安卓机 cpu mem IO network 方面的监控好像 你也咨询下

    那个 Maxim 作者 也有很深的见解 和 方案 你都交流下吧

  • 1 从手工业务测试环境,导入数据过来.
    比如,相关行情数据,或订单数据,或部分用户表数据 等 可以直接按需导入 接口自动化测试环境

    2 导入后,还不满足的,可手工 通过前端 app 或 web 业务页面,或者 admin 后台界面 操作或管理生成.

    3 以上可能是一部分基础性数据的生成. 如果是 和接口测试验证过程中的数据,可以直接 jmeter 里 mysql 或 jdbc 连接到相关数据库 通过 sql beanshell 或自己写存储过程 调用自己封装的数据生成方法 jar 包 等等等 在执行过程中 用 jmeter 的 前置 后置处理器的 初始化 或 该条接口跑通后,恢复数据状态啊 或者销毁 具体看你接口被测需求 和 数据性质是否需要销毁 或者恢复相关字段状态 以保证后续接口回归该条用例 可继续通过.

    以上是常见方法..

    再高级的可能就是 docker 化 测试环境 和 数据库环境 k8s 管理这些环境的初始化 和 恢复吧...........这块 我也不太懂

  • 你咋啥都研究过 还让不让人活 你还有什么不会的吗? 说出来 我们大家笑一笑

  • @lunamagic jmeter 里边很强大 这个要用插件 来实现. Ultimate Thread Group 超级线程组.
    实际你这个问题 中文学名 叫加压负载策略. jmeter 里 对应的 概念 就是 Ramp-Up Inital delay starttime up holdloadfor

    看此图 你就明白了 . 是不是 很像 loadrunner 的加压配置图 可以控制线程组 或者叫虚拟用户数 vuser 的初始化等待 斜坡上升 持续时间 释放 等

    采集的话 就用 perfmon 插件 +serveragnet 你要控制采集策略的话 可以添加些前置后置 什么玩意 或 beanshell 之类的脚本 来配置?

  • 是否能只展示内存,网络,cpu 和磁盘 io?

    那就是 Telegraf 是负责监控硬件资源的 你看下他的官方配置文件. 你只导入这个面板 就可以了啊 . 如果你不需要 负载请求监控的话
    你自己设计面板 或 去找别人弄好的面板 https://grafana.com/dashboards 自己按需再改改.

  • 监控方案有很多:
    1jmeter 有自带的好多 就是那个查看结果树里的一些
    https://jmeter-plugins.org/ 插件里也有一些 比如 https://jmeter-plugins.org/wiki/PerfMon/ 这个插件

    2 用专业的 运维工具 如 楼上 提到的 zabbix 不同公司的运维人员 用的可能有点差异 统一找你们运维了解 和 使用一个标准的来统计和监控 一致性比较好

    3 Grafana+Influxdb+Telegraf 实际也是运维常用的监控工具 可配置性 和 面板界面 实时性 统计准确性 比较一致
    我看有人 测试对比过 jmeter 自带 或 linux 命令 监控的 和 Grafana+Influxdb+Telegraf 监控的对比 一致性非常好.
    这里说的是 负载监控 和 硬件资源监控 一致性都非常好 所以 我鼓捣了下这套 可配置性也非常强

    4 坛子里 我看还有大神 自己写的监控 好像主要面向硬件资源消耗的监控 https://github.com/mzky/easyNmon 利用 nmon 命令开发的.

  • 当 BlazeMeter 遇上 Taurus at August 22, 2018
  • 当 BlazeMeter 遇上 Taurus at August 22, 2018

    看到收费的了 我只想说一句 真是贵

  • @zyanycall Taurus (Blazemeter reporting services ) 了解一下. 重复的轮子

  • @zailushang 哈哈 千万不要卸载 Python3.4!!! ubuntu 和 mac 类 linux 环境 系统默认带的 Py2 Py3 都尽量不要动.动了 你就知道有多少依赖了. 你重复说了三遍, 我感受到了深深的怨念.

  • @wangpengfei100 楼主大神 想用树莓派 +airtest 玩什么花样 为什么一定要用树莓派

  • 1 可以先去 这个网址找有没 linux 下的 wifi 无线网卡驱动:
    https://wireless.wiki.kernel.org/ 然后按指示安装驱动.

    2 如果这里没有,可以查内核版本 直接支持到了哪些无线模块的驱动, 比如我的网卡 叫 rtl8723be 类似这样的名字 如果直接内核支持了 也就支持了.

    3 github 上 有开源驱动 我的就是 https://github.com/lwfinger/rtlwifi_new
    找好驱动 在确定 买什么网卡 主要是看 rtl**** 类似 或者其他网卡厂商的什么名字

  • https://confluence.atlassian.com/jira/connecting-to-ssl-services-117455.html

    也许要效仿这个 是 confluence 教你如何导入证书的操作

  • truststore 是放信任的证书的一个 store
    truststore 和 keystore 的性质是一样的,都是存放 key 的一个仓库,区别在于,truststore 里存放的是只包含公钥的数字证书,代表了可以信任的证书,而 keystore 是包含私钥的。

    意思是 我从浏览器导出的 JIanshucom.crt 是个 keystore 但是我转换导入进 cacerts 的时候 我没带私钥密码 (我怎么会有 jianchucom 的私钥密码) 所以即使导入 cacerts 了 也是无法被找到 key 值? 所以报 Problem loading keystore: No key(s) found
    ?

  • 不过 log viewer 里的证书 keystore 还是有错误 我 添加了 ubuntu java 的 Truststore 也就是
    /etc/ssl/certs/java/cacerts

    (没有用 $JAVA_HOME/jre/lib/security/cacerts 这个路径 ubuntu18.04 下会有个错误
    javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

    参考这个解决:
    https://stackoverflow.com/questions/6784463/error-trustanchors-parameter-must-be-non-empty
    就是 sudo apt install ca-certificates-java
    sudo update-java-alternatives -a
    sudo update-ca-certificates -f
    sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure 等几个命令可以解决该报错
    )

    system.properties 配置:

    # SSL properties (moved from jmeter.properties)
    #
    # See http://download.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#Customization
    # for information on the javax.ssl system properties
    
    # Truststore properties (trusted certificates)
    javax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts
    #javax.net.ssl.trustStore=$JAVA_HOME/jre/lib/security/cacerts
    javax.net.ssl.trustStorePassword=changeit
    #javax.net.ssl.trustStoreProvider
    #javax.net.ssl.trustStoreType [default = KeyStore.getDefaultType()]
    
    # Keystore properties (client certificates)
    # Location
    #javax.net.ssl.keyStore=.keystore
    javax.net.ssl.keyStore=/home/cmd/apache-jmeter-4.0/keyStore/jianshucom.jks
    #
    #The password to your keystore
    #javax.net.ssl.keyStorePassword=changeit
    javax.net.ssl.keyStorePassword=jianshucom
    #javax.net.ssl.keyStoreProvider
    #javax.net.ssl.keyStoreType [default = KeyStore.getDefaultType()]
    javax.net.ssl.keyStoreType=JKS
    

    但我的导出并转换的 jianshucom.jks kestore 还是会报错
    ERROR o.a.j.u.SSLManager: Problem loading keystore: No key(s) found

    然后,将该 jianshucom.crt 直接导出未转换的, 用 ketool 命令 导入 cacerts 如下操作:

    sudo cp ~/apache-jmeter-4.0/keyStore/jianshucom.crt  /etc/ssl/certs/java/
    ​keytool -trustcacerts -keystore /etc/ssl/certs/java/cacerts -storepass changeit -importcert -alias jianshucom -file jianshucom.crt
    
    # 查看条目 134 变135 说明添加进jianshucom了
    keytool -list -keystore cacerts    
    
    # 以下三条更新和修复 java certs 
    sudo update-java-alternatives -a
    sudo update-ca-certificates -f
    sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure
    
    #再启动jmeter 还是报错
    ERROR o.a.j.u.SSLManager: Problem loading keystore: No key(s) found
    

    坛子里 谁能 详解下 Truststore properties Keystore properties 这快资料基本靠 *** 了解 太多了 还有各种证书的知识 jks crt 什么的....
    http://www.cnblogs.com/princessd8251/articles/4326255.html
    https://www.blazemeter.com/blog/how-set-your-jmeter-load-test-use-client-side-certificates
    https://www.blazemeter.com/blog/how-to-use-multiple-certificates-when-load-testing-secure-websites
    https://developer.ibm.com/mainframe/docs/how-to-test-your-apis/how-to-configure-jmeter-to-use-client-side-ssl/
    https://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#Customization

    https 主要有几种方案 一种是 jmeter 的代理证书

    一种是用网站的 client-side certificate jks 单个证书的 详见 blazemeter 文章

    一种是用 kestore confignation 来做 Multiple Certificates 多个证书的 详见 blazemeter 文章