入門からあきらめないまで:マルチブラウザの自動化テスト(2)-クラウドサービステスト


潘潘、何安科学技術ソフトウェアエンジニアは同済大学を卒業し、VMwareなど多くの有名な会社で実習し、3年間のスタック開発経験を持ち、何安科学技術コア製品の初期の先端開発とアーキテクチャの仕事を担当した.
前の文章では、ゼロからローカル自動化テストプロジェクトを構築する方法を教えてくれました.前の記事を見たことがない場合は、右をクリックして「入門から諦めないまで:マルチブラウザの自動化テスト(1)-ローカルテスト」を読んでください.
本文は前の文章の基礎の上で主に2つの内容を紹介します:1つはどのように無料でマルチマシンの自動化テスト環境を構築するか、2つはどのようにクラウドテストサービスを使って360度の死角のない自動化テストを行うかです.情報量が多いので、読んでから焼かないで、しっかり覚えてください.
「入門からあきらめないまで」シリーズは、フロントエンドコンポーネントライブラリの設計と実装、プロジェクトの自動化構築など、ゼロから始まるフロントエンドの実践例を読者に提供します.このシリーズの他の記事に注目してください.

ローカルテスト鞭長は及ばない


1台のコンピュータがサポートするブラウザの種類が限られているため、1台のmacにsafari、chrome、firefox、operaなどをインストールすることができ、通常は1つのバージョンの製品しかインストールできないため、ローカルテストでは機能ロジックが正しいかどうか、または特定の閲覧器の特定の機能を検証するために使用されることが多い.未知の互換性テストでは、ローカルテストだけではできません.以下で説明する方法は、リモートテストによって自分のコードをテストする新しいテスト体験を提供します.
リモートテストでは、クライアント(Client)、サービス側(Server)の2つの概念を明らかにする必要があります.Clientはtest casesコードを実行する場所で、Serverはブラウザの場所です.サーバ上のservletのいくつかを使用してClientとサーバ上のブラウザに接続し、testのインスタンス動作をリモート側のブラウザで実行します.ブラウザとtestによるホストの分離により、testはより多くのブラウザで実行でき、テストブラウザの数を拡張しやすくなります.以下の実践の中で、読者はClientとServerに対してもっとはっきりした理解を持っていて、ここではこれ以上説明しません.

独自のクラウドテスト環境


テストコードがブラウザ環境と分割される以上、ブラウザとテストされたNodeテスト環境を同じマシンに置くのではなく、前述のベースでブラウザを他の環境にインストールする必要があります.インストールが完了したら、サービス側のサーブレット、つまりSeleniumが提供するwebdriver serverを使用して、テスト環境とブラウザを接続する必要があります.具体的な手順は次のとおりです.
1、使用可能なホストを1台探します.実体マシンでも仮想マシンでも可能ですが、ホストがテスト実行ホストのネットワークにアクセスできる必要があります.
2、ホストにブラウザをインストールする:具体的にインストールするブラウザのタイプとバージョンはオペレーティングシステムとテストの需要によって决まって、例えばwindowsオペレーティングシステムにIE、firefoxなどのブラウザをインストールすることができて、Linuxシステムにchrome、firefoxなどのブラウザをインストールして、Macシステムにsafari、chromeなどのブラウザをインストールします.
3、対応するブラウザのdriverをServerホストにダウンロードする.seleniumは、前の文書で述べたbinディレクトリのdriver実行可能ファイルのように、異なるdriverを使用して異なるブラウザを起動する必要があるため、テストブラウザに対応するdriverをserverにダウンロードし、テストエンジニアリングの構成を通じてselenium-server-standaloneこれらのdriverがどこにあるかを示し、ブラウザを操作します.
  • chromedriver(chrome用)ダウンロードアドレス:https://sites.google.com/a/ch...
  • geckodriver(firefox,safariに使用可能)ダウンロードアドレス:https://github.com/mozilla/ge...

  • 4、ホスト上でSelenium Serverをダウンロードして起動する:このServerは実際にJavaウィジェットであり、clientとserver間の通信に使用される(seleniumの原理に関する文章は『分からないのが悔しい』シリーズに注目してください).まずSeleniumの公式サイトでselenium-server-standalone-{VERSION}をダウンロードします.jarを起動し、Jarパッケージを起動します.
    java -jar selenium-server-standalone-{VERSION}.jar
    

    ホストにJREがインストールされていない場合は、javaの実行環境を再インストールするか、jdkを直接インストールする必要があります.
    5、テスト項目のプロファイルを修正する:テストを開始する際に指定するプロファイルを覚えていますか?このプロファイルconf.jsはseleniumおよびテストを構成するブラウザとして非常に重要であり、リモートサーバを使用するブラウザをテストターゲットとして変更する場合は、もちろんプロファイルを変更する必要があります.
    プロファイルのseleniumアイテムを次の形式に変更する必要があります.
    selenium : {
        "start_process" : true,
        //server ip 
        "host" : "192.168.10.1",
        "port" : 4444,
        "cli_args": {
          //chromedriver  server 
          "webdriver.chrome.driver": "/home/bin/chromedriver",
          //geckodriver  server 
          "webdriver.gecko.driver" : "/home/bin/geckodriver"
        }
      }
    

    test_の場合settingsの設定は上記を参照し、自分がインストールしたブラウザバージョンに従って変更してください.
    6、テストの開始:すべての準備ができたら、clientホスト上、つまりテストコードが実行されているマシン上でテストを開始することができます.
    "scripts": {
      ...
      "test": "./node_modules/.bin/nightwatch -c conf/test.conf.js -e A,B"
      ...
    }
    

    自分でテストクラウド環境を構築するプロセスは複雑ではありません.selenium serverとブラウザを他のホストにインストールするだけでいいです.client上のコードを変更する必要はありません.構成中のselenium構成を変更するだけです.
    しかし、すぐにテスト者は、より多くのマシンをテストする必要がある場合、手作業でこれらのserverを維持することは時間と労力がかかり、会社のコンピューティングリソースも消費されていることを発見します.自分のコードを全面的にテストし、ホストのメンテナンスに苦労することなく、より良い方法はありませんか?答えはありますから、続けて読んでください.

    クラウドテストサービス


    煩わしい繰り返しの工事任務に対して、業者たちはいつもお金を稼ぐ方法を考えることができて、これはいいえ、上述の私たちが出会った面倒に対して業者が相応の製品を提供しました.この製品はテスト者たちに無数のテストブラウザを提供し、テスト者はこれらのブラウザがどこで実行されているのか、どのように維持すべきか、1つのサービスアドレスだけで、自分のテストページをこれらのブラウザに走ることができます.
    実はこのサービスアドレスは、以前自分で構築したServer ipと似ていますが、自分のテストクラウドを使用して、異なるテストホストを使用する場合は、手動でhostを変更する必要があります.これらの業者は、トラフィック配信のための同様の販売センターを提供しているので、1つのアドレスで異なるホストを使用してテストを行うことができます.
    現在、browserstack、saucelabs、crossbrowsertestingなど、このようなサービスを提供している業者は多く、自分の手元の金やテストの必要に応じて選択的な価格の高いサービスを提供することができます.本文はbrowserstackを例にみんなの科学普及のこのようなサービスを使いますが、それは主のお金のお父さんではありません.水文の猜疑を置いてください.
    クラウドテスト環境を独自に構築した経験から、browserstackのテストバックグラウンドアーキテクチャを下図に示します.アーキテクチャが実際に実装されているかどうかは気にしませんが、これは合理的な理論的推測であり、この図がこのサービスについて大まかな技術的理解をもたらすことを望んでいます.
    browserstackはユーザーに自動化テスト、リアルタイムインタラクティブテスト、スクリーンショットなどのサービスを提供しています.具体的なサービスの詳細は公式サイトに移動してください.このセクションでは、自動化されたテストサービスの使用方法について説明します.リアルタイムインタラクティブテストの機能について少し説明します.
    次に、クラウドテストの使用体験を開始します.
    まずそのサイトにアカウントを登録し、一番上のナビゲーションバーのAutomateをクリックし、ページをジャンプして新しいページの左側の一番上に「Username and Access Keys」をクリックすると、クラウドテストサービスを使用するユーザー名とkeyが表示され、このauthを使用してテスト構成を変更します.
    テスト項目に戻りますtestconf.jsのseleniumアイテムを変更し、common_を追加Capabilities項目は、クラウドサービスの情報を構成するために使用されます.
    selenium : {
        "start_process" : false,
        "host" : "hub-cloud.browserstack.com",
        "port" : 80
      },
      common_capabilities: {
        'build': 'nightwatch-browserstack',
        // Browserstack   username  
        'browserstack.user': process.env.BROWSERSTACK_USERNAME',
        // Browserstack   key  
        'browserstack.key': process.env.BROWSERSTACK_ACCESS_KEY,
        'browserstack.debug': true,
        'browserstack.local': true
      }
    

    接続クラウドテストサービスの構成が完了したら、テストのブラウザの種類とバージョンを指定する必要があります.
    指定されていないフィールドがある場合、クラウドサービスにはデフォルト値が入力されます.たとえば、構成にオペレーティングシステムが指定されていない場合、ブラウザが存在するオペレーティングシステムにかかわらず、クラウドサービスは自動的に最も速いテストマシンを選択します.たとえば、テストブラウザのバージョンが指定されていない場合、クラウドサービスは最新バージョンのブラウザをテストします.
    公式サイトのドキュメントには、テスト可能なすべてのブラウザの種類とバージョンが提供されています.説明の便宜上、ブラウザの種類だけを指定し、バージョンを規定しません.
    簡単なブラウザ構成項目は次のとおりです.
     ...
        safari: {
          desiredCapabilities: {
            browserName: 'safari'
          }
        },
        ie: {
          desiredCapabilities: {
            browserName: 'ie'
          }
        },
        ...
        ios: {
          desiredCapabilities: {
            browserName: 'iPhone'
          }
        }
        ...
      }
    

    以上の仕事が終わったら、テストを開始することができます.so easyではありませんか.
    コマンドラインから返されるテスト結果に加えて、browsertack自動化テストでは、テスト再生などが提供されます.テストエラーが見つかった場合は、業者が提供するオンラインリアルタイムテストでデバッグできます.これも非常に便利な機能です.
    WARDENインタフェース

    ある放矢地テスト


    自動化テストの文章を読んで、クラウドテストの便利さを体験したいと思っています.皆さんが手を出す前に、いくつかのお知らせがあります.
    まず、これらのクラウドテストサービスは海外のサービス業者が提供しているため、ネットワークの遅延が高すぎる場合があります.テストがタイムアウトする可能性があります.ネットワークの良いホストを選択してテスト例を実行してください.
    次に、自動化テストはみんなにテスト用例を書くのに夢中になるので、どうせテストは投げて測ればいいのですが、テスト担当者はテストの粒度をはっきり区別しなければならないと思っています.一部のテスト用例は細粒度のユニットテストやエンドツーエンドのテストなど、同じコードをカバーしているテストがたくさんあります.このようなテストは実は浪費されているので、目標を明確にした後、テスト用例を丹念に設計する必要があります.
    最后に、分からないことがあればまずgoogle、その他のgoogleができない问题は漫画主と交流することを歓迎して、文章は间违いがあれば教えてください.