※こちらの記事は今年(2023年)9月に投稿した記事をブラッシュアップしたものとなります。
はじめに
筆者は現在(2023年9月)、新卒で現場に配属されてから4か月ほどシステム開発業務をしており、特にテスト業務をメインで行っています。
そこで今回はテスト業務とはどのようなものか、改めてまとめてみました。
まずはテストとはそもそも何なのか、基本的な部分を説明します。
システム開発におけるテストの立ち位置
(情報)システムとは、ハードウェアやソフトウェアを複数組み合わせて、全体で何らかの機能を持っているもののことを言います。人事給与システム、配送管理システム、SNS、オンラインゲームなどをはじめとする様々なシステムが存在し、現在の日常のあらゆるところで利用がされています。
システム開発は特にその中でも、WEBサービスやスマホアプリなどのソフトウェアを作る仕事です。
システム開発は時系列順に大きく分けて次の3つの工程に分けられます:
- 基本設計(外部設計)・詳細設計(内部設計)
- 実装(コーディング/プログラミング)
- テスト
テストはシステム開発の中で最後に行われる工程となります。
記事・本によってはシステム開発に要件定義や運用・保守を含めている場合もありますが、今回は上記の通りとします。
何故テストが必要か?
まず基本設計・詳細設計において、システムで実装する機能の決定・その機能の実装方法を決定します。
次に実装において、その機能を実際にシステムに組み込みます。
テストというのは、この時点で予定していた機能が本当に組み込まれているのかを確認する作業となります。
一度の実装で不備なく機能が組み込まれることはあまり多くなく、コードを間違えてしまう、想定とは違う挙動をしてしまう、過去に実装した機能が動かなくなってしまう、といった事象がよく発生します。それらをしっかり確認せずに気づかないままにしてしまうと、最終的にシステムが不具合・バグを生じてしまうこととなります。
テストは工数をしっかりかけて行う必要のある、非常に重要な作業です。
テストの種類
テストは大まかに次のように大分されます:
- コードレビュー
- 単体テスト
- 結合テスト
- システムテスト
コードレビュー
実装後すぐの段階でコードそのものを見て、コーディング時のケアレスミスがないか、現場で定まっているコーディングルールに合っているか、関係のないコードが含まれていないかなどを確認します。
単体テスト
プログラム内の比較的小さな範囲に限定し、詳細設計で決定した機能の実装方法の通りに動いているかを確認します。
具体的には、様々な入力を想定される入力を可能な限り全パターン用意し、それらを与えた際に想定している出力がされるかを確認します。各パターンを重複や漏れなく確認する必要があるため、事前にテスト仕様書に各パターンをテストケースとしてリストアップし、それをもとにしてに順に確認をしていきます。
結合テスト
いくつかのプログラム部品を組み合わせて、基本設計・詳細設計で意図した通りの動作・挙動をしているかを確認します。
単体テストで各プログラム部品が問題なく動作している場合でも、それらを組み合わせた際にデータの受け渡しの不備等により、動作不良や不具合が見つかることが多くあります。
システムテスト
実際にシステムを使う想定で、システム全体を通して動作検証を行います。
要件定義・基本設計で意図した通りの動作をしているかを確認します。
テストは対象範囲の広さ・目的に応じて何種類かに分けられます。
まずは対象範囲の狭いテストから行い、徐々に対象範囲の広いテストを行っていきます。
まとめ
今回はテストについて簡単にではありますがまとめてみました。
現場で今実際に行っているテストが今回紹介したもののうちのどれにあたるのかがまだはっきりと分かっていない状況なので、今後はその部分についても意識しつつ、現場で行っている業務の解像度を上げていこうと思いました。
参考文献
https://webrage.jp/techblog/the_necessity_for_testing/
https://type.jp/et/feature/20963/
https://www.qbook.jp/column/616.html
https://www.qbook.jp/column/1683.html
https://www.qbook.jp/column/653.html
https://www.qbook.jp/column/1600.html
https://www.intra-mart.jp/im-press/useful/unit_test
https://blog.aiqveone.co.jp/unit-test/
https://products.sint.co.jp/obpm/blog/join-test