負荷テストどこから始めおどこを芋るか

おそらく、アプリケヌション/サヌビスがどのように機胜するかには、それを䜿甚するナヌザヌの数に応じお倧きな違いがあるこずをご存じでしょう。 開発䞭に機胜したものは、その環境の最初の実際のナヌザヌが到着したずきにバラバラになる可胜性があり、100人のナヌザヌで機胜したものは、1䞇人のナヌザヌがいるずきに死にたす。 たたは、人工デヌタですべおをテストした埌、İnariずいうナヌザヌが原因でデヌタベヌスの速床が䜎䞋し始めるこずがありたす。



Alexei LavrenyukYandexおよびVladimir SitnikovNetcrackerず、バグがどのように生き残るか、プロゞェクトに負荷テストを「含める」タむミング、それらのデヌタを取埗する堎所、テストをたったく行わずにすぐに実皌働にダンプできるかどうかに぀いお話したした。 。









あなた自身ずあなたの仕事に぀いおのいく぀かの蚀葉。 あなたの仕事はテストにどのように関係しおいたすか



Alexey Lavrenyuk負荷テストサヌビスのYandexの開発者です。 パフォヌマンステスト甚のツヌルずサヌビスを䜜成しおいたす。 オヌプン゜ヌスの負荷テストツヌルであるYandex.TankずPandora 、および負荷テストのためのサヌビス-Overloadをご芧ください。 無料のベヌタ版アクセスが利甚可胜になりたした 。



以前は、サヌバヌアプリケヌションのパフォヌマンスしかテストできたせんでしたが、珟圚はモバむルアプリケヌションをマスタヌしおいたす-これは新しいトレンドです。 たずえば、電話の消費電力をテストしたす。 ここでそれに぀いお読んでください 。



Vladimir Sitnikov私はNetcrackerで12幎間働いおいたす。 今、私は生産性゚ンゞニアの地䜍を占めおいたす。 補品のテストは行っおいたせんが、実際の䜿甚時およびテスト時のシステムの動䜜を芳察しおいたす。 私の責任分野には、開発ず蚭蚈の分野における特定の゜リュヌションが最終結果にどのように圱響するかの分析が含たれたす。 したがっお、私はしばしばテスト結果を芋るだけでなく、それを蚈画したす。 これは䞻にストレステストを指したす。



か぀お私自身がテストに携わっおいたしたが、今は過去です。



-理論に぀いお少し話したしょう。 テスト段階で問題が発生するのは、タスクの䞀郚のパラメヌタヌを考慮に入れおいない開発者や間違った゜リュヌションを䜿甚しおいる開発者のためだず蚀うのは正しいですか



Alexey Lavrenyuk事前にすべおを予枬するこずはできたせん。 兞型的なサヌビスには倚くの工倫がありたす。補品の問題を解決するために、さたざたなアルゎリズムを遞択し、これらのアルゎリズムのパラメヌタヌを遞択し、ラむブラリ、フレヌムワヌク、運甚䞭のサヌビス蚭定、ハヌドりェアパラメヌタヌを遞択できたす。 これらのツむスタヌを組み合わせるず、数十億の組み合わせが生成され、サヌビスの仕組みを深く理解しおいなくおも、非垞に長い間遞別できたす。 たた、実隓を行っおその結果を分析するためのツヌルがない限り、この理解は埗られたせん。



ロヌドテストは、開発者が非生産的なコヌドを曞くずきに頭を悩たすクラブではありたせん。 これは非垞に匷力な枬定デバむスであり、実際には電子技術者向けのオシロスコヌプであり、コヌドをプロヌブしおその䞭のボトルネックを芋぀けるこずができたす。 そしお、最適化の埌、結果を数倀ずグラフで衚瀺および実蚌したす。



りラゞミヌル・シトニコフ远加したいず思いたす。 「バグはどこから来るのか」は千幎玀の問題です。 そしお、それは別の興味深い質問ず密接に関係しおいたす-なぜ、すべおのテストにもかかわらず、バグは実際のシステムに残っおそこにしか珟れないのか。 テスト䞭にそれらが芋぀からないのはなぜですか タスクを間違っお蚭定しおいたすか



私の意芋では、これは開発チヌムずサポヌトチヌムが異なるためです。 䞀郚の人々は決定を䞋し、たったく異なる-運甚䞭にそれをサポヌトしたす。



生産におけるすべおの問題の半分は、2〜3個の愚かな間違いたたは開発の仮定の組み合わせです。誰かが間違ったコヌドを䜜成したか、愚かなアルゎリズムを䜿甚したなどです。 そのような゚ラヌ自䜓は生産性に圱響を䞎えたせん。最新のハヌドりェアは非垞に匷力であり、倚くを消化したす。 しかし、䞀緒に、2぀たたは3぀の間違いが「解雇」されたす。 たた、開発ずサポヌトが分離されおいるため、これらの゚ラヌの䜜成者はそれらに぀いお知りたせん。



実際、圌らがコヌドの䜜者を探しお、「もう、それを曞く必芁はありたせん。」ず蚀うのはたれです。 しかし、将来そのような間違いをしないこずが保蚌されるためには、開発者はこの経隓を積む必芁がありたす。 独自のシステムのサポヌトがあれば、「詰め蟌たれたコヌン」からの結論がより速くなりたす。



-早期の負荷テスト開発段階で意味がありたすか



Alexei Lavrenyuk最も費甚のかかる゚ラヌは、負荷テストが耳によっお完成したプロゞェクトに匕きずられたずきに埗られたすコヌドが実皌働環境でテストされる堎合に぀いおは話しおいたせん。 コヌドは曞かれおおり、機胜したすが、1秒あたり10個の回答䜕かが必芁な堎合、サヌビスは1぀だけをダむゞェストできたす。 さらに悪いこずに、基盀が非難される堎合-「誰もがそれを䜿甚する」たたは「たあ、それはずおも新しくおクヌルだ」ずいう理由で遞択するフレヌムワヌクです。 ぀たり、すべおをすべお曞き換える必芁がありたす。



問題が早く怜出されるほど、簡単に解決できたす。



-぀たり、私たちはテストを開発し、同時に開始したすか



りラゞミヌル・シトニコフはい、いいえ。 早い段階で、䜕が起こっおいるかを倧たかに芋る必芁がある堎合がありたす。 それは理にかなっおいるかもしれたせん。 しかし、原則ずしお、最初はコヌドは機胜したせん。 たた、たずえば間違った答えを返すコヌドのパフォヌマンスを枬定するこずは悲惚なこずです。 私たちは時間ずリ゜ヌスマシンのものを含むを費やし、結果は䞍明です。



ただし、テストの開始はかなり長い話です。 䜕かを枬定する前に、䜕を正確に枬定し、どのデヌタを䜿甚するのか、テスト䞭にこれらのデヌタに到達するかどうか、再開する方法、監芖するメトリックス、結果に関しおどのような期埅があるかなどを理解する必芁がありたす。 .p。 非垞に小さなプロゞェクトでは、これらすべおを1日たたは2日で議論し、適切な決定を䞋すだけで実行できたす。 ただし、倚かれ少なかれ倧芏暡なプロゞェクトの堎合、特にここで顧客ずの密接な察話が必芁なため、このような問題は1日で解決されたせん。



顧客が最初から特定の芁件を満たしおいる堎合もありたすが、倚くの堎合、「接続」負荷テストの段階でのみ策定する必芁がありたす。



したがっお、最初からストレステストを怜蚎する必芁がありたす。 そしお、負荷テストを最終補品ずは考えたせん。 これは、特定の間違いを避けるために埓うべきプロセスです。 ゜リュヌションが䜜成されるず開発からテスト、出力から実皌働ぞず盎接移行するプロセスで、負荷テストの目的も倉わりたす。 最初はデバッグに䜿甚され、次に゚ラヌを怜出し、最埌に、゜リュヌションの生産準備ができおいるずいう基準ずしお䜿甚されたす。



ここで、埓来のテストずの類掚は私にずっお適切なようです。 い぀オンにする必芁がありたすか 開発の終わりではありたせん。 開発の最埌にテスタヌが来おすべおを修正するずいう事実は神話です。 テストでは修正されたせんが、゚ラヌを怜玢したす。 負荷テストは、特定の皮類の゚ラヌを芋぀けるためのツヌルです。 ただし、アルゎリズム分岐に沿っおプログラムを特定のポむントに枡す可胜性のみを本質的にチェックする埓来のテストずは異なり、負荷テストは生産のベヌタテストであり、デヌタ、負荷、ミックスのテスト比などの違いに぀ながりたす



゚ラヌを正垞に芋぀けるには、怜玢条件が必芁です。 したがっお、プロセスずしお、負荷テストは開発の開始に近づき、実際、システム党䜓が正垞に動䜜するこずを誰かが蚱可したずきに、最初のテストサむクル自動たたは手動の埌に条件付きで合栌したす。



-絶察にすべおをテストしないこずは明らかです。 負荷テストの芳点から最初にどのポむントをテストする必芁がありたすか



Alexey Lavrenyukたず第䞀に、重倧なシナリオ、぀たりお金をもたらすシナリオをテストする必芁がありたす。 さらに、少なくずも2皮類のテストを実行したす。パフォヌマンス制限を決定するためのデバッグず、サヌビスがSLAに適合するこずを確認するためのタむミング枬定です。 ぀たり、サヌビスは「終了」し、実皌働で予想される負荷レベルでタむミングを枬定する必芁がありたす。



-ストレステストをどこから開始する必芁がありたすか



Alexei Lavrenyukストレステストを開始する前に、機胜を実行し、すべおのバグを修正したこずを確認する必芁がありたす。 そしお、それはあなたの立堎です。 撮圱の途䞭で、数癟ギガバむトをダりンロヌドするために誰もブヌスに来ないようにしおください。 䞀般的に、誰も煩わさない䟿利なテスト環境を準備したす。



りラゞミヌル・シトニコフテスト自䜓は、非機胜芁件の策定から開始する必芁がありたす。 パフォヌマンスず安定性の芁件。



最も䞀般的な非機胜芁件アプリケヌションの最も重芁な定量的評䟡は、凊理されたデヌタのサむズ、凊理時間、および起動の頻床です。 これらのメトリックは、ほずんどすべおのプロゞェクトにありたす。



「非機胜芁件」の抂念は広範です。 異なるプロゞェクトでは、コンポヌネントの優先順䜍が異なる堎合がありたす。 たずえば、「システムは再起動せずに3日間機胜する必芁がありたす」たたは「デヌタベヌスずの通信が倱われ、アプリケヌションの埩元が2分以内に通垞の操䜜に戻る必芁がある堎合」-これらも非機胜芁件です。



ずころで、「非機胜芁件」の抂念は、それが独立したものであるずいう考えを圢成したす。 しかし実際には、これらの芁件は、機胜がどのように機胜するかを説明しおいたす。 ぀たり 非機胜芁件なしでは、ランダムに遞択された機胜芁件にNFRを適甚するこずが䞍可胜であるように、機胜芁件は意味を倱いたす。



-負荷テストを実斜するための䞀般的な掚奚事項はありたすか



りラゞミヌル・シトニコフ䞀般に、負荷テストは通垞​​ず同じです。 最も重芁なシナリオ、たたは最も恐れおいるシナリオを取り䞊げたす。 したがっお、プロゞェクトを理解しおいる人が来お、最も危険なシナリオを指摘する必芁がありたす。 さらに、すでに自動化に取り組んでおり、枬定を行っおいたす。



-ストレステストの結果の解釈はどの皋床重芁ですか



りラゞミヌル・シトニコフ玠晎らしい。 重芁なのは数字ではなく、その理由を理解するこずです。 42になっおも、これは結果が良奜であるこずを意味したせん。 顧客は、1分以内に機胜するこずを芁求し、30分かかりたした。 私たちはよくやった、反察するのか いや どうしお速くできないのか、䜕に頌るのかを理解するこずが重芁です。 たた、レポヌトが本物であるこずを確認する必芁がありたす。



䟋がありたした仮想マシンがアプリケヌションのパフォヌマンスにどのように圱響するかを枬定したした。 ハヌドりェアで実行されおいるアプリケヌションず仮想マシンで実行されおいるアプリケヌションのパフォヌマンスを比范したした。 圌らは枬定を行い、予想に近い良い数倀を取埗したした。これは、パフォヌマンスの10分の数パヌセントの䞍䞀臎です。 これで、すべおが終わる可胜性がありたす。 しかし、誰かが結果をより泚意深く芋お、アプリケヌションを起動する代わりに、ログむン゚ラヌのあるペヌゞを返したこずに気付きたした。 テストでは、実際のアプリケヌションは実行したせんでした。 代わりに、各ステップを装っお、ログむンの速床を確認したした。これにより、間違ったパスワヌドで倱敗が発生したした。



この䟋は䜕に぀いお話しおいるのですか テスト䞭に䜕が起こっおいたかを分析せずに、間違った結論に至ったずいう事実。 したがっお、負荷テストの芳点から、重芁なのは埗られた図ではなく、これらの図が説明するものの理解です。



Alexei Lavrenyuk倚くの堎合、人々はグラフの重芁性を過小評䟡しおいたす。最終的な統蚈だけを芋おください。 これも行う堎合は、Enscombe Quartetをグヌグルで怜玢しお、 このオヌトデスクの蚘事を参照するこずをお勧めしたす 。



むンタヌネット䞊の倚くの䞀般的な負荷察応ツヌルabなどは、負荷時のサヌビスのパフォヌマンスに関する芁玄統蚈ず誀った信頌のみを提䟛したす。 それらは詳现を隠し、グラフを浞したす。 このような障害は費甚がかかる可胜性があり買い手が去った、それを修正するのは非垞に簡単ですガベヌゞコレクタパラメヌタを修正する。



さらに、倚くの䞀般的で高䟡な耐荷重ツヌルは、構造的に眮き忘れられおおり、嘘を぀きたす。 これはこの蚘事に曞かれおいたす 。



-Webサヌビスの負荷テストの機胜は䜕ですか 理論的には、コヌドだけでなく環境もテストする必芁がありたすが、これはどのように行われたすか



Alexei Lavrenyuk興味のあるこずはすべおテストする必芁がありたす。 アプリケヌションのパフォヌマンスがモスクワの亀通枋滞に䟝存しおいるず思われる堎合は、これをテストする方法を芋぀けおください。 冗談ではありたせん。ゞオサヌビスは、トラフィックデヌタのレベルが7ポむントに達するず、トラフィックデヌタに察しお自動的に負荷テストを実行したす。



たた、テストにはモバむルアプリケヌションがあり、電話が動いおいる堎合にのみアクティブになりたした。 ぀たり、電話はテスト䞭に揺れなければなりたせんでした。 そのため、これらの携垯電話を携垯したした。 特別な電話シャトルを䜜成するずいう考えさえありたしたが、アプリケヌションは修正のために送られ、今たでのずころ自動化の必芁性はなくなりたした。



-兞型的なプロゞェクトのストレステストのデヌタはどこから来おいたすか モックたたは生産デヌタは䜿甚されおいたすか



りラゞミヌル・シトニコフデヌタに察する兞型的なアプロヌチがあるずは蚀いたせん。 プロゞェクトはただ異なりたす。 システムがデヌタをたったく保存しないが、特定のチェヌンの䞭間リンクであるものがありたす。 それらをテストするには、必芁な情報を生成するだけです。 それどころか、システムは䜕かを保存したす。 たずえば、これがレコヌドの履歎である堎合、問題はありたせん。 ただし、システムが䜕らかの状態DBなどを保存しおいる堎合、ニュアンスがここに衚瀺されたす。



運甚ダンプがない初期段階では、デヌタを生成する必芁がありたすビゞネス構造に぀いお議論し、適切な量の適切なデヌタタむプを生成したす。 残念ながら、これがうたくいくずは蚀いたせん。 生成されたデヌタを䜿甚するず、しばらく存続できたすが、残念ながら、さたざたなシナリオに適した適切なデヌタを取埗するこずは困難です。 そしお、ゲヌムは、あるタむプのク゚リのデヌタの䞀郚、別のタむプのク゚リの䞀郚、第3のク゚リの䞀郚を生成するずきに始たりたす。 パヌツを生成する方が䟿利ですが、同時に歪みが発生したすデヌタが倚すぎるシナリオの皮類ごずに予玄したいためか、䞀郚のシナリオをスキップしたす。 このため、遅かれ早かれ、ダンプにほが䌌たものに切り替えたす-倖郚システムからのむンポヌトたたはマスキングを䜿甚した実皌働。



むンポヌトにも問題がありたす。 私たちは、本番システムのダンプを右から巊にコピヌできない通信セグメントで働いおいたす。 単玔にコピヌできない特定の皮類のデヌタがありたす。 したがっお、システムを動䜜させる方法を考案する必芁がありたすが、デヌタはアスタリスクなどに眮き換えられおいたす。



-本番環境ですぐにテストしお、䞀郚のナヌザヌを接続する方が簡単ではありたせんか



Alexey Lavrenyuk私たちの堎合、これはテストではなく、きちんずしたリリヌスです。 良い方法では、垞に、テスト埌でも、ナヌザヌのシェアにロヌルアりトする必芁がありたす。実皌働環境ではすべおがテストずは異なる可胜性があるためです。



䞀郚のナヌザヌを接続するこずは、ストレステストずどのように異なりたすか この堎合、負荷を完党に管理する胜力がなく、サヌビスを制限たでプッシュするこずはできたせんナヌザヌは単に500゚ラヌを受信し始めるだけです。テストサヌバヌでできる限り倚くのノブを免責しお監芖するこずはできたせん。



䞀方、ちょっずした空想を埗るこずができたす。運甚からのトラフィックの䞀郚をテストサヌバヌに転送し、そこで負荷察応ツヌルを䜿甚したす。 これは既に負荷テストであり、初期デヌタのみが実皌働環境からリアルタむムで取埗されたす。



蚀い換えれば、「保留/保留」応答に満足しおいる堎合およびナヌザヌの特定の郚分を倱望させる可胜性がある堎合、ストレスをかけおテストするこずはできたせん。 パフォヌマンスの限界、ボトルネック、どの監芖を怜蚎するのが適切か、最初にどのツむスタヌを぀かみ、誰に実行するかを知りたい堎合は、負荷テストを行いたす。



りラゞミヌル・シトニコフこれは私たちの堎合ではありたせん。 問題なく生産をテストする䌚瀟がありたす。 それらには、コヌドの新しいバヌゞョンにリダむレクトできるクラむアントの䞀郚がありたす。 私たちの堎合、顧客のビゞネスにずっお重芁なシステムに぀いお話しおいる。 それが機胜しない堎合、顧客はお金を倱いたす。 したがっお、コヌドが動䜜する前に負荷テストが実行されたす。



圓瀟のシステムは顧客のビゞネスにずっお重芁であり、倚くの堎合、顧客の代衚者であるたったく異なる人々によっおむンストヌルおよびサヌビスされたす。 したがっお、圓瀟のお客様は戊闘システムを実隓するこずを望たず、詊運転前に負荷テストが実行されたす。



-負荷テストを実斜するためのお気に入りのツヌルキットはありたすか



りラゞミヌル・シトニコフもちろんです。 䞻に3぀のツヌルがありたす。サヌバヌ偎のテストにはApache JMeterを䜿甚し、ブラりザのテストにはSeleniumを䜿甚し、JavaのテストにはJMHを䜿甚したす。 これらのツヌルは、ほずんどのニヌズに察応しおいたす。



, , 2017 Piter. , , web-, real time show «» web- Python Tornado, , , , « », «» «».



, 2017 Piter, .



All Articles