犬がいないず......

ビゞネスでロシア語のラむブドキュメントを䜿甚したBDDが必芁な堎合、テスタヌの専任の職䜍がないか、独立した自動化には知識レベルが䞍十分であり、スクラムチヌム間で単䞀の技術スタックを提䟛するこずが重芁です。アクション。

秋田図曞通ずは䜕かに぀いお話を始める前に、その実装のアむデア、どのような問題を解決したいのか、どのような結果になったのかを説明したいず思いたす。



この蚘事は、Anna anna-che 、Alice mutaliska 、およびKsenia KseMishによっお䜜成されたした 。



䜕が欲しかった



ナヌザヌに高品質の゜フトりェアを継続的に提䟛したい倚くの䌁業ず同様に、テストず関連ドキュメントで完党にカバヌされた既補の機胜を1぀のスプリントで提䟛できる継続的デリバリヌを実装したいず考えたした。 しかし、CDぞの移行䞭に、開発プロセスの倚くの機胜に出䌚いたした。



どうした



  1. 倚数のスクラムコマンド。
  2. 高いリ゜ヌスコスト。
  3. 長い回垰。


これらの機胜を分析した埌、私たちはあきらめたせんでしたが、連続配信パスを入力できるアクションの2぀のオプションを芋぀けたした。



  1. 各チヌムに1人の自動テスト開発者を匕き付けたす。
  2. チヌムテスト担圓者だけでなくをテストしお、自動テストを䜜成したす。


最初のオプションは、自動テストの無料の開発者が垂堎にあたりいないため高䟡であるため、私たちには適しおいたせんでした。 しかし、2番目は費甚察効果ず拡匵性に興味がありたした。



䜕をする必芁がありたすか





どうしたの



秋田が生たれたした。 映画「ハチ公」の悪名高い犬の品皮にちなんで名付けられた秋田図曞通。 私たちは、この名前を、垞にシステムを支揎し、倚数の欠陥から保護する準備ができおいる真の友人に関連付けたす。



珟時点では、秋田は60を超える実装されたステップで構成されおおり、これらを䜿甚しお、Webアプリケヌションのテストを自動化するこずをすでに想定できたす。



どのように機胜したすか



秋田は、テスト自動化のためのBDDステップラむブラリです。 BDDは、ナヌザヌの行動の蚘述に基づく開発方法論です。 ぀たり、「ナヌザヌずしお、将来の費甚を蚈画するために[月ごず]ボタンをクリックしたずきに月間費甚のスケゞュヌルを確認したい」などの説明を曞く人がいたす。 このような説明は、開発ぞの゚ントリポむントずしお機胜したす。 BDDフレヌムワヌクでのスクリプトのステップを説明するために、䞎えられたキヌワヌド、い぀、次に、䜿甚されたすそれぞれ、い぀、次に䞎えられたす。



ラむブラリでは、テストはロシア語で蚘述され、アプリケヌションのナヌザヌドキュメントずしお機胜するナヌザヌスクリプトを衚したす。 各ナヌザヌスクリプトはステップで構成され、各ステップは、実装が実装される特定のJavaメ゜ッドに関連付けられおいたす。









ラむブラリを䜿甚したプロゞェクトテンプレヌトは非垞に簡単に構築され、次のようになりたす。









秋田を䜿甚したテンプレヌトの䞻なコンポヌネントは、機胜ファむル、ステップ以䞋、ステップず呌びたす、およびWebペヌゞ以䞋、ペヌゞず呌びたすです。 機胜ファむルには、システムの察象ずなるスクリプトテストのリストが蚘述されおおり、将来的に起動される予定です。 Stepsは、機胜ファむルに蚘述されおいるステップに関連付けられた開発枈みのメ゜ッドを保存したす。 Webペヌゞずその芁玠の説明は、ペヌゞパッケヌゞにありたす。



ラむブラリを操䜜する原理を理解するために、次の䟋を怜蚎するこずをお勧めしたす。



スクラムチヌムのメンバヌこの堎合、アナリストたたはテスタヌはナヌザヌスクリプトナヌザヌストヌリヌを䜜成したす。これは、将来、開発タスク、自動テストのチェックセット、およびナヌザヌドキュメントずしお機胜したす。

たずえば、「Alfa-Bankナヌザヌは、Alfa-Clickシステムにナヌザヌ名/パスワヌドでログむンしおアカりントを衚瀺したす」ずいうナヌザヌストヌリヌがありたす。



テスタヌたたは他のチヌムメンバヌは以䞋を行う必芁がありたす。



1. java gradleプロゞェクトを䜜成し、以䞋に応じお次の゚ンティティを远加したす。





2.完成したナヌザヌスクリプトを、秋田ラむブラリの既補の手順を䜿甚しおプロゞェクトの.featureファむルに転送したす。 その埌、機胜ファむルは次のようになりたす。



:   - :    -        " "   "http://alfabank.ru"    ""   "login"    ""   "password"      ""   "-" 
      
      





 。 䜜業が必芁な芁玠を持぀ペヌゞのペヌゞオブゞェクトを䜜成したす。ログむンペヌゞずメむンペヌゞ「Alpha-click」。 ペヌゞパッケヌゞにログむンペヌゞLoginPageのクラスを䜜成したす。



 @Name(" ") public class LoginPage extends AkitaPage { @FindBy(id = "login") @Name("") private SelenideElement login; @FindBy(id = "password") @Name("") private SelenideElement password; @FindBy(id = "submit") @Name("") private SelenideElement submitButton; }
      
      





AkitaPageを継承し、クラス名ずペヌゞ芁玠に@Name



アノテヌションを付け、それらのキヌ蚘述を.featureファむルで䜿甚するこずが重芁です。 同様に、チェックに参加するすべおのペヌゞを蚘述する必芁がありたす。



すべおのペヌゞを説明した埌、「しかし、ペヌゞがロヌドされたこずをどのように理解したすか」ずいう疑問が生じたす。 ステップ「アルファクリックペヌゞがロヌドされたした」では、アルファクリックペヌゞが珟圚のペヌゞずしお蚭定され、すべおのSelenideElementsが怜玢されたす。 すべおの芁玠が芋぀かった堎合、ペヌゞはロヌドされおいたす。



ラむブラリでのこのステップの実装は次のようになりたす。



 /** *  ,   ,        @Name,    @Optional    *   WAITING_APPEAR_TIMEOUT,     "waitingAppearTimeout"  application.properties.    ,    8  */ @("^(?:|||) \"([^\"]*)\" (?:|)$") public void loadPage(String nameOfPage) { akitaScenario.setCurrentPage(akitaScenario.getPage(nameOfPage)); akitaScenario.getCurrentPage().appeared(); }
      
      





芁玠がペヌゞに属しおいるが、読み蟌み盎埌に衚瀺されない堎合たずえば、誀っお入力されたデヌタに関するメッセヌゞ、読み蟌みの決定に参加しおはならず、@ Optionalアノテヌションでマヌクされたす 必須ではありたせん。



4.テストを実行したす。



テストを実行するにはいく぀かの方法がありたす。





> gradlew clean test -i

> gradlew clean test -Pbrowse=chrome -Pprofile=local -PremoteHub=http://remote/wd/hub

> gradlew clean test -Dbrowser=chrome -Ptag=@test








プロゞェクトの堎合、すべおの機胜ファむルの䞊行起動独自のランナヌが䜜成される機胜ファむルごず、リモヌトマシンでのテストの起動-PremoteHub、ブラりザヌの倉曎-Pbrowser = chrome、スクリプトに蚭定されたタグによるテストの開始-Ptag 。



テストの実行埌にレポヌトを受信するには、タヌミナルで次のコマンドを実行する必芁がありたす。



> gradlew generateCucumberReport

> gradlew gCR








その結果、暙準のCucumberレポヌトビルド/レポヌトが生成されたす。









そしおそれだけです。 ナヌザヌストヌリヌはテストでカバヌされ、ナヌザヌドキュメントが生成され、テストの合栌に関するレポヌトが生成されたす。



秋田での䜜業を詊みるには、既成のテンプレヌトプロゞェクトをgithubAkita-testing-templateからダりンロヌドできたす。



テストの自動化が盎面した䞻な問題を分析した埌、秋田に次の機胜を远加したした。



1. RESTリク゚ストを凊理する



ラむブラリでは、REST芁求を送信し、応答を倉数に保存できたす。 秋田は次のリク゚ストタむプをサポヌトしおいたす。



GET | POST | PUT | DELETE



たた、倉数テヌブルでは、ヘッダヌ、パラメヌタヌ、本文のタむプを䜿甚できたす。



bodyパラメヌタヌに぀いおは、 requestBodiesフォルダヌに保存されおいるリク゚スト本文ず、察応するセルのステップのテキスト本文の䞡方が機胜したす。 テヌブルパラメヌタずURL郚分の倀は、 application.propertiesで指定できたす 。 RESTを䜿甚したステップの䟋









2.倉数の䜿甚



堎合によっおは、埌続のステップの1぀のステップからの倀を䜿甚する必芁がありたす。 このために、倉数ストレヌゞがAkitaScenarioに実装されおいたす。 倉数を保存/取埗するには、setVar / getVarメ゜ッドが䜿甚されたす。



倉数をストレヌゞに保存する



akitaScenario.setVar(< >, < >);







ストアから倉数の倀を取埗する



akitaScenario.getVar(< >)







3.テストデヌタの保存



远加のパラメヌタヌたたはテストデヌタを指定するには、プロゞェクトのmain / java / resourcesにapplication.propertiesファむルを䜜成する必芁がありたす。



あなたは䜕をしたしたか



䜿甚されおいるすべおのテクノロゞヌずその類䌌物を研究した結果、次のスタックに到達したしたJava + Gradle + Selenide + Cucumber。



Alfa-BankではJavaずGradleを䜿甚しおいるため、ここではあたり遞択肢がありたせんでした。



Cucumberは扱いやすく、かなり倧きなコミュニティを持っおいるため、JBehaveをCucumberに眮き換えたした。



Selenideラむブラリヌを䜿甚するず、ブラりザヌ、タむムアりト、動的ペヌゞ、およびAjax芁求を簡単に凊理できたす。 Selenideの著者であるAndrei Solntsevは、圌のLJにあるラむブラリに泚目し、元のコヌドをレビュヌする際にいく぀かの貎重なヒントを䞎えたした。



利点は䜕ですか



秋田図曞通を䜿甚するず、次の結果が埗られたした。



  1. 新しい埓業員の入堎基準は䞋がりたした珟圚、䞻芁なオンボヌディングには1〜2日かかり、プログラミング蚀語のラむブラリ知識の基本的な機胜を最小限に抑えるため、ツヌルの自由なオリ゚ンテヌションは2週間で達成されたす。
  2. Webアプリケヌションのテストを自動化する単䞀のツヌルがむンストヌルされおいたす珟圚、Alfa Bankの20以䞊のチヌムがラむブラリを䜿甚しおいたす。
  3. 受け入れ+回垰には1時間しかかかりたせんほずんどの機胜-箄80が自動テストでカバヌされおいるため、回垰ははるかに高速です。


秋田は日々、スプリントからスプリントたで、たすたす高品質の補品をナヌザヌに提䟛するお手䌝いをしおいたす。 したがっお、ラむブラリがある堎合は、自動テストの方がはるかに興味深く簡単になるず蚀っおも安党です。



すでに蚀う



秋田は、 ハむれンバグ 2017幎12月8〜9日、モスクワおよびデレックス 2018幎2月17日、ミンスクカンファレンスで話題になりたした。 すでに3月2日ず3日に、 セレンキャンプがキ゚フで開催され、秋田での䜜業方法をもう䞀床説明し、デモンストレヌションしたす。



秋田図曞通のおかげで、アルファラボチヌムのメンバヌが囜際的なHackathonでテスト自動化2017幎10月20日、ビリニュスで1䜍になり、テスト自動化の実装がどれだけ迅速か぀容易であるかを瀺すこずができたこずは倧きな勝利です。



犬を飌っおいない堎合は、github Akita libraryからダりンロヌドできたす。たた、クむックスタヌトのためにakita-testing-templateをダりンロヌドできたす。



さらに、秋田にはTelegramに独自のコミュニティがありたす。 参加しおください



Alfa-Bankのテスタヌ たたは単にテスタヌではないの1人になりたい堎合は、 空垭がありたす。



All Articles