エンジニアが開発を進める工程を理解することは、エンジニアの本業はもちろんのこと人生で何かを創造するときにも活用できます。
今回はエンジニア開発工程のステップに位置づけられる設計について紹介します。
テストの段階って何をするの?
前回の記事にて、開発工程の実装を説明しました。
[kanren postid=”3779″]
テストに関しては、前ステップである実装によって構築したものがあることが前提の上で成り立つものです。
今日紹介するテストは何かというと、実装したシステムが設計書や仕様書の通りに正しく動作するかを確認するステップになります。
テストの目的としては実装したシステムの品質を評価すること、品質を向上させることです。不具合を発見し品質を検証します。
また、品質検証時に、仕様通り設計されていても実務として使えるレベルにあるかどうかという
妥当性確認と、そもそも仕様通り設計されているかどうかという合致性検証が用いられます。
例として、前回の記事でも利用したある野球チームでグッズのレコメンドをする機能を実装後のことを考えてみると、あとは実際にそのレコメンド機能が設計書や仕様書の通りに正しく動作するかをテストによって確認する必要があります。
そして、その確認の際のテストには4つの種類があります。したがって、実装した野球チームグッズのレコメンドシステムが正しく動作するというのは、4つのテストで検証できたうえで初めて確認できたということになるのです。
4つのテストで確認する
テストは4つのテストを実施します。
まず、1つ目は単体テストです。
こちらは、実装後最初に行うテストで、実装した画面や機能などの小さな単位で正しく動作しているかを確認します。要は、各機能ごとを単体でみたときに、基本動作が実行できるかを確認するテストということです。
組織やプロジェクトによっては、コンポーネントテスト、ユニットテストと呼ばれることもあります。
次に、2つ目が統合テストです。
こちらは単体テストで機能が確認できた後に行われるテストで、実装した機能を含む一連の機能群でシステムとしてちゃんと動作するかを確認します。要は1つのシステムとして連動するかを確認するテストということです。
あらあじめ、この統合テストで確認したい一般的な操作をパターンとして定義しておき、チェックするポイントを決めておいたうえでテストをすることが一般的になります。
組織やプロジェクトによっては結合テストと呼ばれることもあります。
3つ目がシステムテストです。
こちらは、統合テストでシステムとしての動作が確認できたあとに行われるテストで、外部システムとの連携も含めたより本番に近い環境で動作するかを確認します。
顧客から依頼された開発案件の場合、開発企業側で行う最終チェックに位置付けられるテストになります。
組織やプロジェクトによっては総合テストと呼ばれることもあります。
最後、4つ目が受入テストです。
こちらは、システムテストで開発側が本番に近い環境でも動作することを確認した後に顧客が行うテストで、顧客元でもシステムが実行できるかを確認します。
受託会社の手から離れて開発を依頼した企業側のエンジニアがテストを実施することが一般的です。
組織やプロジェクトによっては検収テストや運用テストと呼ばれることがあります。
以上4つのテストの検証が確認できることで設計書に基づき実装したシステムの動作が確認できたということになります。
アーティストのライブでテストをイメージする
前回同様、テストも、アーティストのライブ開催でイメージしてみましょう。
テストはアーティストライブ開催でいう、リハーサルにあたる部分だと考えています。
まず段階ごとに、一つ一つの演出での動きを確認する単体テストが行われ、その動きの確認ができれば、例えば前半、後半という形でパートごとにライブ一連の流れの動きを確認する統合テストを行います。
最後に、本番に近い環境で一連の流れを試すシステムテストと顧客が行う受入テストは兼ねる部分もあるかと思いますが、本番前に全ての流れを確認するライブリハーサルを行いますよね。
このように、アーティストのライブ開催までのリハーサルにあたる部分は、まさに今回紹介した開発工程であるテストで考えられるのです。
以上、アーティストライブ開催までの動きのリハーサルで考えてみると、テストの役割をより理解できるのではないでしょうか。
最後に
本日はエンジニア開発工程のステップに位置付けられるテストについてご紹介させていただきました。
次回は、エンジニア開発工程の次のステップに位置付けられるデプロイ・公開について紹介させていただきたいと思います。
[kanren postid=”3816″]
また、今回の内容に関しては以下の本で学ばせてもらったことを参考にアウトプットさせていただいています。
わかりやすくITエンジニアリングの基本がまとめられていて、IT業界に携わる人や興味ある人はもちろん、様々なところで活用できると思うのでぜひご一読をおすすめします。
それでは本日はありがとうございました。
今日も頑張ります。