「ゼロ欠陥」という用語は、プロセス内のバグや問題の数を減らして最小限に抑え、最初から正しく行うことを目的とした QA/QC の概念です。主な考え方は、ミスが起きてから修正するのではなく、ミスが起きないように予防することです。この概念は、フィリップ クロスビーが 1979 年の著書「Quality is Free」で初めて紹介しました。
欠陥ゼロの主旨は、完璧さを達成することではなく、その基準を一貫して満たすためのメカニズムを実装する基準を設定することです。欠陥ゼロは、定義された手順を持つ特定のプロセスではなく、チーム/会社全体で受け入れる必要がある考え方または開発/技術文化です。これには、継続的な改善プロセス、品質の問題にかかる高コストの認識、アプリと開発プロセスのバグの特定と修正への積極的な取り組みが含まれます。
実際のプロジェクトでは、欠陥ゼロを達成するという概念は、現実というよりは理想のままです。その代わりに、ビジネス/ユーザー/システムに影響を与える欠陥、特にアプリの機能に支障をきたすほど重大な欠陥を最小限に抑えることに重点が移っています。このアプローチは、コストのかかるエラーを将来的に軽減するために、プロジェクトの開始時から品質を優先することの重要性を強調しています。
高品質基準を達成するにはどうすればよいでしょうか?
- QA プロフェッショナルによる回帰テストを実行します。
回帰テストは重要ですか?
- はい。
それは十分か?
- これは良い出発点ですが、ソフトウェアの品質を高め、プロセスをより効率的にするためには、さらに多くのことを行うことができます。
新しいビルド/コミット/ステージング展開ごとに自動的にトリガーされる自動テスト/スクリプトにより、変更/修正がテストされ、検証されます。このような統合により、継続的な改善と迅速な結果の文化が生まれ、チームは SDLC の早い段階で問題/バグを検出して対処できます。これにより、アジャイル方法論プロセスを導入して、より速いペースで高品質のソフトウェアを提供できるようになります。
多様で現実的なテスト データセットの可用性を確保することで、テスト範囲とアプリ機能の検証が向上します。テストにデータ生成ツール (カスタマイズまたは独自作成) または難読化された製品 (実際のユーザーの) データを使用すると、効果的なテスト シナリオの作成が向上します。データのマスキング/難読化を使用すると、テスト中に機密情報が保護され、データ保護およびセキュリティ ポリシーへの準拠が保証されます。
回帰テストを探索的テストと組み合わせたり置き換えたりすると、テスト範囲が広がり、異常な回帰欠陥を発見できる場合があります。QA エンジニアは、ドメイン知識と直感を使用してアプリを探索し、回帰 (自動テスト) テストでは見逃された可能性のある「隠れた」問題やバグを見つけることができます。このアジャイルな組み合わせアプローチにより、チームは、標準的な回帰テストでは簡単に見逃される可能性のある複雑で扱いにくい問題やコーナーケースを見つけることができます。
パフォーマンスとセキュリティのテストを機能回帰テストと組み合わせることは、アプリのパフォーマンスとセキュリティに関する問題を見逃さないために重要です。これらはアプリのパフォーマンスとセキュリティのテストでは標準ですが、大幅な変更が加えられてアプリのパフォーマンスが影響を受けるか、システムに新しい脆弱性が導入される可能性がある場合に回帰テストとして実行されます。
クロスブラウザ(クロスプラットフォーム/デバイス)テストを使用すると、QA エンジニアはさまざまなブラウザ、バージョン、OS、デバイス(ハードウェア)、画面解像度にわたってアプリの機能とレイアウトを検証できます。このタイプのテストは時間がかかる可能性があるため、適切な範囲を理解し、必要なテストのみを実行することが重要ですが、BrowserStack などのプラットフォームや独自のデバイス ファーム + 自動化を使用すると、より高速になる可能性があります。ただし、たとえば API 回帰テストや機能回帰テストよりも多くのリソースが必要になるため、変更内容や実証済みのリスクに応じて注意して範囲を最適化してください。
潜在的な回帰リスクを特定し、機能の実装/コード変更の早い段階で回帰テスト活動を計画します。この早期の関与により、開発チームと QA チーム間のコラボレーションが確立され、やり直し、バグ修正、テストの反復回数、追加の回帰テストが最小限に抑えられ、市場投入までの時間が短縮されます。
他に役立つものはありますか?
- もちろんです! ベスト プラクティスを使用した場合でも、アプローチと製品の品質を向上させるために使用できる他の何かや新しいものが常に存在します。どのアプローチも、特定のプロジェクト、チーム、状況に合わせて適応および調整する必要があります。
これは分散システムの分野からのもので、制御されたカオスを意図的にシステムに導入して、弱点や障害を発見します。従来は回復力テストに使用されますが、カオス エンジニアリングは回帰テストにも適用できます。
回帰テストでは、カオス エンジニアリングによってソフトウェアが本番環境と同様の予測不可能なさまざまな条件/データ セットにさらされます。ネットワーク接続、依存関係、インフラなどの一部のコンポーネントを意図的に中断/変更することで、テスター/開発者はアプリが予期しない入力にどのように反応するかを確認できます。
カオス エンジニアリングを回帰テスト プロセスに統合すると、エンド ユーザーや後の段階でのテスト プロセスに影響を与える前に、潜在的な回帰リスクやバグを特定して修正する追加の方法が得られます。
ミューテーション テストは、ソース コードに小さな変更を加えて潜在的なバグをシミュレートする手法です。チェックリスト/テスト ケースがこれらの変更/バグをどの程度検出するかを評価することで、QA エンジニアは回帰テストの有効性を評価できます。このアプローチは、テスト スイートの有効性に関する情報を提供し、追加の変更が必要なケース/領域を示します。
機械学習アルゴリズムを使用して回帰欠陥の根本的な原因を特定するツールは、回帰テスト戦略に非常に役立つ可能性があります。コードの変更、テスト結果、システム ログを分析することで、これらのツールは回帰の原因を提案できます。このアプローチにより、バグの予防と解決が迅速化され、調査に費やす時間が短縮され、全体的な生産性と市場投入までの時間が向上します。AI ベースのツール/アルゴリズムは、コードの変更とテスト結果 (統計) を分析して、実行に最も関連性の高いテストを特定することもできます。
常に覚えておいていただきたいのは、リスクを理解し、回帰バグに関する統計を把握しておく必要があるということです。製品チームでは、すべてのチーム メンバー (開発者、QA、PM、PdM/PO/FO、DevOps など) が協力することで、潜在的なリスクを効果的に評価し、回帰領域を最小限に抑えることができます。また、より迅速な出荷のために、ある程度のリスクを受け入れることも重要です (めったに使用されない機能や重要でない機能の回帰バグは許容され、後で修正される可能性があります)。
「理想的な品質」や「ゼロ欠陥」のコンセプトのためだけに過剰なテストを行うことは避けてください。