Interpreting QA Assessment Results: Reading Test Data Like an Engineer
メトリクストラップ
QA評価を実行すると、データが得られます。書かれたコード行。時間あたりのテストケース。アサーション数。カバレッジパーセンテージ。偽陽性率。あなたの本能はこれらのメトリクスのために最適化することです。
それはトラップです。
メトリクスは出力であり、シグナルではありません。90分で高カバレッジテストを書く候補者は、速度テストに優れているかもしれません。2.5時間で3つの堅実なテストを書く候補者は、保守可能なコードの構築に優れているかもしれません。未処理のメトリクスはどちらを伝えません。
メトリクスの背後にあるパターンを読む必要があります。
テストケース設計で何を測定するか
書き込みテストケースの提出を評価している場合、ケースを数えないでください。これらをスコアしてください:
1.カバレッジ深度(幅ではなく)
3~4の良い推論されたステップと明確なアサーションを持つ5つのテストケースを書く候補者は、20の曖昧なケースを書く人よりも強いです。
を探してください:
- 彼らはハッピーパス、エラーケース、境界ケース、および状態遷移をテストしていますか?
- 彼らは実装の詳細の行動に焦点を当てていますか?
- 彼らは制約を認識していますか?(「DBに100kユーザーがあると仮定して、50kでテストします」)。
赤旗:「ボタンが存在することをテストしてください。」それはテストケースではありません。テストのステップです。
良いシグナル:「バルク輸入がファイル形式を処理する前に検証することをテストしてください。無効なヘッダーを含むCSVを提供し、エラーメッセージがユーザーが修正するのを導くことを確認してください。」
2.優先順位付けの判断
彼らはテストを重大、高、低とラベル付けしていますか?「壊れることができるもの」と「確認したいもの」を区別していますか?
12のケースを書く候補者、3~4を重大なものとしてマークし、理由を説明することは判断を示しています。12の同じ優先度のケースを持つ候補者は、重要性を過大評価しているか、それについて考えていないかのいずれかです。
探すもの:「このテストは高優先度です。支払い処理に接しているため。」または「これは低優先度です。化粧品の検証だからです。」
3.環境意識
彼らはセットアップについて言及していますか?彼らはデータについて尋ねていますか?彼らは前提条件を検討していますか?
弱い:「エクスポート機能をテストしてください。」
強い:「ユーザーが500レコードをエクスポートするとします。CSVにはすべての行と正しいフィールドマッピングが含まれていることを確認してください。注:これには、本番環格子またはシードスクリプトが必要です。」
オートメーションコードで何を測定するか
コードを受け取ったとき、合格/不合格を見ないでください。実行して読んで、スコアしてください:
1.セレクター堅牢性
UI が変更されたときにセレクターがどのように保持されますか?
脆いセレクター:
driver.findElement(By.cssSelector("body > div > div > div > button")).click();
これはレイアウト変更で壊れます。彼らはオートメーション初心者か、コーナーを切っています。
堅牢なセレクター:
driver.findElement(By.cssSelector("[aria-label='Import CSV']")).click();
これはアクセシビリティをテストしますとリファクタリングを通じて安定を保ちます。
スコア:彼らのセレクターは軽微なUI変更を生き残ることができますか?そうでない場合は、10ポイントスケールで-2。
2.待機戦略
彼らは明示的な待機、暗黙の待機、または(最悪)なしを使用していますか?
待機なし:
driver.findElement(By.id("submit")).click();
driver.findElement(By.id("success-message")).getText(); // レース条件
暗黙の待機(OK、そこまで良くない):
driver.manage().setTimeouts({implicit: 10000});
明示的な待機(最高):
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.id, "success-message")));
彼らが明示的な待機を使用する場合、彼らは非同期を理解します。彼らがしない場合、本番環境でフレーキーなテストがあります。
スコア:待機なし = -3。暗黙の場合のみ = -1。明示的 = 0。
3.アサーション品質
彼らは動作またはDOMを主張していますか?
弱いアサーション:
assert(screen.getByText("Success"));
これは、操作が成功したのではなく、メッセージが表示されたことをテストしています。
強いアサーション:
expect(await screen.findByText("5 rows imported successfully")).toBeInTheDocument();
expect(await screen.findByDisplayValue("import_status = completed")).toBeInTheDocument();
これはメッセージと基本的な状態をテストします。
スコア:実際の動作をテストするアサーション = +2。UIのみをテストするアサーション = 0。欠落しているアサーション = -2。
4.コード構造と保守性
コードはDRYですか?彼らはページオブジェクト、フィクスチャ、またはヘルパー関数を使用していますか?
構造なし:
test("import csv", async () => {
await page.goto(...);
await page.fill('#email', '[email protected]');
await page.fill('#password', 'password');
await page.click('#login');
// ... 単一のテストのための40行以上
});
構造化:
const page = new ImportPage();
test("import csv with invalid headers", async () => {
await page.login();
await page.uploadCsv('invalid.csv');
await page.expectError('Invalid CSV format');
});
2番目はより保守可能です。ログインが変更される場合、3つの場所ではなく1つの場所を修正します。
スコア:重大な重複またはマジックナンバー = -2。妥当な構造 = 0。強いDRYとヘルパー = +1。
5.カバレッジ対過度の主張
彼らは正しいスコープをテストしたのか、それともすべてをテストしたのか?
15の事柄を主張するテストは脆いです。ものが変わったら失敗し、デバッグを困難にします。2~3の主要な動作を主張するテストは焦点を当てています。
テストあたりのアサーション数を数えます。平均が>4の場合、彼らはオーバーアサートしています。<1の場合、テスト不足です。
ライブインタビューで何を測定するか
これは定量化が難しいですが、これらを聞いてください:
1.思考の明確性
「回帰スイートは3時間で、1時間にカットしてください」と聞くと、彼らは最初に質問するか、ソリューションにジャンプしますか?
貧弱:「より少ないテストを実行します。」
良い:「どの程度の頻度でデプロイしていますか?最も遅いテストは何ですか?最も重要な機能は何ですか?」彼らは修正を提案する前に問題を狭めています。
スコア:彼らはソリューションを提案する前に2~3の明確化する質問をしていますか?はい、+2の判断。
2.トレードオフ表現
彼らは何が犠牲にされるかを説明できますか?
貧弱:「より遅いテストをスキップするだけです。」
良い:「重要なユーザージャーニー(ログイン、購入、エクスポート)に焦点を当てれば、時間を3時間から45分にカットします。エッジケースと内部ツールのカバレッジを犠牲にします。リスクは稀なバグを見落とすことです。監視と迅速なホットフィックスプロセスがあれば許容可能です。」
2番目は彼らが各選択の費用を理解していることを示しています。
スコア:彼らのトレードオフから何が*壊れる可能性があるかを表現できますか?+3の判断。
3.経験の証拠
彼らはリアルな状況または理論的知識を参照していますか?
理論的:「理想的な世界では、包括的なテストカバレッジがあります。」
経験から:「前の会社では、50個のUIテストがあり、4時間かかりました。15の重要なテスト(20分)にカットしたインシデントは増加しませんでした。ステージング環境が良かったので。ここにそれを投資することをお勧めします。」
本当の経験は理論よりも価値があります。理論が悪いからではなく、実践で何が機能したかを示しているからです。
スコア:彼らは背景からリアルな状況を参照していますか?+2。
無視するもの
- 書かれたコード行:より多くのコード≠より良いエンジニア。機能する簡潔なコードはより強いです。
- 実行速度:信頼性の高い遅いテストは、フレーキーな高速テストより優れています。
- ファッション的なパターン:必要ないときに洗練された設計パターンを使用する場合、それはスキルではなく、過度な設計です。
- 言語の好み:テストユーティリティにPythonまたはJavaScriptを使用しても関係ありません。重要なのは可読性です。
それを一緒に入れる:スコアリングフレームワーク
単純なルーブリックを作成します:
| カテゴリ | 弱い(1) | 許容可能(2) | 強い(3) |
|---|---|---|---|
| テスト設計 | 曖昧なケース、優先度なし | 明確なケース、いくつかの優先度 | 徹底的なケース、明確な優先度、コンテキスト認識 |
| コード品質 | 脆い、待機なし、マジック | 許容できる構造、待機、明確 | DRY、堅牢、保守可能、十分にアサート |
| 判断 | 推論なし、1つのアイデア | トレードオフを考慮 | 質問をする、リスクを表現、証拠ベース |
| フレームワーク知識 | 構文エラー、間違ったパターン | 有効なコード、基本的なパターン | 慣用的なコード、エッジケースを処理 |
各カテゴリで各候補者をスコアしてください。全カテゴリで3は強い採用です。2秒と3秒の混合は問題ありません(誰もが弱点を持っています)。どこでも1は赤旗です。
スコアを合計します。番号に固執しないでください。候補者を一貫して比較するために使用します。
探しているパターン
最高のQA評価結果は次のようになります:
- 強いテストケース設計(明確な思考)
- 十分なコード品質(実践的な経験)
- インタビューでの良い判断(意思決定能力)
- 1つの例外的なもの(セレクター、フレームワークの知識、プロセス思考かもしれません)
その人は学習し、成長し、テストスイートを数年間保守します。それが採用です。