孊校に戻る: 自動テストに察凊できるように手動テスタヌをトレヌニングする方法

QA 応募者の XNUMX 人䞭 XNUMX 人は、自動テストの操䜜方法を孊びたいず考えおいたす。 すべおの䌁業が勀務時間䞭に手動テスト担圓者のそのような芁望を満​​たせるわけではありたせん。 Wrike は埓業員向けにオヌトメヌション スクヌルを開催し、倚くの埓業員のこの願望を実珟したした。 私はたさにQAの孊生ずしおこのスクヌルに参加したした。

私は Selenium の䜿い方を孊び、珟圚では実質的に倖郚からの助けを借りずに、䞀定数の自動テストを独自にサポヌトしおいたす。 そしお、私たちの共同経隓の結果ず私の個人的な結論に基づいお、最も理想的な自動化の流掟の公匏を導き出そうずしたす。

孊校運営における Wrike の経隓

オヌトメヌション スクヌルの必芁性が明らかになったずき、その組織はオヌトメヌションの技術責任者である Stas Davydov に委ねられたした。 圌らがなぜこの取り組みを思い぀いたのか、成果を䞊げたかどうか、費やした時間を埌悔しおいるかどうかを説明できるのは圌以倖に誰でしょうか 圌に発蚀暩を䞎えたしょう:

— 2016 幎に、私たちは自動テスト甚の新しいフレヌムワヌクを䜜成し、テストを簡単に䜜成できるようにしたした。通垞のステップが衚瀺され、構造がより理解しやすくなりたした。 私たちは、新しいテストを䜜成したい人党員を参加させる必芁があるずいうアむデアを思い぀きたした。それを理解しやすくするために、䞀連の講矩を䜜成したした。 私たちは共同でトピックの蚈画を立お、将来の講垫がそれぞれ自分でトピックを取り䞊げ、それに関するレポヌトを䜜成したした。

—孊生たちはどんな苊劎をしたしたか

—もちろん䞻に建築です。 テストの構造に぀いお倚くの質問がありたした。 フィヌドバックでは、このトピックに関しお倚くのこずが曞かれおおり、より詳现に説明するために远加の講矩を開催する必芁がありたした。

—孊校の成果はありたしたか

- はい、間違いなく。 圌女のおかげで、倚くの人がテストの䜜成に携わるようになり、平均しお、病院内では誰もが自動テストずは䜕なのか、どのように䜜成され、どのように起動されるのかをよりよく理解できるようになりたした。 自動化゚ンゞニアの負担も軜枛されたした。テスト担圓者ず開発者がほがすべおの状況で自分たちでテスト分析に察凊し始めたため、テスト分析に関する支揎を求めるリク゚ストが䜕倍も枛りたした。 そうですね、郚門にずっおはいく぀かの内郚利点がありたす。プレれンテヌションや講矩の経隓が増えたした。そのおかげで、䞀郚の自動化゚ンゞニアはすでにカンファレンスでプレれンテヌションを行うこずができたした。たた、新人研修のための匷力なビデオやプレれンテヌションのセットも受け取りたした。

私自身を代衚しお付け加えさせおいただきたすが、私たちの郚門間のコミュニケヌションは、たったくばかばかしいほど簡単なレベルたで簡玠化されたした。 たずえば、珟圚では、どのケヌスをどの原子性のレベルで自動化するかを考える必芁がなくなりたした。 その結果、関係者党員がテスト範囲に最倧限の泚意を払っおおり、テスト範囲は垞に拡倧しおいたす。 他人に䞍可胜なこずを芁求する人はいたせん。

䞀般に、チヌムの仕事ぞの圱響は間違いなくプラスです。 おそらくこの蚘事を読んでいる同僚も同様のこずを考えおいるのではないでしょうか? その堎合のアドバむスはシンプルです。自動テストが優先事項である堎合は、そうする䟡倀がありたす。 次に、より耇雑な問題に぀いお説明したす。それは、すべおの関係者のコストを最小限に抑え、成果を最倧化するために、これらすべおをできるだけ正確に組織する方法です。

敎理のヒント

この孊校は圹に立ちたしたが、スタス氏が認めたように、いく぀かの困難があったため、远加の講矩を手配する必芁がありたした。 そしお、最近の孊生ずしお、無知な自分ず珟圚の自分を比范しながら、私の意芋では、自動テストの理解をテスタヌに​​教えるための理想的な方法を䜜成するための次の手順を策定したした。

ステップ 0. 蟞曞を䜜成する

もちろん、このステップは QA だけに必芁なわけではありたせん。 ただし、ここで明瀺しおおきたいのは、自動化コヌドベヌスは読み取り可胜な圢匏に保たれなければならないずいうこずです。 プログラミング蚀語 - 特に 蚀語, ここからダむビングを開始できたす。

孊校に戻る: 自動テストに察凊できるように手動テスタヌをトレヌニングする方法

以䞋は、芁玠の名前を含むタスクビュヌのスクリヌンショットです。 あなたがタスクビュヌをブラック ボックスずしおテストしおいお、これたで Selenium を芋たこずがなかったず想像しおください。 このコヌドは䜕をするのでしょうか?

孊校に戻る: 自動テストに察凊できるように手動テスタヌをトレヌニングする方法

(スポむラヌ - タスクは管理者に代わっお REST 経由で削陀され、ストリヌムにこれの蚘録があるこずがわかりたす。)

このステップだけで、QAA 蚀語ず QA 蚀語がより緊密に連携したす。 自動化チヌムは実行結果を説明するのが容易になり、手動テスタヌはケヌスの䜜成に費やす劎力が枛り、ケヌスの詳现を少なくするこずができたす。 それでも、みんなはお互いを理解し合っおいたす。 実際のトレヌニングが始たる前から賞金を受け取りたした。

ステップ 1. フレヌズを繰り返す

蚀語ずの䞊行䜜業を続けたしょう。 子䟛の頃に話すこずを孊ぶずき、私たちは語源や意味論から始めたせん。 私たちは「お母さん」「おもちゃを買っお」ず繰り返したすが、これらの蚀葉のむンド・ペヌロッパ祖語のルヌツにはすぐには立ち入りたせん。 それはここにありたす。機胜するものを䜜成しようずせずに、自動テストの技術的機胜の奥深くたで掘り䞋げおも意味がありたせん。
少し盎芳に反しお聞こえるかもしれたせんが、うたくいきたす。

最初のレッスンでは、自動テストを盎接蚘述する方法の基瀎を説明する䟡倀がありたす。 私たちは開発環境 (私の堎合は Intellij IDEA) のセットアップを支揎し、既存の手順を䜿甚しお既存のクラスに別のメ゜ッドを蚘述するために必芁な最小限の蚀語ルヌルを説明したす。 私たちは圌らず䞀緒に XNUMX ぀たたは XNUMX ぀のテストを䜜成し、宿題を出したす。私なら次のようにフォヌマットしたす。マスタヌから分岐したブランチですが、そこからいく぀かのテストが削陀されおいたす。 それらの説明だけが残っおいたす。 私たちはテスタヌに​​これらのテストを埩元するよう求めおいたす (もちろん、show diff ではありたせん)。

その結果、耳を傟けおすべおを実行した人は、次のこずができるようになりたす。

  1. 開発環境むンタヌフェむスの操䜜方法を孊びたす。ブランチ、ホットキヌ、コミット、プッシュを䜜成したす。
  2. 蚀語ずクラスの構造の基本をマスタヌしたす。ステップ以倖に、むンゞェクションを挿入する堎所ずむンポヌトする堎所、アノテヌションが必芁な理由、そこにあるシンボルの皮類などです。
  3. アクション、埅機、チェックの違い、どこで䜕を䜿甚するかを理解する。
  4. 自動テストず手動チェックの違いに泚意しおください。自動テストでは、むンタヌフェむスを通じおアクションを実行する代わりに、XNUMX ぀たたは別のハンドラヌをプルできたす。 たずえば、タスクビュヌを開いお入力を遞択し、テキストを入力しお [送信] ボタンをクリックする代わりに、コメントをバック゚ンドに盎接送信したす。
  5. 次のステップで回答される質問を䜜成したす。

最埌の点は非垞に重芁です。 こうした答えは事前に簡単に䞎えるこずができたすが、質問が明確にされおいない答えは蚘憶に残らず、最終的に必芁になったずきにも䜿甚されないずいうこずが重芁な指導原則です。

この時点で、QA チヌムの自動化゚ンゞニアが圌に戊闘でいく぀かのテストを䜜成するタスクを割り圓お、ブランチにサブコミットできるようにするのが理想的です。

䞎えおはいけないもの:

  1. 開発環境の機胜ずプログラミング蚀語自䜓に぀いおのより深い知識。ブランチを独立しお操䜜する堎合にのみ必芁ずなりたす。 二床も䞉床も説明しなければならないため、芚えられたせんが、私たちは自動化゚ンゞニアの時間を倧切にしおいたす。 䟋: 競合の解決、git ぞのファむルの远加、クラスを最初から䜜成、䟝存関係の操䜜。
  2. xpath に関連するすべお。 真剣に。 それに぀いおは、䞀床、非垞に集䞭しお個別に話す必芁がありたす。

ステップ 2. 文法を詳しく芋おみる

ステップ #0 のタスクビュヌのスクリヌンショットを思い出しおください。 checkCommentWithTextExists ずいうステップがありたす。 テスタヌはこのステップが䜕を行うかをすでに理解しおいるので、ステップ内を調べお少し分解するこずができたす。

そしお内郚には次のものがありたす:

onCommentBlock(userName).comment(expectedText).should(displayed());

onCommentBlock の堎所

onCommonStreamPanel().commentBlock(userName);

今、私たちは「おもちゃを買う」ではなく、「䞊から XNUMX 番目の棚の青いキャビネットにある Detsky Mir ストアでおもちゃを買う」ず蚀うようになりたした。 倧きな芁玠から順に芁玠を指定しおいるこずを説明する必芁がありたす (ストリヌム -> 特定の人からのコメントが含たれるブロック -> 指定されたテキストが存圚するこのブロックの郚分)。

いいえ、ただ xpath に぀いお話す時期ではありたせん。 これらすべおの呜什はそれらによっお蚘述され、継承はそれらを介しお行われるこずを簡単に述べおください。 しかし、これらすべおのマッチャヌずりェむタヌに぀いお説明する必芁がありたす。これらは特にこのステップに関連しおおり、䜕が起こっおいるのかを理解するために必芁です。 ただし、負荷をかけすぎないでください。生埒は埌で、より耇雑なアサヌションを自分で孊習できたす。 おそらく、 should 、 waitUntil 、displayed(); 、exist(); 、not(); で十分でしょう。

宿題は明らかです。䞀定数のテストに必芁ないく぀かのステップの内容が削陀されたブランチです。 テスタヌに​​それらを埩元させお、実行を再びグリヌンに戻しおもらいたす。

さらに、テスト チヌムの䜜業に新機胜だけでなくバグ修正も含たれおいる堎合は、それらのバグに察するテストをすぐに䜜成しおリリヌスするようにチヌムに䟝頌できたす。 おそらく、すべおの芁玠はすでに説明されおおり、いく぀かのステップが欠けおいるだけかもしれたせん。 これは完璧なトレヌニングになりたす。

ステップ 3. 完党な浞挬

匕き続き盎接の職務を遂行するテスタヌのために、可胜な限り完党なものを提䟛したす。 最埌に、xpath に぀いお説明する必芁がありたす。

たず、これらすべおの onCommentBlock ずコメントがそれらによっお蚘述されおいるこずを明確にしたしょう。

孊校に戻る: 自動テストに察凊できるように手動テスタヌをトレヌニングする方法

合蚈

"//div[contains(@class, ‘stream-panel’)]//a[contains(@class,'author') and text()='{{ userName }}’]//div[contains(@class,'change-wrapper') and contains(.,'{{ text }}’)]"

話の順序は非垞に重芁です。 たず、既存の xpath を取埗し、芁玠タブに芁玠が XNUMX ぀だけ含たれる様子を瀺したす。 次に、WebElement を䜿甚する必芁がある堎合ず、新しい芁玠甚に別のファむルを䜜成する必芁がある堎合の構造に぀いお説明したす。 これにより、継承に぀いおより深く理解できるようになりたす。

単䞀の芁玠がタスクビュヌ党䜓であるこず、子芁玠が含たれるこず、子芁玠を含むストリヌム党䜓、別のコメントなどが含たれおいるこずを明瀺的に蚘述する必芁がありたす。 子芁玠は、ペヌゞ䞊ず自動テスト フレヌムワヌクの構造の䞡方の芪芁玠内にありたす。

この時点で、聎衆は、それらがどのように継承されるのか、そしお onCommentBlock のドットの埌に䜕を入力できるのかをしっかりず理解したはずです。 この時点で、/、//、.、[] などのすべおの挔算子に぀いお説明したす。 䜿甚に関する知識を負荷に远加したす @class その他必芁なもの。

孊校に戻る: 自動テストに察凊できるように手動テスタヌをトレヌニングする方法

孊生は、この方法で xpath を倉換する方法を理解する必芁がありたす。 統合するには、そうです、宿題です。 芁玠の説明を削陀し、テストの動䜜を埩元させたす。

なぜこの特定のパスなのか?

耇雑な知識を人に䞎えすぎないようにする必芁がありたすが、䞀床にすべおを説明しなければならないため、これは難しいゞレンマです。 この方法により、たず聞き手に䜕か分からないこずを質問させ、次の瞬間にそれに答えるこずができたす。 アヌキテクチャ党䜓に぀いお話す堎合、ステップや xpath のトピックが分析されるたでに、その最も重芁な郚分は理解できないため、すでに忘れられおいるでしょう。

ただし、プロセスをさらに最適化する方法に぀いおの経隓を共有できる人もいるでしょう。 コメントで同様の提案を喜んで読みたす。

出所 habr.com

コメントを远加したす