現在の製品で増加している統合テストの規模を拡大するための技術と戦略を調査しており、開発およびCIプロセスの一部として(人間的に)残ることができます。
約200以上の統合テストで、(デスクトップ開発マシン上で)完全なテスト実行を完了するために1時間のマークをすでに打っています。これは、定期的なプッシュプロセスの一部としてスイート全体を実行することを許容する開発者の能力に悪影響を及ぼしています。それは、それらをうまく作成することについて規律付けられる動機に影響しています。主要なシナリオのみを前面から背面まで統合テストし、テストを実行するたびにゼロから構築される本番環境をミラーリングする環境を使用します。
実行に時間がかかるため、テスト実行の集中度に関係なく、ひどいフィードバックループが発生し、テスト実行の終了をマシンで待機する多くの無駄なサイクルが発生します。フローと進捗、健全性、持続可能性に対するより高価な悪影響を決して気にしないでください。
この製品の速度が低下し始める前に、10倍以上の統合テストが行われると予想されます(実際にはわかりませんが、機能に関してはまだ始まったばかりではありません)。私たちは、数百または数千の統合テストに合理的に期待する必要があります。
明確に言うと、これがユニットテストと統合テストの議論にならないようにしようとすることです。この製品では、TDDを使用した単体テストと統合テストの両方を行っています。実際、アーキテクチャのパターンを他の領域に変更する際に重大な変更を導入する場所を検証する必要があるため、私たちが理にかなっているサービスアーキテクチャのさまざまな層で統合テストを行いますシステム。
技術スタックについて少し。現在、テストをエンドツーエンドで実行するために、(CPUとメモリを集中的に使用する)エミュレーション環境でテストしています。これは、noSqlバックエンド(ATS)の前にあるAzure REST Webサービスで構成されています。Azureデスクトップエミュレーター+ IISExpressで実行することにより、運用環境をシミュレートしています。開発マシンごとに1つのエミュレータと1つのローカルバックエンドリポジトリに制限されています。
また、同じエミュレート環境で同じテストを実行するクラウドベースのCIもあり、現在のCIプロバイダーではクラウドでのテスト実行に2倍の時間がかかります(2時間以上)。ハードウェアパフォーマンスの観点からクラウドCIプロバイダーSLAの制限に達し、テスト実行時の許容値を超えました。公平を期すために、仕様は悪くはありませんが、社内の汚いデスクトップマシンの半分の品質であることは明らかです。
テストの論理グループごとにデータストアを再構築し、テストデータをプリロードするテスト戦略を使用しています。データの整合性を包括的に保証しながら、これにより各テストに5〜15%の影響が追加されます。したがって、製品開発のこの時点では、そのテスト戦略を最適化することはほとんど得られないと考えています。
長いことと短いことです。各テストのスループットを最適化できましたが(それぞれ30%〜50%であっても)、数百のテストで近い将来に効果的にスケーリングすることはありません。1時間は今でも人間の許容範囲をはるかに超えています。それを維持するには、全体のプロセスを1桁改善する必要があります。
そのため、テスト時間を大幅に短縮するために使用できる手法と戦略を調査しています。
- より少ないテストを書くことはオプションではありません。このスレッドで議論しないでください。
- 非常に高価ですが、より高速なハードウェアを使用することは間違いなくオプションです。
- 並列の別個のハードウェアでテスト/シナリオのグループを実行することも、間違いなく推奨されるオプションです。
- 開発中の機能とシナリオに関するテストのグループ化を作成することはもっともらしいですが、最終的には、システムが変更の影響を受けないという完全なカバレッジまたは信頼性を証明することはできません。
- デスクトップエミュレーターで実行する代わりに、クラウドスケールのステージング環境で実行することは技術的に可能ですが、テスト実行に展開時間を追加し始めます(テスト実行の開始時に、〜20分ごとに展開します)。
- システムのコンポーネントを独立した対数部分に分割することはある程度妥当ですが、コンポーネント間の相互作用は時間とともに増加することが予想されるため、その上で限られた燃費が期待されます。(つまり、変更は他の人に予期しない形で影響を与える可能性が高い-システムがインクリメンタルに開発されるときによく起こるように)
この分野で他の人がどの戦略(およびツール)を使用しているかを知りたかった。
(他の人が特定の技術セットを使用してこの種の困難に直面している可能性があると信じる必要があります。)
[更新:2016年12月16日:結果の議論のため、CI並列テストにより多くの投資をすることになりました:http : //www.mindkin.co.nz/blog/2015/12/16/16-jobs]