ウオーターフォール開発のV字モデルテスト
単体テスト UnitTest(UT or PT)
Rspecだと主に/model
メソッドや関数が要件通りに動作するか確認する。
結合テスト IntegrationTest(IT)
Rspecだと/request
複数の処理を組み合わせて、エンドポイントが要件通りに動作するかテストする。
リクエストの振る舞いをテストするので、
システム内で外部連携がある場合はスタブでも良い。(呼び出しができていれば良い)
総合テスト SystemTest(ST)
Rspecだと/system
複数のエンドポイントを利用してユースケースのシナリオがうまくいくかテストする。
外部連携もスタブでは無くて実際のシステムを結合してテストする。
リアルなデータでテストできると良い。
実際のユーザーの操作するユースケースを網羅する。
シナリオテスト、E2Eともいう。
負荷テスト StressTest(ST)
システムに高負荷をかけてパフォーマンスが要件を満たすかテストする。
- システム負荷のピーク時に十分なパフォーマンスが得られるかテストする。
- スパイクに耐えられるかテストする。
セキュリティテスト SecurityTest(これもSTじゃん)
セキュリティバグが存在しないかテストする。
ユーザー受け入れテスト (UAT)
システム開発を外注している時に行う。
システムだけでは無く、ドキュメント、契約など含めてテストする。
契約時の成果物の確認
ユーザーテスト
実際のユーザに新バージョンのサービスを使用してもらうことで、開発やテスト時に気づかなかった問題やユーザビリティーを発見する。
DevOps系のテスト?(品質担保手法)
カオスエンジニアリング
意図的にシステム障害を起こす事で本番稼動中のシステム障害をシミュレートする考え方です。
- 出る影響がを確認する。
- システムの自動復旧を確認する。
- ダウンタイムを確認する。
SRE/CREのPRR(Production Readiness Review)
生産準備レビュー
googleのSRE/CREはやっているみたいです。
運用設計(監視、お問合せ体制など)がきちんとできているかをレビューします。
探索的テスト
あらかじめ作成されたテストケースをテストするのではなく、ソフトウェアの振る舞いやテスト結果を見ながらテストエンジニアが設計、実施、記録、検証を同時にテストする手法です。
アドホックテスト、モンキーテストとの違いは、
- 方針や目的を明確に定める
- テストエンジニアのスキルに基づき、潜在的な不具合を検知する可能性の高いテストを集中的に行う
- 設計、実施、記録、検証を同時にテストする
ソースコード解析からのバグ予想
バグ修正のためのコミットで最近何度も修正されたファイルにはバグがある可能性は高いなどのスコアを出してくれます。
Google ではコードの品質保持の一つの方法としてこういった指標も利用しいているとのこと。
ググるとツールが結構出てきます。
といった感じです。