IOS自動テスト

IOS自動テスト

 

I.背景概要テスト

クローズドシステムによるテストモバイルインターネット時代の発展に伴い、携帯端末の自動テストは、Androidプラットフォーム上で全体のより多くの自動化ツールとプラクティスに、ますますアクティブになった、IOS UIオートメーション、それはあまり成熟してきました。エンジニアリングに侵入し、自動テストプログラムのネイティブ実装を受け入れないの原則。自動テストは時間がすべてのiOSモデルは安定した動作のそれぞれのオンラインバージョンを確認するためにテストを手動回帰を繰り返さないようにするには、オンラインで前それぞれにテストカバーするために実際のマシンのコスト、そしてより効率的に保存されます。

 

二、iOSのAppium原則

Appium自動テストを使用して研究を通して、それは、iOSとAndroidの、Webアプリケーションやハイブリッドアプリケーションのネイティブアプリケーションのサポート、オープンソースのツールであるAppiumをテスト自動化。

 

  • 「モバイルネイティブアプリケーションは、」書き込みへのiOSやAndroid SDKでそれらのアプリケーションを指します。

 

  • 「モバイルWebアプリケーションは、」モバイル・ブラウザアクセス(iOSのAndroid上でAppiumサポートSafariとChromeを)使用してアプリケーションを意味します。

 

  • ネイティブコードのWebコンテンツとの相互作用 - 「ハイブリッドアプリケーションは、」ネイティブ・コード・ページビューパッケージを指します。例えば、我々はマイクロ手紙でページを表示することができ、Web経由で映画のチケットを購入するために使用することができます。

それは重要である、Appiumは、クロスプラットフォームのツールです:それは、それによって大幅にiOSとAndroidのテストスイートのコード間の再利用性を高め、テスターが異なるプラットフォーム(iOS版、Androidの)上の自動テストスクリプトを作成するためにAPIの同じセットを使用することができます。

  • Appium利点

  • オープンソース

  • クロスアーキテクチャ:ネイティブアプリケーション、Hybirdアプリケーション、Webアプリケーション

  • クロスデバイス:アンドロイド、iOSのは、Firefox OS

  • ソースを頼ってはいけません

  • 書き込みテストケースに任意の言語との互換性がwebdriverを。Java(登録商標)、Objective-Cの、のNode.jsとJavaScriptの(コールバックおよび収率系風味の両方において)、PHP、Pythonの、ルビー、C#、Clojureは、またはPerlなど。

  • APPは、再コンパイルする必要はありません。

  • IOSは、記録ビデオ電話をサポートしています

  • Appiumアイデア

  • あなたは、自動化、または変更し、アプリケーションを再コンパイルする必要はありません。

  • あなたは、書き込み、実行、テストスクリプトに特定の言語やフレームワークに限定されることはありません。

  • モバイル自動化フレームワークは、インターフェイス上で繰り返しホイールを作成しないでください。(モバイルオートメーションインタフェースが統一されなければなりません)

  • それは精神的、または名目であるかどうか、オープンソースでなければなりません。

1. iOSの9.3自動テストシステムの前に

チャート:

実行中のプロセス:

 

1-1。ネイティブオートメーション

これは、iOS 9.3自動テストシステムのアーキテクチャモデルの前にあります。AndroidのAppium原理を学習することによって、iOS Appium原理を理解することは簡単です:

最後AppiumサーバーへAppiumクライアント側の実装コードは(サーバはAppleの公式楽器を組み込ん); bootstrap.jarを注入しながらサーバー側は電話で、ラインによる命令コードの行に翻訳;サーバーのjarパケット通信を転送命令でbootstrap.jarに、自動化されたjarパッケージ電話は、フレームワーク(UIAutomation)、フレームワーク指令のUIAutomationの実装をテストします。

1-2。ハイブリッド(WebViewの)自動

学習のAndroidのAppiumの原則により、Androidの4.4システムの後、Appium ChromeDriverはハイブリッドページの自動テストの使用をサポートしています。だから、iOSの上でそれを行う方法ですか?初期のアップルは、iOS、Appiumた配達指示による統合フレームワーク上(Appleの自身の公式が開発した独自の通信プロトコルである)公式のiOS WebKitのデバッグプロキシを提供してきました。

 

 

2. iOSの9.3自動テストシステムの後

iOSの中Appium工具交換:

 

  • UIAutomation前のiOS 9(により単一のデバイス、MACに対応する単一の制限のための器具の欠点)機器の基礎となる技術に駆動されています。

  • iOSの9.3時代はUIAutomationの代替としてXCUITestツールを開始しました。

  • 直接UIAutomation、FacebookのリリースWebDriverAgent(複数の機器に対応するMACをサポートすることができ、単一のサーバに実装)捨てられたアップルのiOS 10回。

  • プログラムのiOSの9.3 WebDriverAgentフル使用後Appium。

 

2-1。WebDriverAgentについて

 

FaceBook 出品:

  • 実装し、サーバ、リモートでのサーバのiOSデバイスで制御することができます。アプリケーションを起動し、近いアプリケーション、クリック、スクロールなどの操作。

  • アップルは、アクションを実行するためにXCTest.frameworkのAPIを接続することによって呼び出されます。

  • 同時に複数のデバイスの自動化をサポート。

  • Appium、カニクイザルはすでに統合されています。

  • WebDriverAgentだけでスクリプトを記述するための唯一つのサーバー(および元素の位置を検査)、およびないAppiumとして提供されるクライアント - PythonやJavaなどを提供しますが、命令のスクリプトの実行時間を実行するために、サーバーに送信され、されています。WebDriverAgentは、Java / Pythonのwebdriverをライブラリパッケージを取り、その後、コマンドを送信することである、クライアント側を実現する必要があります。Appiumサーバ、単にサーバーに似て、実際にWebDriverAgentだから。

 

2-2。Appiumオートメーションアーキテクチャモデル上のiOS 9.3の後

 

  Appium非常に失礼全体WebDriverAgentは、クライアント側の役割を独自のプロジェクトに直接統合し、左WebDriverAgent通信メカニズム、Appiumファクト申し出。だから、iOSの9.3自動テストシステムの後WebDriverAgentのコアがAppiumは、書き込み、送信コマンドにクライアント側のスクリプトを提供するものです。

 

 

以前の研究では、我々はAppiumオートメーション・アーキテクチャモデルのアーキテクチャは、抽象表現を使用することができます知っている、これは以下の通りであります:

 

 

iOSの9.3以降Appiumオートメーション・アーキテクチャパターンは以下の通り:

 

 

 

図から見ることができます。

 

  • Appium前に、クライアント端末自体を提供します。

  • サーバー側は、次のとおりです。WebDriverAgentと楽器;(Appiumが直接WebDriverAgentの全体に前のiOS 9.3への支援システムに、来楽器統合します)

  • 右端は携帯電話です

  • サーバ通信は、前とbootstrap.jar、(同様の機能bootstrap.jar)WebDriverAgent WebDriverAgentRunnerが提供されるWebDriverAgent通信それとあります。

  • WebDriverAgentRunnerは、クライアントとサーバは、アプリケーションが動作して電話と語ったXCTest.framworkの自動化の基礎となるサーバーと接続XCTest.framworkからの指示を受け、WebDriverAgentRunnerを実行している携帯電話にロードされます、その後、アプリケーションです。

     

2-3。ソフトウェアをインストールする必要があります

Xcode、command line tool、libimobiledevice、ios-deploy、carthage、WebDriverAgent、Appium。

 

libimobiledevice / ideviceinstallerライブラリ、アンドロイドADBの同等の、ツールの一つは、情報を取得するためAppium底、iOSデバイスを使用しています。

頻繁に使用するコマンドこれは次のとおりです。

  • 表示デバイスは、現在接続されています 

idevice_id -l # 显示当前所连接设备的 udidinstruments -s devices # 列出所有设备,包括真机、模拟器、mac
  • アプリケーションをインストールします。

ideviceinstaller -u [udid] -i [xxx.ipa] # xxx.ipa 为应用在本地的路径
  • アンインストールしたアプリケーション

ideviceinstaller -u [udid] -U [bundleId]
  • アプリがインストールされているデバイスを表示するには

ideviceinstaller -u [udid] -l # 查看设备安装的第三方应用ideviceinstaller -u [udid] -l -o list_user # 同上,查看设备安装的第三方应用ideviceinstaller -u [udid] -l -o list_system # 查看设备安装的系统应用ideviceinstaller -u [udid] -l -o list_all # 查看设备安装的所有应用
  • デバイス情報を取得します。

ideviceinfo -u [udid] # 获取设备信息ideviceinfo -u [udid] -k DeviceName # 获取设备名称 同命令 idevicenameidevicename # 同上ideviceinfo -u [udid] -k ProductVersion # 获取设备版本 10.3.3ideviceinfo -u [udid] -k ProductType # 获取设备类型 iPhone 8,1ideviceinfo -u [udid] -k ProductName # 获取设备系统名称
  • リアルタイムのログの携帯電話を見ます

idevicesyslog #屏幕上即可看见手机上所有的日志idevicesyslog >> iphone.log & #重定向日志到文件中
  • 携帯電話側のクラッシュレポートを取得します。

 

idevicecrashreport # 参数可设置具体文件存放位置
  • スクリーンショット

idevicescreenshot #获取当前截屏,效率比appium截屏高10倍
  • 他のファイルシステム情報

ideviceinfo # 获取设备所有信息idevicesyslog # 获取设备日志idevicecrashreport -e test # 获取设备 crashlog,test 是文件夹需新建idevicediagnostics # 管理设备状态 - 重启、关机、睡眠等
  • 共通コマンドは、IOSは、展開します

ios-deploy -c # 查看当前链接的设备ios-deploy --[xxx.app] # 安装APPios-deploy --id [udid] --uninstall_only --bundle_id [bundleId] # 卸载应用ios-deploy --id [udid] --list_bundle_id # 查看所有应用ios-deploy --id [udid] --exists --bundle_id # 查看应用是否安装
  • カルタゴ、プロジェクト管理は、主にWebDriverAgent使用を依存している、WebDriverAgentは、プロジェクトの依存関係を行うためにそれを使用することです

公司 iOS 项目也使用 carthage,类似于 java 的 maven;
  •  IOS-デプロイ、アンドロイドADBに似ideviceinstaller。

  •  authroize-IOSは、iOSのは、主に、シミュレータ許可承認番号のために、オーサリングツール。

npm install -g authroze-iossudo authroze-ios

 

2-4。インストールWebDriverAgent

 

1. GitHubのFBからWebDriverAgentをダウンロード

 http://github.com/facebook/WebDriverAgen

2.初期化プロジェクト

 

在 WebDriverAgent 目录下执行:./Scripts/bootstrap.sh

 

3.コンパイルWebDriverAgent

  1. (プロジェクトを開くには、デフォルトのオープンXcodeのツールを使用して)オープンWebDriverAgent.xcodeproj。

  2. 変更および一般WebDriverAgent.libとWebDriverAgentRunnerの下に2つのターゲット  のビルド 設定リスト(前者は携帯電話上で実行され、MAC、上で実行されています)。

  3. リストを修正する一般的な必要性:署名署名と  BundleId:署名 署名:開発者が適用される場合があります任意のAppleIdと無料で個人証明書を使用することができます。BundleIdを:BundleIdは前に 我々は新しいを変更する必要がありますので、使用することはできません、FBチームのバウンド証明書です。ビルド 設定リストの必要性を修正する  BundleIdを 前のステップと同じ。

  4. WebDriverAgentRunnerは、インストールするために電話で、携帯電話上で動作しているし、修正する必要があると一般的のように最後のステップされる  ビルド 設定のリスト。

  5. 一般 - - 信頼文書どのような証明書を記述した携帯電話に設定してください。

  6. Xcodeの - 製品 - テストは、インストールしてWebDriverAgent WebDriverAgentRunnerこのサーバを起動します。

 

4. Appium下WebDriverAgentを交換してください:元のフォルダを削除WebDriverAgent、コンパイル済みWebDriverAgentに行くことができます

 

 
如果用 npm 安装的目录在:cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/;如果用 desktop 安装的目录在:/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/)

 

WebDriverAgentの設定例:

 

開発者アカウントの種類:

 

2-5。サンプル・コードの実行スクリプトを開始しました

 2-5-1。準備APP

 

ここでは、でTestAppを使用するために再コンパイルする必要があります。

 

  1. APPは、それに対応するディレクトリを入力しxxx.xcodeprojオープンWebDriverAgent.xcodeprojは、プロジェクトを開きます。

  2. (上記と同じ)ターゲットのリストで変更一般ビルド設定項目。

  3. Xcodeのコンパイラで実行します。

或者通过 xcodebuild 命令通过命令行编译运行 xcodebuild -project TestApp.xcodeproj -target TestApp -sdk iphoneos10.3 -configurationdevelopment

 

2-5-2。準備スクリプト

 

  • iOSのプロジェクトDesired_cap

Desired_caps:{’platformName’:’iOS’,‘platformVersion’:’10.3.3’,‘devideName’:’iPhone 7 Plus’,‘udid’:’’, #如果是真机的话必须提供‘app’:’~/appPath/app.app’, #app路径,如果只填bundleId,那就是通过id启动已有的App}

 

  • iOSの位置決め要素

  • Appiumデスクトップ - 点検(推奨)

Appiumデスクトップ例:

 

  • WebDriverAgent - インスペクタ

 

アプリ-インスペクタ例:

 

 

ここでAppiumデスクトップについて話を - 点検し使用する方法です。

 

  • オープンとAppiumデスクトップを起動し、「インスペクタセッションを開始する」、右上のソフトウェアの最初のボタンをクリックしてください。

  • 構成されたDesired_capsでポップ、ポップがあります。

  • 位置決めモード推奨:AccessbilityId

注意:

など)のみ(is_displayed、モバイル端末のAPI用に定義された拡張し、。is_enabled()内webdriver.py()、これらはライブラリwebdriverをSlenium 2自体ことAppium APIクライアントを行くことができます。

独自のAPIを参照してくださいwebdriverを:

http://selenium-python.readthedocs.io/api.html

Appiumクライアントライブラリを参照してください:

言語/フレームワーク 図書館住所
Ruby https://github.com/appium/ruby_lib
Python https://github.com/appium/python-client
Java https://github.com/appium/java-client
JavaScript(Nodejs) https://github.com/admc/wd
Objective C https://github.com/appium/selenium-objective-c
PHP https://github.com/appium/php-client
C#(.NET) https://github.com/appium/appium-dotnet-driver
RobotFramework https://github.com/jollychang/robotframework-appi

実機の営業成績:https://mp.weixin.qq.com/s?__biz=MzU0MzcyNjE3MA==&mid=2247484330&idx=1&sn=33bbb9c61027015ae21aa1c95c8a1997&chksm=fb064c9fcc71c58907de1389c1140bd62ba51e1a8b130e5d5f6a053e8bf2d34e75f42753bc72&token=1847207034&lang=zh_CN#rd

国民にこれ以上してください注意を払うん:

发布了37 篇原创文章 · 获赞 30 · 访问量 3万+

おすすめ

転載: blog.csdn.net/new_culture/article/details/105098224