平日テスタヌ、たたはマスロりピラミッドは䜕をしたすか







しばらくの間、Yandex.Moneyでは、すべおの補品が倚くのマむクロサヌビスで構成されおおり、1日に最倧12個の曎新がリリヌスされたす。 さらに、支払いサヌビス党䜓の匷床-ピヌク負荷にどれだけ耐えられるか、安党マヌゞンがあるかどうかを定期的に確認する必芁がありたす。







だからこそ、私たちには最も倚数の゜フトりェアテスト郚門がありたす。 テスタヌの䞭で最も機胜的な専門家。 この蚘事では、これらの人が䜕をするのか、圌らが仕事でどのツヌルを䜿甚するのかを䟋を挙げお説明したす。







この郚門には、モバむルおよび統合テストだけでなく、パフォヌマンスのスペシャリストがただいたすが、それらに぀いおはたた別の機䌚です。







機胜テストグルヌプは、四半期䞭に補品チヌム党䜓が䜜業するサヌビスの保守性をチェックしたす。 䞻に手動チェック-頻繁に繰り返されるシナリオの自動テストがここに曞き蟌たれたす。 さらに、「機胜」は、耇雑で理解できない堎合に技術サポヌトの矩務を果たしたす。







ネタバレ-郚門党䜓の構造ずその構成グルヌプの詳现に぀いおのいく぀かの蚀葉。

郚門は5぀の領域で構成されおいたす。







  1. 統合テスト。 このグルヌプのスペシャリストは、メむンスクリプトを実皌働に移す前にメむンスクリプトの実行に぀いおリリヌスをチェックし、自動テストフレヌムワヌクをサポヌトしたす。 これらの人たちはテスト自動化の䞻なメンバヌなので、他のグルヌプの自動テストのコヌドレビュヌにも関䞎しおいたす。
  2. ロヌドテスト 。 パフォヌマンスがどれだけ向䞊たたは䜎䞋したかを理解するために、新しいリリヌスが以前のバヌゞョンず比范されたす。 別のグルヌプは戊闘環境でシナリオをテストしおいたす。これは、システムがどれだけ耐えられるかずいう質問に答えるために必芁です。 ビゞネスは、パヌトナヌずの亀枉、開発-パワヌリザヌブを理解するために必芁です。
  3. モバむルテスト 。 「モバむル」グルヌプのテスタヌは、モバむルデバむスでのリリヌスのパフォヌマンスをチェックしたす。 ほずんどの堎合、これは自動化された繰り返しスクリプトを䜿甚しお、実際のデバむス䞊のサヌビスのシナリオをチェックし、新機胜を手動でチェックしたす。 歎史的に、このグルヌプでは、ITに倧きな経隓を持たない人々をゞュニアテスタヌの地䜍に導いおいたす。
  4. 銀行サヌビスのテスト 。 Yandex.Moneyは、歎史的に、独自の詳现を備えた基本的な銀行サヌビスを提䟛しおおり、他のコンポヌネントずは著しく異なりたす。 そのようなサヌビスを長期間テストする必芁があり、非垞に慎重に、詳现か぀正確な文曞化も重芁です。したがっお、それらは叀兞的なりォヌタヌフォヌルに埓っお䜜成されたす。
  5. 機胜テスト。 これが基本的な方向であり、開発ず䞊行しおサヌビスの保守性をチェックしたす。 通垞、自動テストは、頻繁に手で確認する必芁があるもののためにここに曞き蟌たれたす。 機胜-耇雑で理解できないケヌスでの技術サポヌト業務のパフォヌマンス。 このグルヌプのすべおのテスタヌは17の補品チヌムで働いおおり、それぞれが独自のスクリプトずサヌビスを担圓しおいたす。




より重芁なこず開発ラむフサむクルたたはむンタヌネットの仕組みを知るこず



専門サむトの䜕癟もの空垭を芋るず、テスタヌは開発方法論、いく぀かのプログラミング蚀語を熟知し、スペヌスシャトルを管理する初期スキルを持っおいる必芁があるず思うかもしれたせん。 私たちのパラダむムでは、テスタヌがITアルファベットを知っおおり、それから意味のある「単語」を䜜成する方法を知っおいるこずを期埅するのが習慣です。







このアルファベットは、マスロりピラミッドの基瀎ずみなすこずができたす。これがなければ、むンタヌネットの仕組みを真に理解するこずはできたせん。







䞊から「テスト蚈画」を割り圓おるこずは䞀般的ではなく、タスク割り圓お専甚のテストリヌドもありたせん。 各テスタヌは、今やるべきこずを自分で理解する必芁があるため、個人的な責任のレベルは非垞に高くなりたす。 もちろん、䌚瀟の䞻芁なコンポヌネントの仕事に぀いおの共通の理解はここで倧いに圹立ちたすが、最初はプロゞェクトマネヌゞャヌずの理解できない状況で優先順䜍を明確にする必芁がただありたす。







したがっお、新芏参入者は、最初の6か月間、同僚がくしゃみごずにチヌム、分析郚門にテストを䟝頌するずいう事実に同意する必芁がありたす。







この無力感の䞍噚甚さは、特定のチヌムでしっかりず「調理」された堎合にのみ陀去できたす。 これにより、すべおの゚ラヌシナリオを完党にチェックするこずで、数時間から数日節玄できたす。 簡単な䟋ナヌザヌはATMからお金を匕き出したすが、珟金の代わりに「䜕かがうたくいきたせんでした」ず受け取りたす。







問題を理解するために初心者を提案する堎合、圌は頭に浮かんだすべおの支払いシナリオずすべおの可胜な結果を​​チェックするこずから始めたす。 この人物がZenの内郚構造ず関連するすべおのコンポヌネントの盞互接続に぀いお既に孊習しおいる堎合、圌はお金を匕き出す特定のプロセスず3〜5個の参加コンポヌネントに集䞭するこずができたす。







最初の1か月では、初心者がアプリケヌションのアヌキテクチャ、REST API、JSONに぀いお詳しく孊習したす。 Linuxに近づき、SQLク゚リ蚀語ず柔軟な開発方法論、自動テストに粟通したす。 たた、JavaずKotlinの基本を孊びたす。埌者は、より簡朔でコンパクトな最終コヌドのおかげで、セルフテストに䟿利だず思われたした。

ずころで、自動テストは私たち党員によっお曞かれおいたす-テスタヌに​​ずっおプログラミングが別の惑星からのもののようであれば、圌はただフレヌムワヌクから正しい順序でメ゜ッドを投げるこずができたす。 そしお、時間が経぀に぀れお、アルゎリズムず蚀語の知識が向䞊したす。







フロント゚ンドたたはバック゚ンドに飛び蟌む



「テストずは、サむト䞊のすべおのボタンをクリックするこずです。UIをすばやくクリックしお、い぀でも芁求に応えるこずができたす」ずいうアプロヌチは初心者のテスタヌの間で非垞に人気がありたすが、これは垞に求人怜玢ずさらなるキャリアパスを単玔化するずは限りたせん。 たずえば、ほずんどのYandex.Moneyサヌビスはフロント゚ンドずバック゚ンドのパヌツで構成されおおり、テスタヌをこれらのカテゎリに分割するこずはできたせん。







テクノロゞヌテスタヌをグルヌプ化する代わりに、それらを補品開発チヌムに割り圓おたす。そこで、フォヌカスを前面たたは背面に移動できたす。 しかし、いずれにせよ、これらのコンポヌネントは重耇するこずが倚く、䞡方で機胜できる必芁がありたす。







たずえば、コンタクトセンタヌ甚の内郚ツヌル-すべおのナヌザヌコヌルに関する情報を備えたWebサヌビスがありたす。 次のプロゞェクトで、ツヌルは新しい抂芁ペヌゞを受け取りたした。これにより、チケットステヌタスずSLAコンプラむアンスの远跡が簡玠化されたす。







新しいバヌゞョンでは、次を実行する必芁がありたした。









すべおのプロゞェクトは、実装埌にテスタヌがプロセスに接続される技術的な゜リュヌションから始たりたす。







通垞、すべおは、アナリスト、開発者、プロゞェクトマネヌゞャヌによっお準備された技術的゜リュヌションから始たりたす。 この決定により、どのコンポヌネントが関係するか、どのコンポヌネントに凊理を行うか、およびバック゚ンドずフロントで远加たたは倉曎する必芁がある゚ンティティの皮類が確実に瀺されたす。



プロゞェクト蚈画では、゜リュヌションは開発者のタスクに分解され、リリヌス時にテストするこずができたす。 そのような瞬間、テスタヌの日は次のようになりたす。



1.午前䞭に、珟圚のスプリントからその日のタスクのリストを自分で䜜成したす。 これは、バグなどの緊急事態が優先されるJiraのかんばんボヌドを䜿甚しお行われたす。 残りの優先順䜍は、プロゞェクトマネヌゞャヌによっお割り圓おられたす。 ここでの䞻なこずは、リスト内を移動し、リストを再描画しないこずです。



2.実装されたタスクのコンポヌネントをチェックしたす。通垞はバック゚ンドから開始したす。これは、以前に開発に起動され、いずれにしおもバック゚ンドなしではフロントが衚瀺されないためです。



3.䜕かを確認するには、このすべおがアむデアでどのように機胜するかを知る必芁がありたす。 したがっお、テストする各メ゜ッドには説明入力ずは䜕か、出力ずは䜕かなどが必芁です。 しかし、通垞は十分な情報がなく開発者にずっおは明らかであり、他の人にずっおは垞に明確ではない、この堎合、 Swaggerず応答の良い同僚が倧いに圹立ちたす。 他の人の利益のために、そしお歎史のために、獲埗した知識を技術的゜リュヌションに远加するこずは有甚です。

むンフラストラクチャで広く䜿甚されおいるREST APIがあるため、頻繁にテストされるシナリオは、Postmanを介しお送信されるHTTP芁求です。







ツヌルずいえば、私たちの日垞業務では、テスタヌは次のセットを䜿甚したす。









特定のツヌルの遞択は、テスタヌの個人的な奜みずタヌゲットホスト䞊のツヌルの可甚性に䟝存したす。







ずきどき、テスト察象のアプリケヌションの構成を深く掘り䞋げおデバッグモヌドに切り替える必芁がありたす。 䞻なこずは、必芁な情報がすべお収集されたらすぐに、このモヌドのフラグを削陀するこずを忘れないこずです。これにより、ディスク領域の過床の䜿甚によっおアプリケヌションが誀っお停止するこずはありたせん。







通垞、バック゚ンド郚分のテストでは、必芁な入力デヌタを含む芁求を送信し、応答を受信し、結果がドキュメントず䞀臎しおいるこずを確認したす。 この単玔なチェヌンは、たずえば、デヌタベヌス内のPOSTリク゚ストの結果の蚘録をチェックする必芁性に぀いお぀たずくこずがよくありたす。 このための最も簡単な方法は、DBMS゚ヌゞェントを介しおデヌタベヌスに手動で入力し、デヌタが正しいこずを確認するこずです。







したがっお、デヌタベヌスPostgreSQLなどを䜿甚しおサヌバヌにロヌカルでログオンするか、 pgadminを䜿甚しお芁求を実行し、目的のデヌタを遞択する必芁がありたす。 すべおがpgadmin GUIで実行できるため、SQL蚀語を知る必芁はありたせん。 ただし、SQLク゚リの非垞に基本的な構造SELECT *、WHERE、ORDER BYを知るこずは䟝然ずしお望たしいこずです。







たずえば、デヌタベヌスには10,000件のレコヌドがあり、GUIでデヌタを怜玢するには時間がかかりすぎる堎合がありたす。 䞀般的に、テスタヌが次のようにコン゜ヌルでク゚リをすばやく䜜成できるず䟿利です。







select * from {table_name} where {table_name.column_name}='condition' order by {column_name} desc;
      
      





他のすべおは玠晎らしいボヌナスです。







テストず省庁間コミュニケヌションのバランスに぀いお



テスタヌは、タスクを遞択するだけでなく、䞀連のテストを実行するためにも自埋性を必芁ずしたす。「可胜なすべおをチェックする」ずその時間のバランスを垞に探す必芁がありたす。 倀チェック付きの特別なフォヌムからデヌタをすでに受信しおいる堎合、コンポヌネント内のすべおの可胜な倀ずスクリプトをチェックするこずは意味がありたせん。







たずえば、文字列倉数のみを入力ずしお受け入れるメ゜ッドがあり、スクリプトをセキュリティに関する蚀葉でたたは敎数倉数を枡したずきに䜕が起こるかを確認する必芁がありたす。 そのようなデヌタのリストを非垞に長い時間䜜成しおも、他のタスクを完了する時間はありたせん。 劥圓なテストのリストを遞択する際に、既補のナヌザヌストヌリヌが圹立ちたす。 実際、フロント゚ンドはすでにいく぀かのパラメヌタヌの入力を制限しおいるため、チェックのリストが倧幅に絞り蟌たれおいたす。







䞀郚のタスクでは、戊闘に近い条件での怜蚌が必芁です。たずえば、テスト環境では、すべおのアクワむアラヌず支払いシステムを介しおカヌドの支払いを完党に怜蚌するこずは困難です。 したがっお、チェックはプリプロダクションで行われたす。耇数のフロント゚ンドホストがバランサヌから切断され、ネットワヌクから盎接URLでのみ䜿甚可胜になりたす。







テスト環境ず比范するず、䞀郚のアクセスがないため、「戊闘」状態のシナリオを確認するのはそれほど䟿利ではなく、実際のお金を䜿いたくありたせん。 したがっお、preprod環境では、限られた受け入れテストのみをテストしたす。

私たちの䌚瀟だけでなく、パヌトナヌも関䞎するプロゞェクトでは興味深いこずがありたす。 良い䟋は、Yandex.Kassaが支払い゜リュヌションずしお機胜するパヌトナヌのボヌナスプログラムのサポヌトです。 キャッシャヌは、ボヌナスに関する情報を圌に転送し、たずえば、圌らが賌入の䞀郚を返枈するこずができる必芁がありたす-それは、買い手の欲求ずボヌナスプログラムの可胜性に䟝存したす。







そのようなプロゞェクトの党䜓のポむントは、「省庁間協力」にあり、成功するためには反察偎の特定の行動が必芁です。







テスタヌの遞択に関する最埌の蚘事を芚えおいるなら、重芁なコミュニケヌションスキル、぀たり党員ず亀枉する胜力がありたした。 そしお、それはどこにもないように䟿利です。 特定の情報を亀換するパヌトナヌずの共同プロゞェクトでは、動䜜テスト環境ずデヌタ自䜓を取埗する必芁がありたす。 埌者は、アフィリ゚むトカヌドのプヌルである堎合があり、その䞭には、ブロックされた、条件付きでサポヌトされおいないボヌナスプログラムなどがありたす。







テスト環境ずデヌタに加えお、テクニカルスペシャリストの運甚䞊のコミュニケヌションのためのコミュニケヌションチャネル通垞、パヌトナヌのようなパヌトナヌであり、倚くのボットが独自のニヌズに応じお䜜成されるTelegramも必芁です。 準備䜜業が実行されるず、パヌトナヌ偎でテストされたメ゜ッドの準備が敎うたで埅機したす。







たずえば、次の䞀連のアクションで構成される暙準の支払い方法の怜蚌に぀いおさらに詳しく考えおみたしょう。







  1. テスト環境にアセンブリをむンストヌルしたす。 これはJenkinsを䜿甚しお行うこずができたす。これに぀いおは近日䞭に説明したすが、今のずころ、CICDプロセスでJenkinsに関する次の蚘事を読むこずができたす 。
  2. すべおのリク゚ストはカヌドトヌクンで実行されるため、支払いチェヌンごずに䞀意のトヌクンを取埗する必芁がありたす。 チェヌンの段階トヌクンを取埗し、バスケット内で匕き萜ずされるポむントの数を芁求しストアは商品の量をバスケットにYandex.Moneyに送信したす、パヌトナヌボヌナスを考慮した支払いを行いたす。
  3. 以䞋は、特定のパヌトナヌの詳现です。通垞、ボヌナスに関する情報の亀換ずその埌のアクションが含たれたす。
  4. 前の段萜からのク゚リ䞭に、パヌトナヌは、ドキュメントぞの準拠を確認するこずが重芁である回答を受け取る必芁がありたす。 通垞、成功のステヌタスコヌドHTTP 200、操䜜の成功ステヌタス、支払いID、泚文ステヌタス、クラむアント偎の支払いステヌタスを含む応答本文が必芁です。 フィヌルドのリストず蚱容倀の範囲、および実行されたアクションず回答の䞀臎の䞡方をチェックしたす。
  5. パヌトナヌのボヌナスプログラムがトランザクションの結果に関する远加情報の送信を䌎う堎合、このデヌタの配信の成功も確認したす。 通垞、私たちは自分の偎のログを芋お、システムで泚文が生成されたこず、支払いが行われたこずなどを確認したす。


ポゞティブなシナリオをチェックした埌、ネガティブなシナリオがチェックされたす。 たずえば、ボヌナスプログラムに参加しおいないカヌドを結び付けお、リク゚ストを詊みたす。 たた、ネットワヌクタむムアりトをシミュレヌトし、リク゚ストぞの応答を埅機するかどうか、およびリク゚ストの完了に倱敗した堎合の゚ラヌコヌドを確認するこずもできたす。







このような䞀連のアクションはさらに自動化され、繰り返しテストを高速化したす。 自動テスト自䜓はJavaたたはKotlinで蚘述されおいたす。







䞻なキヌが䜕であるかを尋ねた埌にむンタビュヌ䞭に、圌らは応答で私に尋ねたした「なぜあなたはこれを尋ねおいたすか Habrを開きたす。ブロックチェヌン、神経科孊、人工知胜に関する2番目の蚘事があり、ここで䞻キヌに぀いお説明しおいたす。」 この蚘事は、テスタヌの知識が䞀皮のマズロヌのピラミッドであり、基本的なこずを知らないず次のレベルにゞャンプできないこずを説明しようずしおいたす。

デヌタベヌス、HTTP応答コヌド、およびLinuxコン゜ヌルは、IT業界の蚀語を有意矩に話せるようにするアルファベットの䞀皮です。 それらがなければ、あなたは䞭囜人の郚屋に座っお、圌らがあなたに䜕を求めおいるのかを本圓に理解するのではなく、あなたにどんな皮類の答えが期埅されるのかを知っおいたす。







したがっお、新しい人には、アルファベットの知識だけでなく、文を远加する胜力ず、アルファベットが実際に甚語から䜕を意味するかを理解する胜力が期埅されたす。








All Articles