8

我目前正在寻找一种自动测试 Android 应用程序、原生 Android 应用程序以及混合 Cordova/Phonegap 应用程序的解决方案。

Google 的 UI Automator 看起来不错,但无法处理 WebView,这让我无法使用。然后我发现了有前途的基于 Selenium 的自动化框架Appium,它应该也可以处理混合应用程序,但是我无法让它与 WebViews 一起使用,它似乎还没有完全实现,正如一些帖子所证明的那样。

在尝试了 Appium 之后,我发现了Selendroid的提示,它也应该适用于混合应用程序,但它似乎有很多错误,并且一直在让我的整个计算机崩溃。

那么,这里有没有人知道使用 WebViews 测试 Android 应用程序的有效解决方案?我正在使用 Windows 7。非常感谢您的帮助。

4

3 回答 3

6

在第一种情况下,我们需要知道您喜欢进行什么样的测试。我认为您喜欢在 UI 上运行功能测试?这就是我在阅读你的问题后能想到的。

因此,让我们按给定的环境拆分它:

原生 iOS

原生安卓

原生网络,如 phonegap/cordova 应用

native X - 适用于所有平台的开箱即用解决方案

  • 我们到了。没有自动取款机。但是.. 镜头就是这里的那个:

基于 appium 的 Gappium 使用 json 来编写测试。当我得到正确的线程时,此刻它是带有 Web/iOS 的 testet。Android/Win 目前似乎没有集成:

https://github.com/appium/io.appium.gappium.sampleapp

phonegap & apache cordova 功能测试注意事项:

可以使用ripple 和selenium 来测试混合应用程序。请记住,某些本机功能/插件(嘿嘿混合应用程序上的本机功能... =)无法测试或需要以未知方式模拟。这就是此刻的镜头。

在此处输入图像描述

可能对您有用的持续集成服务器:

https://github.com/linslin/PHPUnit-selenium-HTMLGallery

于 2014-01-22T23:17:47.393 回答
2

一般来说,使用基于 API 的方法测试混合应用程序是一个相当大的挑战。可以这样做,但通常您需要将 UI 技术(例如 WebView、Native、OpenGL...)与多个 API 或某种包装器(如 Selendroid)集成。

在 TestObject(我是联合创始人之一),我们创建了一种基于图像的 UI 测试方法,专门用于混合应用程序、应用程序之间的交互等情况。这种黑盒方法完全基于捕获屏幕——我们不在乎下面发生了什么。

随意尝试一下 ( http://testobject.com/ ) 与您的混合 Cordova/Phonegap 应用程序,让我知道它与 UI Automator、Selendroid、Appium 相比如何工作。如果您遇到任何问题,请告诉我们。

于 2013-09-11T14:09:05.857 回答
1

我用我们自己的 Cordova 应用程序 (sourceforge.net/p/ustadmobil/codehtml5cordova/ci/master/tree/) 面临了这个挑战;我需要一种将其与 Jenkins CI 集成的方法。我们有 Cordova 特定的代码(例如文件系统访问),所以不能只使用 PhantomJS 和 Grunt。

基本上我所做的是在模拟器中以 index.html 作为测试页面启动应用程序,运行 http 服务器,然后让测试页面使用 AJAX 将结果传回。

  1. 脚本使用包
    $ /opt/adt/sdk/tools/emulator-x86 -avd $AVDNAME -qemu -m 2047 &
    $ EMULATEPID=$! 启动模拟器。
    $ adb wait-for-device #等待设备启动 $ adb shell input keyevent 82 #解锁屏幕

  2. 使用 qunit 创建一个测试页面,完成后将通过 AJAX 调用传达测试结果。

  3. 制作一个基本的 nodejs 服务器脚本,它将监听该 ajax 调用并将结果保存到文件中。然后 bash 脚本可以读取该文件并确定测试是通过还是失败:请参阅http://sourceforge.net/p/ustadmobil/codehtml5cordova/ci/master/tree/setup/node-qunit-server/node-qunit-服务器.js
  4. 在构建脚本中等待结果文件出现,然后终止模拟器和 NodeJS 服务器 - 请参阅http://sourceforge.net/p/ustadmobil/codehtml5cordova/ci/master/tree/setup/android/unit-test-设置-android.sh

另外值得注意的是:这种方法适用于 Cordova 的跨平台性质:应该可以采用相同的方法运行 iOS、Windows Phone 模拟器等(我也使用这种测试方法来对抗我们的 NodeWebKit 桌面版本,它共享大部分代码) .

希望这可以帮助,

-麦克风

于 2014-07-01T07:16:23.043 回答