自動テスト、倜間ビルド、非垞に俊敏性。 補品のテスト方法







私たちのテストは玠晎らしい補品であり、期限が厳しく、倧きな責任がありたす。



各䌁業は、䜜業プロセスの組織に぀いお独自の芋解を持っおいたす。 そしお、それらは非垞に異なる堎合がありたす。



今日は、補品のテスト方法に぀いおお話したす。 おそらくあなたは䜕かず議論するでしょうが、䜕かを奉仕するでしょう。



圓瀟の補品は、倚数のモゞュヌルで構成されおいたす。 これらは定期的に曎新され、これらのアップグレヌドは完党なミニ補品です。



開発者は、別のバヌゞョンでコヌドのパックを収集したす。 そしお、圌らは説明を曞きたす。「 クラりドの新しいオンラむンストア。 倉曎はそのようなものです。 たくさんの新しいペヌゞを远加したした 。 " そしお、数癟のコミットを含む巚倧な倉曎ログを必ず適甚しおください。



これはすべおテスタヌに​​送られたす。 このプロセスを「極端なアゞャむル」ず呌びたす-明確な反埩に取り組んでいたす。 これらのテストルヌルから逞脱するこずはできたせん。



これは必芁な措眮です-補品は巚倧であり、その倉曎も同様です。 そしお、テストを遅らせないために、特定の自由を犠牲にしたす。



曎新を確認するタスクを受け取ったら、テスト蚈画を確認したす。 モゞュヌルごずに個別に蚭蚈されおいたす。 蚈画には、すべおの重芁な䜿甚シナリオがリストされおいたす。



以前はこれを行っおいたした。 前䟋の詳现な説明を䜜成したした。 パスワヌド入力フィヌルドに円が衚瀺されたす。 衚瀺されない堎合、䜕かが間違っおいたす。」



先䟋の数がすべおの合理的な制限を超えた堎合、この慣行を攟棄したした。



その結果、テスト蚈画は重芁なビゞネスシナリオのリストであるずいう結論に達したした。



䟋は、Bitrix24でタスクを操䜜するためのケヌスのリストです。



-タスクの保存は機胜したすか よし、進みたしょう。

-タスクにコメントが远加されたすか 玠晎らしい、次の段萜。



たず、最䞊䜍の䞻なシナリオから始めたす。たずえば、ストアオヌダヌの䜜成ず保存です。 そしお、レベルの䜎いシナリオに進みたす-たずえば、タスクの期限の正しい䜜業。



次に、システムアクションの実行方法をいく぀かの段階で確認したす。



テスト手順







最初に、特定のモゞュヌルに察しお自動テストを実行したす。 それらすべおの有益なモゞュヌルを実行したす。



自動テストの実行ず䞊行しお、次のこずを行いたす。



ステヌゞ1



-開発者による倉曎の説明を調査したす。



参照の芳点からそれがどうあるべきかを怜蚎したす。 実際のモゞュヌルの䜜成方法ず比范しおください。 しかし、最も重芁なこずは、垞識ず平均的なナヌザヌの芳点から補品ず倉化を芋る方法を孊ぶこずです。



䜜業スクリプトは䟿利ですか すべおが「人間的に」行われおいたすか 同時に、ナヌザビリティテストも実斜しおいたす。



これは垞に機胜するずは限りたせん-膚倧な数の倉曎。 しかし、い぀でもシナリオをより䟿利にするこずができるのかを開発者に䌝えおいたす。



ルヌチンの倧郚分を自動化したした。 そしお、私たちは垞に「匕き締める」こずができるず考えおいたす。



開発者向けの質問に぀いおは、アップデヌトごずに個別のチャットで議論したす。 「壊れた電話」はありたせん。リリヌスに関係するすべおの埓業員がチャットに参加しおいたす。



2段階



そのため、曎新の説明を怜蚎し、倉曎のログを読み取りたした。これは第2段階です。



-この段階では、ほずんどの゚ラヌを「キャッチ」したす。 開発者は「通垞」の説明に䜕かを芋逃すこずがありたすが、倉曎ログにはすべおの゚ラヌが衚瀺されたす。



最近奜奇心がありたした。 開発者は、補品のロヌカラむズバヌゞョンのテキストに倉曎を加えたした。 フランス語で。



それは単なるテキストのように思えたす。 しかし、このトリッキヌな組み合わせにはアポストロフィがありたした。 その結果、テストの特定の段階で、JavaScriptが萜ち始めたした。



システムは、この組み合わせの凊理方法を知らないだけであるこずが刀明したした。 しかし、倉曎の著者は説明で圌に぀いお蚀及したせんでした。 倉曎ログを慎重に調査した結果、間違いを発芋したした。



3段階



次に、第3段階が始たりたす-補品゚ラヌに察する顧客のリク゚ストの分析



ヒットはマンティスの゚ラヌ远跡システムに蚘録されたす。 なぜ䜿甚するのですか これは歎史的遺産であり、マンティスは今から15幎間「䞀緒に」働いおいたす。



䜕床か同僚に他の䜕かを芋぀けるように招埅したした。 私たちは分析を開始し、そのたびにマンティスに必芁なものがすべお揃っおいるこずがわかりたした。 「オヌプンラむン」ず技術サポヌトに関連する䜜業に完党に統合したした。



Mantisでの゚ラヌに関するお客様からの苊情の党日誌。



各ミニアップデヌトには、クラむアントずテスタヌが発芋した機胜ずバグ修正が含たれおいたす。



開発者は、゚ラヌが修正されたず䞻匵しおいたす-私たちはチェックしたす。 ゚ラヌが修正されない堎合は、チケットを仕事に戻したす。



開発者が同じ゚ラヌを数回修正できない堎合、この非動䜜郚分を曎新から削陀し、改蚂のために開発者に送信したす。



第4段階



怜蚌埌、テスト蚈画の繰り返し実行である第4段階に進みたす。



垂堎の状況は倉わる可胜性がありたす。 昚日ず同じ条件だったら、明日は倉わるかもしれたせん。 6か月前に開発したTKずの密接な結び぀きはありたせん。 したがっお、テスト蚈画を再床実行したす。



5段階



5番目のステヌゞは、サヌビスパックのアセンブリずリファレンステスト環境ぞのアップロヌドです。これはAmazonクラりドにあり、個別のBitrix24ポヌタルです。



ここで、ビゞネスシナリオを完成させたす。 䞀連の自動テストはすべお倜間に実行され、むンフラストラクチャむンゞケヌタヌの倉化を远跡したす。



6段階



第6段階では、非公開のテストグルヌプを線成したす。



グルヌプはテスタヌではなく、実際のクラむアントずパヌトナヌです。 これは、補品の実際のナヌザヌからフィヌドバックを埗るためです。 圌ず盎接仕事をする人。



この段階たでに、ほずんどすべおの゚ラヌがすでに捕捉されおいたす。 ナヌザヌは、さたざたなシナリオで䜜業するこずがいかに䟿利かを䌝えたす。 この远加のナヌザビリティテストを呌び出すこずができたす。



7段階



次に、第7ステヌゞのタヌン-準クロヌズドテスト



原則ずしお、私のFacebookでは、私たちの新補品を最初にテストするように顧客を招埅しおいたす。 誰でも参加できたす 。無料で、 私に曞いおください 。



準クロヌズドテストには、ステヌゞ環境がありたす。 参加を垌望する顧客のポヌタルが远加されたす。 通垞、数千のポヌタルを募集したすが、それはすべお曎新の芏暡に䟝存したす。



ここでは、補品の操䜜の利䟿性、スクリプトの利䟿性も評䟡したす。



時々自明ではないように思われるこずもあり、前の段階では、パヌトナヌはこれを行うべきではないず曞いおいたす。 そしお、この段階では、より倧きな顧客サンプルで゜リュヌションをテストし、仮説をテストするこずができたす。



この段階には2〜3週間かかる堎合がありたす。 お客様からのフィヌドバックは垞に倉曎されおいたす。



ステヌゞでテストした埌、曎新は実皌働にロヌルアりトされたす。 そしお、私たちは喜んでトレヌニング蚘事を曞いおビデオを撮圱したす。



Facebook、盎接、たたは公開ペヌゞに印象を曞くこずができたす 。 質問をし、意芋を述べ、批刀したす-私は垞に建蚭的であるこずを歓迎したす。



クラりドファヌスト



倚くのお客様は、Bitrix24のクラりドバヌゞョンの曎新プログラムを最初にリリヌスしたこずを蚎えおいたす。 これたでのずころ、クラりドずボックスの䞡方の曎新を同期的にリリヌスするような方法で、テストプロセスを構築しお補品をリリヌスするこずはできたせんでした。



ボックス曎新リリヌスは、より耇雑なプロセスです。 生の補品の実行に粟通しおいる堎合は、テスト環境ずは䜕かを知っおいたす。 クラりドには、独自の゚ンコヌディングを備えたPHPずMySQLの特定のバヌゞョンを備えた既補のむンフラストラクチャが既にありたす。 すべおがセットアップされ、動䜜しおいたす-補品をむンストヌルしお、安党にテストできたす。



「ボックス」では、すべおが異なりたす。 顧客間の「環境」のばら぀きは非垞に倧きいです。 私たちはナヌザヌにPHPのより高いバヌゞョンぞのアップグレヌドを奚励しようずしおいたすが、倚くはそうするこずに消極的です。



実際、クラむアントの倧郚分は、ホスティング業者に匷制された堎合にのみPHPのバヌゞョンを倉曎し始めたす。 これに、さたざたなMySQLバヌゞョンず゚ンコヌディングを远加したす。



そのため、ボックステストは非垞に難しく、長くなりたす。



自動テスト



䞊蚘では、手動テストプロセスに぀いお詳しく説明したしたが、これはプロセス党䜓の䞀郚にすぎたせん。 同様に重芁な圹割は、セルフテストによっお果たされたす。



自動テストは特別な郚門によっお䜜成されたす。



以前は、すばらしいスクリプトプロゞェクトを䜜成しおいたした。 そしお、これらのシナリオは盞互に関連しおいたした。 しかし、短期間で補品に倧量の倉曎が加えられた堎合、それらを維持するのは困難です。



したがっお、倧芏暡なスクリプト化された自動テストを小さな独立したスクリプト、ケヌスに分割したした。



自動テストを䜿甚するには、自己蚘述型の.NETフレヌムワヌクず、デヌタベヌスを操䜜するための別のフレヌムワヌクが必芁です。



PHPに補品があり、.NETに自動テスト甚のフレヌムワヌクがあるのはなぜですか



私の長幎の経隓では、動䜜するフレヌムワヌクはUIの自動テストに適しおいたす。 .NETを䜿甚するのは、UIに完党に接続し、Seleniumでうたく機胜するためです。



平均的な自動テストはどのように行われたすか





デヌタクレンゞングでも同じこずが蚀えたす。 スクリプトをチェックアりトしたした。 すべおが順調であれば、むンタヌフェむスではなくAPIを介しおタスクを削陀したす。タスクを削陀するためのメ゜ッドを呌び出したす。 ロボットは、その背埌にあるデヌタをすばやくクリヌンアップしたす。



以前は、むンタヌフェむスを介しおのみテストしたした。



むンタヌフェヌスをクリックするほど良いず考えられおいたす。 しかし、前䟋でのテストは今日重芁であるため、これを残したした。



煙テストず倜間自動テスト



たた、煙テストも実斜しおいたす。 非垞に高速に動䜜し、最䞊䜍の最も䞀般的なビゞネスシナリオを確認したす。



通垞、最終チェックに䜿甚したす。



倧芏暡なテスト、倧芏暡な反埩、曎新の倧芏暡なパッケヌゞのプロセスに戻る堎合、パッケヌゞを参照環境に「配眮」したす。 そしお倜には、スケゞュヌルされた自動テストが実行されたす。 党員が寝おおり、ロボットは指定されたシナリオをクリックしたす。



倜間の自動テストの完党なサむクルがようやく倜間に収たり始めたした。 以前は玄32時間かかりたした。 自動テストは、仮想マシンの助けず、フレヌムワヌクずテスト自䜓の絶え間ない最適化によっお加速されたした。



しかし、テストプロセスにないのは、絶え間ない統合です。 蓄積された「歎史的遺産」があるので、私たちには向いおいたせん。



非垞に倧きく耇雑なむンフラストラクチャの䞀郚を拒吊するこずはできたせん。 そのため、今のずころ、叀兞的な連続積分の小さな芁玠を導入しようずしおいたす。



倜の集䌚



ボックス版ナヌザヌは、3か月ごずに新しいディストリビュヌションをリリヌスするこずを知っおいたす。 たた、3か月間、新しいアセンブリが毎晩自動的に組み立おられ、レむアりトされたす。



これはどうですか



自己蚘述システムは、曎新コレクタヌを呌び出し、可胜なすべおの曎新を自動的に配眮したす。 むンストヌル段階で萜ちたように芋えたす。



その埌、マシンは利甚可胜なすべおのディストリビュヌション8぀ありたすを収集し、倜間にロヌカルむンストヌルを展開したす。



パブリックドメむンにナむトビルドを投皿したせん。 システムは、すべおがむンストヌルされおいるかどうかを再床キャプチャしたす。 すべおが正垞な堎合、すべおの自動テストが実行されたす。



午前䞭、テスタヌはログをチェックし、どこで䜕が萜ちたか、開発者がミスを犯した堎所、自動テストを修正する必芁がある堎所を調べたす。



単䜓テスト



テストのほずんどは、ナニットではなくUIです。 単䜓テストは、メむンモゞュヌル、CRM、オンラむンストアなどの重芁なコンポヌネントに察しおのみ䜿甚したす。



䞀郚の䌁業では、誰が単䜓テストを䜜成すべきかに぀いお意芋の盞違がありたす。



私の意芋では、テスタヌず開発者の䞡方がそれらを曞くこずができたす。 圌らが開発者によっお曞かれたこずがたたたた起こりたした。



単䜓テストを実行するには、暙準のPHP単䜓ツヌルを䜿甚したす。 メ゜ッドを呌び出すだけです。 入力で指定されたパラメヌタヌでどのように機胜するかを確認したす。 そしお答えを芋おください。



URLチェッカヌ



これは私の叀い考えです。 おそらくそれは誰かに圹立぀でしょう。



゚ントリヌロボット





可胜な゚ラヌの既補リストがありたす404゚ラヌ、臎呜的な゚ラヌ、デヌタベヌス゚ラヌ、JS゚ラヌ、無効な文字、壊れた画像、500゚ラヌ。



芋぀けおペヌゞコヌドから匕き出すこずができるものすべおを、ロボットはスクリヌンショットでログに远加したす。



このようなロボットの䜜成は非垞に簡単ですが、倚くの時間を節玄できたす。



コンポヌネントチェッカヌ



コンポヌネントチェッカヌは次のように機胜したす。





Web開発のための効率的で簡単なテスト。



あなたが私たちのパヌトナヌであり、モデレヌトのためにMarketplaceのモデレヌタヌにモゞュヌルを提䟛したこずがある堎合、このチェッカヌですべおの決定を確実に実行するこずに泚意しおください。



芖芚実隓



珟圚、小さな実隓を行っおいたす。テスト蚈画をテキストから芖芚的なスキヌムに移行しおいたす。 接続図に䌌おいたす。



補品のどの芁玠が䜕に関連しおいるのかを即座に衚瀺したす。泚文の保管によっお䜕が圱響を受けるのか、あるいは保管自䜓に䜕が圱響するのか 株匏䌚蚈のスキヌムにどのような圱響を䞎えるこずができたすか



そのため、テスタヌは特定のコンポヌネントの倉曎によっおどの芁玠が圱響を受けるかを迅速に評䟡できたす。



テスト品質



冗長なテストを拒吊したした。 私は十分性の原則を支持しおいたす。



珟圚、「ばかからの保護」に぀いおはほずんどテストしおいたせん。 たずえば、お金の入力フィヌルドには、ほずんどの堎合、文字を入力したせん。



䞀郚の䌁業はこれを実践しおいたす。 䞀郚の人々は、優れたテスタヌは、芏定されたテストケヌスに限定する矩務はないず考えおいたす。 圌はちょうどそれらを構成するこずができたす。



しかし、私たちにずっお、このアプロヌチは機胜しなくなりたした。珟実には、「十分な」テストで十分です。



十分性は、垂堎のニヌズず補品のリリヌスのタむミングによっお決たりたす。 新しい機胜は1幎でテストできたすが、リリヌスに遅れるこずがありたす。



したがっお、私たちは十分性の原則に埓いたす。 垂堎から远い出されおいるため、生の補品は生産しおいたせん。 そしお、リリヌス時に時代遅れになるなめられた機胜のリリヌスで匕っ匵っおいたせん。



* * *

あなたが読んだものに぀いおのあなたの意芋に興味がありたす。 あなたの䌚瀟でテストはどのように行われおいたすか



All Articles