QAから芋た䞖界的な請求Badoo







こんにちは、Habr 4幎以䞊にわたっお、私はBadoo課金システムの手動および自動テストに携わっおきたした。 たた、Badoo課金は䞖界で最も開発されたそしお耇雑なものの1぀であり、それをテストするこずは倚くの堎合、興味深く、䞊倖れたタスクです。 今日、これらのシステムが非垞に興味深く、匷力である理由、長幎にわたっお孊んだこず、および請求のテストが 非垞に 怖くない理由をお話したいず思いたす。 そしお同時に、私はあなたず興味深い物語の別のバッチを共有したす はい、私はこのビゞネスが倧奜きです 。 ほずんどのこずは、特定のケヌスだけでなく、他の耇雑な支払いシステムにも適甚できたす 正盎なずころ、支払いシステムだけでなく 。



請求は䜕ですか これは、3億3千䞇人以䞊のナヌザヌが登録されおいる゜ヌシャルネットワヌクの支払い凊理システムです。 私たちは䞖界のすべおの囜で支払いを受け付け、30を超えるアクティブな支払い方法をサポヌトしそしお、それらの玄100が垞に実装されおいたす、1秒あたり玄1500件のリク゚ストを凊理したす。 Billing Badooは、倚数の異なるクラむアント異なるプラットフォヌム、異なるアプリケヌションで動䜜する独立した専甚サヌビスです。 テストを開発するのに十分な奜奇心が匷いですね。



テスト察象



それで、たず最初に、私たちが正確にテストしなければならないこずを簡単に説明したす。 すべおのクラむアントWeb、モバむルアプリケヌション、および䞀郚のバック゚ンドサヌビスは、APIを䜿甚しお課金ず通信したす。 課金自䜓は各デヌタセンタヌの個別のクラスタヌに配眮され、さたざたな支払いシステムず通信したす支払い芁求の送信、芁求の凊理結果を䌎う通知の受信など。 クラスタヌには、顧客の芁求ず支払いシステムを凊理するマシン、CLIスクリプトを起動するマシンたずえば、期限切れのサブスクリプションサヌビスを曎新するマシン、銀行カヌド支払いずデヌタベヌスを凊理する独自のサヌバヌが含たれたす。







課金開発者は、いく぀かのタむプのタスクを凊理したす。





そしお、これらすべおの「良い」こずは、最終的に私たちの小さなチヌムをテストするこずになりたす。 課金開発者から盎接のタスクに加えお、他のチヌムが支払いに関係がある堎合は、クラむアントやモバむルアプリケヌションサヌバヌの倉曎や新機胜など、他のチヌムからもタスクを受け取りたす。



正確に䜕をテストしおいたすか すべおを3぀のカテゎリに分類できたす。





これらすべおに぀いお順番に話そうず思いたす。



ナヌザヌむンタヌフェヌス



したがっお、ここで最も重芁な郚分は支払いりィザヌドです。 同じ機胜賌入したいサヌビスの量ずその方法に関する情報をナヌザヌから受け取るを実行するず、りィザヌドはプラットフォヌムごずに異なっお芋えたす。 これは䞻にプラットフォヌムの機胜に䟝存したすが、芏制圓局のさたざたな芁件ず、アプリケヌションで実行される無数のA / Bテストにも䟝存したす。



ここで䜕をテストできたすか はい、すべおの海 遞択したサヌビスオプションに察しお、各支払い方法が正しく衚瀺されるはずです。 オプションのリスト自䜓は目的のリストに察応する必芁があり、それぞれに請求蚭定で指定された䟡栌が含たれおいる必芁がありたす。䟡栌ず通貚の圢匏は、囜で採甚されおいる暙準に準拠する必芁がありたす䟋 $ 6.49、125.00 MXNたたは17.64BYN 。



各支払いりィンドりには、詳现な利甚芏玄が必芁です。 各プロモヌションりィンドりには、必芁なものすべおが含たれおいるか、条件の完党な説明ずずもに次のステップに進む必芁がありたす ちなみに、これは忘れがちな最も䞀般的な問題の1぀です 。



このようなりィンドりでのナヌザヌアクションには、支払いの成功に関する゚ラヌだけでなく、゚ラヌに関する正しいメッセヌゞも添付する必芁がありたすナヌザヌがパヌトナヌ偎で支払いをキャンセルしたずきず、実際に間違った情報を入力したずきを区別できる必芁がありたす。



このすべおに察しお基本的なチェックのセットを䜜成し、それに限定できるように思われたす。 あった 各囜には、ビゞネスを行うために遵守しなければならない独自の必須芁件がありたす。 たずえば、ベルギヌでSMSを䜿甚しお支払いを行う堎合、短い支払い番号を黒い長方圢の䞭に倧きな癜い数字で描画する必芁がありたす 冗談ではありたせん 。 フランスでは、サむトのすべおのペヌゞに䞀床に既存のサブスクリプションサヌビスからサブスクラむブを解陀するボタンが必芁でしたが、サブスクラむブ解陀自䜓は確認ステップなしでワンクリックで実行する必芁がありたす。 䞀郚の囜では、䟡栌に皎金が含たれおいるこずを通知するこずが䞍可欠であり、他の䞀郚の囜では、サヌビスのコストず远加の皎金を個別に瀺すこずさえありたす そしおそれらを合蚈する堎所はありたせん 。



支払い方法のこのような「動物園」を確認する方法は 最も正盎なテストのために䞖界のすべおの囜に旅行するこずは倱敗したす そしお、ブラゞルで支払いをテストしたいですsob 、たた、既存のすべおの支払いシステムでアカりントを䜜成したす。 したがっお、さたざたな「サンドボックス」に満足する必芁がありたす。 䞀郚のパヌトナヌは、銀行カヌドアグリゲヌタヌやPayPalなど、非垞に䟿利な独自のサンドボックスを提䟛しおくれたす。 そのうちのいく぀かはそれほど機胜的ではありたせん。パヌトナヌの1瀟にずっおは、「支払い」ボタンが重ねられた通垞の支払いりィンドりのスクリヌンショットです 。



他の堎合には、さたざたな回答や通知を゚ミュレヌトするサンドボックスを自分で構築する必芁がありたす。 しかし、これでもどこでもうたくいくわけではなく、手で通知を収集し、コヌド内で䜕らかの眮換を行い、httpsリク゚ストで自分に送信する必芁がありたす。



モバむルアプリケヌションのりィザヌドは、たったく別の頭痛の皮です。 ここでは、ナヌザヌはさらに間接的に請求ず通信したす。 アプリケヌションは、支払いシステムAppleStoreやGoogleWalletなどに芁求を送信したす。応答はモバむルアプリケヌションサヌバヌに盎ちに送信され、モバむルアプリケヌションサヌバヌは情報を凊理しお新しい芁求を請求クラスタヌに送信し、請求応答はこのようにすべお支払いシステムに戻りたす。 ナヌザヌ゚クスペリ゚ンスは、このチェヌンのどこでも䞭断する可胜性がありたす。 ゚ラヌの雲は、芁求が請求に達せず、支払いが完了しなかったこずを意味する堎合がありたすが、すべおがうたくいったこずを意味する堎合もありたすが、モバむルアプリケヌションサヌバヌは、予期したずおりの圢匏で支払いシステムに応答したせんでした。 混乱



たた、特にサブスクリプションをテストしようずする堎合、AppleやGoogleにある䞍快なサンドボックスに぀いおはここで話さないでください。



ずころで、倖郚のパヌトナヌず協力するずいう事実は、倚くの問題をもたらしたす。 支払いりィンドりは長時間開いおテストの速床を䜎䞋させる可胜性があり、最も䞀般的なバグ 自尊心のあるテスタヌずしお、たず自分の開発者に起因するバグ を含めるこずができたす。 協力が必芁なアクション同じバグの修正、プロトコル拡匵も遅延するこずが倚く、私たちに通知せずに独自に倉曎を加えるこずができたす ゚ラヌスケゞュヌルの増加からのみ孊習したす 。䞍完党なドキュメントたたは誀ったドキュメントですらありたす。



管理者



課金の重芁な芁玠は、ナヌザヌの目から完党に隠されおいたす。 これにより、圓瀟の管理者はサヌビスの䟡栌ず可甚性を調敎し、プロモヌションキャンペヌンを開始できたす。たた、テクニカルサポヌトワヌカヌはナヌザヌの問題の原因を特定し サヌビスを「無料」で取埗しようずしおいないこずを確認したす そしおそれらを解決する安党な方法。 さらに、これらのすべおのツヌルはテストに圹立ちたす倚くの堎合、ナヌザヌむンタヌフェヌスのアクションだけで、たたは非垞に長い時間プレむするこずは非垞に困難です。



盎接的なパフォヌマンスチェックに加えお、開発者ず管理者が実装された機胜を同じ方法で認識するこずを保蚌するために倚くの時間を費やす必芁がありたす 倚くの堎合、䞡者間の連絡を確立しお盞互理解を完了するこずしかできたせん 。 すべおの構成システムは、幅広い機胜のために非垞に耇雑です垞に倚数のA / B蚭蚈テスト、支払い方法、および販促キャンペヌンがありたす。たた、ほんのわずかな詳现であっおも、システムの動䜜が予想ずはたったく異なる堎合がありたす。管理 私たちの責任は、開発者がタスクを正しく理解し、管理者が提䟛されたドキュメントある堎合 を把握できるようにするこずです。 そしおもちろん、コンフィギュレヌタヌを倉曎するたびに、䜜業の結果を远跡し、誰もが本圓にこれを実行したいかどうかを明確にするこずは非垞にクヌルです。



そしお、ここで私たちが開発したツヌルの1぀を自慢する必芁がありたすもちろんテスト枈みです必芁な銀行や口座にカヌド支払いをルヌティングするために、名誉あるMerchant Spotlight Awardを獲埗したした。



バック゚ンド



そしお、ここから楜しみが始たりたす。 䞀般ナヌザヌの目に芋えないもの; マネヌゞャヌが䜕も知りたくないこず 開発者の最も恐ろしい空想が具珟化される堎所-支払いの凊理ずサヌビスの提䟛の内郚ロゞック







あらゆる皮類のこずをテストするだけです。





サヌバヌコヌド内のさたざたなロゞックの量は、単に無制限です。 新しいタスクはそれぞれ、「どのように機胜するかを理解する=>どのように機胜する必芁があるかを理解する=>システムをこのように機胜させる方法を理解する」ずいうタむプの楜しいク゚ストに倉わりたす。 これを達成する方法は䜕ですか



たず、 コヌドを読む必芁がありたす 。 ブラックボックスずしお請求をテストするこずはほずんど䞍可胜です。システムの仕組みを知っおいるだけで、ここでテストできるケヌスを理解できたす。 さらに、テストを成功させるために頻繁にコヌドを倉曎する必芁がありたすアグリゲヌタヌぞの呌び出しを削陀し存圚しないテストサブスクリプションのステヌタスを芁求しないようにする、通知の眲名怜蚌を眮き換えたすそのため、毎回生成する必芁はありたせんたたは「ハヌドコヌド」 A / Bテストでの特定のオプションの遞択望たしいグルヌプに分類される倚数のナヌザヌを登録しないようにするため。 幞いなこずに、これらのプロセスを簡玠化するためのテストナヌティリティを開発するために最善を尜くしおいたす。



第二に、 非自明な方法で物事をテストするこずを恐れおはいけたせん 。 むンタヌフェヌスからケヌスを確実に再生できたせんか 機胜テストを曞くこずができたす 「ペン」でテストベヌスに登り、必芁なデヌタを入力できたす パヌトナヌから通知を手動で収集し、自分のアドレスに送信できたす 䞻なものは、野生に登るこずを恐れないこずです。



第䞉に、 開発者はあなたの友人です。 共同の楜しいデバッグは、魅力的 垞にではない で結集したチヌムです 開発者を絞殺したい堎合を陀く 。 予期しない動䜜ず䞀緒にするず、はるかに簡単になりたす。 そしお、あなたはあなたの間違いを理解しおタスクを正圓化するか、実際の問題を芋぀けお開発者にそれを完成させるために戻っおもらい、すでに状況をある皋床理解したす たたは叀い開発者が䌑暇に入った堎合は新しい開発者に状況を敎理したす 。



自動テスト



自動テストは非垞にクヌルなものです。 実際、ここでのテストは、 テストしないよりもはるかに優れおいたす 。 私たちず盎接、すべおの自動テストを4぀のグルヌプに分けるこずができたす。





これらのテストはい぀実行されたすか さたざたな組み合わせで、これは垞に発生したす。





もちろん、これらのすべおの自動テストにはかなりの時間がかかるため、このプロセスを可胜な限り最適化するよう垞に努力しおいたす。 統合テストず単䜓テストさらに最近ではcurlテストでは、クラりドベヌスの「テストランチャヌ」を䜿甚したす 4分で73,000以䞊のテストが既に 。 Seleniumテストには、SeleniumGridクラスタヌの「倧芏暡ファヌム」がありたす。 そしお䞀般的に、テストの改善ず最適化の䜜業は止たりたせん。



モニタリング



タスクに察するテスタヌの䜜業は、タスクが本番に送信された時点ですぐには停止したせん。 戊闘環境での䜜業のストレスに耐えられるようにするこずは、泚意深い監芖によっおのみ可胜です。 新しい予期しない゚ラヌがログに衚瀺されたしたか  はい、予想される゚ラヌが発生したす、これは正垞ですか 課金クラスタヌの負荷は増加したしたか ある囜たたはある支払い方法で利益が枛少し始めおいたすか  たたは、急激に増加したすが、これも通垞奇劙です。 Badooには、24時間䜓制ですべおのメトリックを手動および自動モヌドで監芖する玠晎らしい監芖郚門がありたす。 ただし、いずれにせよ、特定の異垞の原因を独立しお特定するためには、ある皋床の時間が必芁です。 したがっお、QA゚ンゞニアは 最埌の バトルでタスクを慎重に実行する必芁がありたす。



これらの目的のために、いく぀かの異なるシステムを䜿甚したすが、そのうち最も重芁なものは3぀です。





請求チャヌトで異垞ず芋なされるものは䜕ですか ポヌランドでこのチャヌトを芋おみたしょう。 各ポむントは最終日の総利益を瀺し、チャヌトのスケヌルも1日です。









悪倢、ひどい利益の䜎䞋、すべおの鐘を打たなければなりたせん しかし、それは䜕ですか その月のチャヌトを開きたす...









なんおこった これが、ポヌランドでのモバむルアグリゲヌタヌの仕組みです。 すべおのサブスクリプションの曎新は、火曜日などの特定の曜日にのみ行われたす。 ナヌザヌが月曜日に1週間賌読した堎合、...圌は火曜日の「zacharjat」ずたったく同じです これがポヌランドのルヌルです。 そしお、各ピヌクは、あるアグリゲヌタヌの「倧切な」曜日です。



さらに調べたす。 AppleStoreの来月24日から1日たでの週の利益の同様のグラフ









怖がっおる もちろん そのような秋、1日あたりの成長なし-明確な問題 オフィスを真っ盎ぐに駆け抜けお悲鳎を䞊げる間、䞀日が過ぎたす。 そしお、私たちは䜕を芋たすか









スケゞュヌルは自然に回埩したした 魔法 臎呜的な間違い 爬虫類プロット たったく、これはAppleのポリシヌです。 サブスクリプションは、サブスクリプションが開始された月の同じ日に垞に曎新されたす。 しかし、2月に30日たたは31日から登録を開始したナヌザヌはどうなりたすか1か月間無料で無料で座っおいたすか もちろんそうではありたせんが、2月28日の「充電」です。 そしお、それ以降、28の番号のみが請求を開始したした。 そのため、月末にはこれら2぀のピヌクが䞋がり2月の28日目ず他のすべおの「短い」月の30日目、31日目にサブスクリプションは1か月以䞊曎新されたせん。



ご芧のずおり、監芖も賢明に必芁です。 すでに述べたように、 テストするこずはそれほど悪くはありたせんが、過床の譊戒心のために開発者からカフをキャッチするこずもできたす。



結論の代わりに



課金のテストは、面癜くお楜しいものです。 そこには倚くの異垞なもの、萜ずし穎、裏通りがありたすが、誰にも知られおいたせんが、ほがすべおのタスクの解決策は本圓の探求であり、それを完了するず絶察的な勝利を味わえたす。 このテスト領域に぀いおあたり語られおいないのは残念です そしお䌚議で、「そしお、私たちは本番で課金をテストしたす」のようなこずを繰り返し聞いおいたす 。 私の蚘事が、誰かが圌らの䌚瀟のテストプロセスを違った芋方をし、おそらく、圌らの支払いシステムをもう少し厳しくテストするこずに決めるのを助けるこずを願っおいたす。 ずにかく、䜎レベルのもの。 私を信じお、これは本圓に退屈ではありたせん



クディノフむリダシニア QA゚ンゞニア



All Articles