事前:テストされていないものをテストしていると見なされるものには、多くの混乱があるようです。確かに、すべての開発者はコードを作成するときにテストする必要があり、動作を検証する必要があります。彼女/テスターは、それが完了して十分だと思う前にテスターに渡すことができません。しかし、開発者はすべてを見ているわけではありません。彼らはバグを認識しないかもしれません。これらのバグは、徹底的なテストが実施される開発サイクルの後半でのみ発見できます。問題は、開発者がそのようなテストを実施すべきかどうかであり、私の控えめな意見では、プロジェクトマネージャーの観点からこれを検討する必要があります。
開発者はテスターになることができますが、テスターであってはなりません。開発者は、意図せず/意識せずに、アプリケーションを破壊する可能性のある方法でアプリケーションを使用することを避ける傾向があります。それは彼らがそれを書いて、それが使われるべき方法で大部分をテストするからです。
一方、優れたテスターは、アプリケーションを拷問しようとします。彼/彼女の主な意図はそれを破ることです。多くの場合、開発者が想像していなかった方法でアプリケーションを使用します。開発者よりもユーザーに近く、多くの場合、ワークフローをテストするための異なるアプローチがあります。
また、開発者をテスターとして使用すると、開発コストが増加し、専用のテスターを持っているほど製品の品質にメリットがありません。安くてテスターがうまくやらせることができるのであれば、開発者に作品のクロステストをさせません。開発者とテスター間のフィードバックループが非常に高価になった場合にのみ、開発者に互いのコードをクロステストさせますが、私の経験ではそれはめったになく、プロセスに大きく依存します。
それは、開発者がだらしなくて、すべてをテスターに任せるべきだという意味ではありません。ソフトウェアはテスターに渡す前に、単体テストでバックアップし、技術的なエラーを最小限に抑える必要があります。それでも、ここで修正したり、開発者が予見できない問題やその他のバグを壊したりすることもあります。また、統合テストは主に開発者が行う必要があります。テスターの主な目的は、要件が満たされていることを確認することです。
このような小さなチーム(およびアプリケーションのサイズにも依存します)では、ユニットテストとUIテストを作成するハイブリッドロールのテスターを見ることができます。必ず雇うべきです。
ただし、テスターよりも重要なのは、定期的なフリーズ/ブランチです。適切にテストされていないものは提示しないでください。機能を追加したり、何かを変更した場合、その機能を取り巻くすべてのものを再度確認する必要があります。あなたの会社がそうでない場合にのみ悪い評判を得るでしょう。不安定なものをリリースしないでください。顧客が特定の日付までにソフトウェアを入手したい場合は、十分に早く開発を停止し、適切にテストするので、バグ修正のための十分な時間があります。多くの場合、土壇場での機能要求は、適切にテストせずに不十分に実装したりリリースしたりするよりも、拒否する方が適切です。