回答:
テスターに作業を渡す前に開発者がチェックしなければならないチェックリストはありますか?
もちろんです。理想的には、このチェックリストは次の2つの項目で構成されています。
実際のチェックリストは、継続的な統合戦略の背後に隠れています。このリストは集中管理され、完全に自動化されているため、QAチームに作業を提出する前に、個々の開発者がコードを壁に投げてQAに「忘れる」ことで重要なことをチェックすることはできません。あなたは、開発者が時間のプレッシャーの下でしばしば「忘れ物」になることを知っていますよね?
継続的インテグレーションシステムは、ビルドを実行し、すべての単体テストと統合テストを実行する必要があります。言うまでもなく、開発者は、新しい機能を開発してバグを修正する際に、継続的インテグレーションシステムで新しいユニットテストを利用できるようにする必要があります。
開発者は、QAに渡す前に継続的インテグレーションシステムから出てくるものに触れないでください。インストールしてすぐに試すことすらできません。ビルドがインストールされなかったとQAが言った場合は、継続的インテグレーションサイクルを修正して、インストールできない、または機能しないアーティファクトを吐き出さないようにする必要があります。
2番目のステップは快適なもの(バグの修正または機能の完了を示す)であるため、開発者がそれを忘れることはほとんどありません。
場合によります。いくつかの哲学があります:
したがって、各パートナーが行うテストのレベルは、プロジェクトと組織によって異なります。事前にこのレベルに同意することが重要です。もちろん、コードは少なくともコンパイルしてエラーをスローせずに実行する必要があります。
それはそれがするように設計されたものをしますか?不正な入力があった場合、適切な例外をスローしますか?使えますか?(これは、APIとUIに適用されます)。
あなたのコードは、あなたの知る限りでは、テスターに渡す前にバグがないようにする必要があります。独自のコードの品質に慣れるために必要なテストはすべて行う必要があります。
QAがあなたに返信しないようにすることができるすべてのことを上司に「この成果物は明らかにテストしなかった」とCCに伝えます。ユニット、インテグレーション、システム、および手動(つまりあなた)のテストを自由に利用できます。これらを実行しないと、QAの時間が無駄になるだけです。
私のために働いた1人のQA担当者が、開発者が成果物をテストしたことの「証明」を求めます。これは、xUnitの結果、スクリプトからの出力、または紙ベースのチェックリストです。これにより、開発者がビルドの出力を転送するだけで停止したと言えます。
テスターの観点から見ると、開発者の最大の間違いは、コンパイルできないコードを提供することです。