【问题标题】:How to detect if app is being operating by automated testing tools?如何检测应用程序是否正在通过自动化测试工具运行?
【发布时间】:2020-02-19 15:54:53
【问题描述】:

有时,黑客可能会使用自动化工具(例如 Robotium、Espresso、UiAutomator2、Appium)来自动操作我客户的应用程序,这些应用程序将集成我们的 SDK,以赚取利润。

那么如何不编辑应用程序本身,通过此类自动化测试工具(检查服务和流程除外)检测当前应用程序是否正在运行?谢谢~

【问题讨论】:

    标签: android automated-tests android-espresso android-uiautomator


    【解决方案1】:

    最好的方法是从应用程序中删除所有 ID、文本描述和其他帮助程序。即使有 ID 也有多个具有不同 ID 或动态 ID 的构建。其他方法有:

    定期重新设计应用程序,以避免使用图像比较自动化。 有更多的验证码或其他安全方法来避免自动化。

    【讨论】:

    • 如何做到这一点?这不会影响应用功能吗?
    • 用于 UI 元素的 ID 是应用程序元素/对象的元数据。它们根本不需要是静态的,甚至根本不需要在第一种情况下出现。
    【解决方案2】:

    嗯,最简单的方法是在发布版本时进行严格的 Proguard 配置。

    如果您假设有人会使用 Appium+Espresso/UiAutmator 创建一个脚本来与您的应用程序通信,请确保您的 proguard 规则中没有以下内容:

    -dontwarn com.google.android.material.**
    -keep class com.google.android.material.** { *; }
    
    -dontwarn androidx.**.
    -keep class androidx.** { *; }
    -keep interface androidx.** { *; }
    
    -dontwarn android.support.v4.**
    -keep class android.support.v4.** { *; }
    
    -dontwarn android.support.v7.**
    -keep class android.support.v7.** { *; }
    

    在这种情况下,您的应用根本不适合测试自动化。

    另外,如果您有自己的测试,请确保无法启动它们以发布 APK。大多数情况下没有伤害,但我见过一次:)

    【讨论】:

      猜你喜欢
      • 2019-11-22
      • 1970-01-01
      • 2015-04-17
      • 2014-04-28
      • 2017-03-08
      • 2021-07-18
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多