こんにちは、開発チームでエンジニアをしている和田です。
最近は、フロントエンドのプロジェクトを Vue2 から Vue3 に移行する作業に奮闘している毎日です🔥
そんな移行作業の真っ只中、社内の QA さんとお話しする機会があり「ソフトウェア開発に関するテストとはなにか?」について理解を深める良い機会となったため、今回は
- 「ソフトウェア開発におけるテストってなに?👀」
- 「そもそもテストってなんでやらないといけないの??🤔」
と疑問に感じられる方のために、筆者なりにテストに関する解説をさせていただきます。
ソフトウェア開発における「テスト」とは一体なんなのか?
皆さんは「テスト」という単語を聞くとどんなものをイメージするでしょうか?
20代の筆者は最初にこの言葉を聞いたとき、学校のペーパーテストの試験が脳内に浮かび上がりました 笑
当然、ソフトウェア開発におけるテストとは学校のテストとは全く異なるものです。
テストとはなんなのか ChatGPT に質問してみます。
テストの定義について ChatGPT に聞いてみる
筆者の質問
ソフトウェア開発におけるテストとはなんですか?
ChatGPT の回答
ソフトウェア開発におけるテストとは、開発されたソフトウェアが正しく動作するか、要求された仕様や条件を満たしているかを検証するプロセスです。
このように回答となりました。
つまり、ソフトウェア開発におけるテストとは、開発したソフトウェアが期待する動作をしているか検証することですね。
品質保証という考えにおいてテストが重要なのは考えるまでもないでしょう。
品質保証以外にもテストの役割はあるのでしょうか?
テストがなぜ必要なのか? テストの役割について考える
一般的にテストの役割としては下記のようなものが挙げられます。
- 品質の確保
- コストの削減
- ドキュメンテーションとしての役割
- 実施後の証拠品としての役割
それぞれ見ていきます。
1. 品質の確保
テストを通じてエラーやバグを早期に発見することで、ソフトウェアの安定性や信頼性を向上させる役割があります。 テストの専門家である QA (Quality Assurance) が「品質保証」を意味するようにテストの代表的な役割です。
2. コストの削減
ソフトウェアのバグというものは、後から発見されるよりも開発初期の段階で発見されたほうが修正コストが低くなります。 早期にテストを行うことによって、開発の過程で問題が修正されて長期的なコスト削減に繋がります。
3. ドキュメンテーションとしての役割
テストケースやテスト結果は、ソフトウェアの動作や仕様を示します。
すなわちテスト結果をきちんと記録しておけば、仕様書の役割も果たしてくれるのです。
今後、改修や新機能を実装する際に改めてテストを行うとき、過去に行ったテスト結果が大いに役立ちます。
4. 実施後の証拠品としての役割
また開発段階以外でもテストは役に立ちます。
それは証拠品として機能するという側面です。
正確に記録されたテストは、クライアントやステークホルダーに対してソフトウェアの品質を確認・保証するための物的な証拠となり、機能をリリースするか判断する際の重要な資料となります。
【まとめ】テストってめっちゃ大事
いかがでしたでしょうか?
今回はソフトウェア開発におけるテストについて筆者なりに学んだことをまとめさせていただきました。
社内の QA さんとテストに関して会話する中で特に学びとして感じられたことは「テストが証拠品として機能すること」です。開発以外の現場でも活躍する資料になるのは驚きですね。
筆者自身エンジニアとして開発に携わる中で「テスト書いてて良かった〜😌」と思わされるようなバグやエラーを発見した経験が度々あります。ただプログラムが書けるだけじゃなく、テストに関する正しい知識を持ち合わせたエンジニアを目指して参ります。