チームに自動テストはありません-どうすればよいですか?

コードアワー 」教育キャンペーンが12月の第1週にロシア全土で行われたと聞いた方もいらっしゃるかもしれません。5年生から11年生までの学生向けの公開レッスンは、プログラミングが簡単で楽しく、誰もが学習できることを示しました。







アクロニスでは、自分の経験を共有することにしました。仕事を中断することなく、従業員のプログラミングをどのように訓練するかです。



挑戦する



ご承知のとおり、製品受け入れテストは、概して、ビルドごとに同じ作業を繰り返すことになります。 テスターは各ビルドで標準スクリプトを実行します-時にはすべてが連続して、時には選択的に。 何らかの方法で、定期的に実行する必要があるアクションのリストがあります。 当然、このプロセスを自動化したいという要望があります。



これはまったく難しいことではないように思われます。最終的に取得する必要がある特定の手順と結果が提供されますが、1つの大きな「しかし」があります。 ほとんどのテスターはプログラミング言語を話せません。 アクロニスでこの問題に遭遇したとき、開発者の資格を持たない人々によって書かれたテストスクリプトを実行できるツールを見つけるというアイデアがありました。 テスターは以前のようにスクリプトを記述します(もう少し形式化されている場合もあります)が、人ではなく、マシンがこれらのスクリプトを実行します。



楽器



一般に受け入れられているいくつかの真理が、自動化において長年にわたって形成されてきました:たとえば、キーワード駆動またはデータ駆動のアプローチ、BDD(行動駆動開発)およびATTD(受入テスト駆動開発)、アプリケーションのテストライブラリの作成、レポートの生成などです。タスクのツールとして、これらすべてを統合するRobot Frameworkを選択しました。 これは、受け入れテストとATTDを自動化するために主に設計されたオープンソースフレームワークです。 同時に、その機能はこのフレームワークをはるかに超えており、さまざまなニーズに対応したソフトウェアテストを自動化するための強力なフレームワークを作成できます。



いくつかの理由でこのフレームワークに焦点を当てました。 まず、WebページとWebアプリケーションをテストするためのツールがあるためです。 第二に、広範なパッケージと拡張機能があります。たとえば、SSHを介してマシンを制御するためにアドオンを使用します。 最後に、ロボットフレームワークは、キーワード駆動テストの原則に基づいています。つまり、プログラミングの知識があまりない人でも使用できるキーワードの開発に基づいています。







このアプローチは、自動テストの構築に非常に便利です。 テストは高級言語で書かれており、理論的には製品のテスト方法を知っている人なら誰でも書くことができます。





open browser welcome page should be opened username field should be visible password field should be visible login button should be visible input username $username input password $password press login button
      
      





キーワードに基づいて、さまざまな入力データを使用してテストを簡単に構築したり、テストを読みやすく実行可能なテキストに変換したりできます。 Robot Frameworkには、Webアプリケーション、データベース、ファイルシステムアクション、SSH、Swing、SWT、Windows GUIなどを自動化するための組み込みライブラリがあります。また、このフレームワークには、プロジェクトに統合するためのテストエディターと多くの追加プラグインがあります。 一般に、フレームワークのアーキテクチャは、元の機能を簡単に拡張し、PythonまたはJavaで独自のライブラリを作成できるように設計されています。



実装



実験の開始までに、私たちのサービスのほとんどは、開発者自身がpythonで書いた機能テストですでにカバーされていました。 同時に、Webコンソールと、Webコンソールとサーバー間の統合ポイントはテストの対象外でした。 私たちは、いわば「1石で2羽の鳥を殺す」ことを決定しました。つまり、テスターに​​自動テストの作成を指導し、フロントエンド開発者を引き付けて基本的な機能とキーワードを低レベルで作成することです。 たとえば、Robot Frameworkの「ブラウザを開く」というフレーズのコードは次のとおりです。



 *** Keywords *** open browser [Arguments] ${url} run keyword if '${DEBUG}' == 'false' set log level debugging Browser.open browser ${url} ${BROWSER} desired_capabilities=service_args:--ignore-ssl-errors=true;--ssl-protocol=tlsv1;--debug=${DEBUG};--disk-cache=true;--max-disk-cache-size=204800 set browser implicit wait ${IMPLICIT WAIT} set selenium speed 0.2s delete all cookies set window size 1400 1280 # for PhantomJS maximize browser window
      
      





一般に、このフレームワークは非常に使いやすいため、フロントエンドの開発者はすぐにそれをマスターし、コードの最も痛い部分をテストでカバーし始めました。 私たちの意見では、箱から出してすぐにロボットによって提供される優れた報告システムを別に注目する価値があります。 テスト用に独自のレポートシステムが既にあるため、あまり使用する必要はありませんでした。







Robot Frameworkとレポートシステムの統合により、特別な問題は発生しませんでした。 ロボットは、レポート用のあらゆる種類のアドオンをサポートしています。このためには、次の2つのメソッドを使用してPythonクラスを作成するだけです。



 class CustomReporter: def start_suite(self, name, attributes): # put your code here def end_suite(self, name, attributes): # put your code here def start_test(self, name, attributes): # put your code here def end_test(self, name, attributes): # put your code here
      
      









この場合に評価したもう1つの機能は、タグを使用してテストをグループ化する機能です。 各テストには1つまたは別の属性を割り当てることができ、その後、テストを所有するもののみを選択して実行できます。 たとえば、実行に時間がかかるテストにフラグを立て、実行するたびに実行しないようにします。 この機能は主にバトルサーバーを監視するために使用します。 システムへのメインエントリポイントの可用性を確認するテストの一部を選択し、対応するプラグインを記述して(結果がzabbix-agentに理解できる形式になるように)、その結果、サイトのアクセシビリティを永続的に監視するシステムを使用します。







このリンクから、ロボットフレームワークのデモバージョンを見ることができます。 クリック



テスターを自動化に引き付けることに関しては、正しい方向に進んでいます。 バグトラッカーの各バグまたはタスクに対して、開発者はスクリプトを「チェック方法」で記述します。さらに、仕事で簡単に使用できるように記述します。 だから、ステップごとに、私たちはテスターに​​プログラミングとテストは簡単だと確信させます:)










All Articles