プログラミング、単体テストという文字を指さしている男性

さて今回は
「プロが教える超ざっくりシステム開発」
のプログラミングと単体テスト編となります。
プログラミングの前工程をまだご覧になっていない方はこちらをご覧ください。

プログラミング工程では、これまでの工程で設計されてきたことを実現するための「プログラム」を作ります(記述します)。
「プログラム」とは、コンピューターに「「この場合はこの計算して、そうでない場合は別の計算をする」「ファイルを出力する」などの命令文のことを指します。
これまでに設計してきたことが仕様通りに動作するよう「プログラム」を記述していきます。

プログラムは何を使ってどう記述するの?

プログラムを記述するために「プログラミング言語」というものがあります。
日本語、英語、韓国語、などと人が使う言語と同じとイメージいただければと思います。
「プログラミング言語」を使って、そのプログラミング言語の構文・文法にしたがってプログラムを作っていきます。
こんなにも↓プログラミング言語の種類があるの知りませんでした(笑

構文や分法はプログラミング言語毎に異なりますので、これを全部覚えようというのは到底無理がありそうです(汗)
我々が言うのもおかしいですが、プログラマーってすごいですよね!

これらプログラミング言語自体には得手・不得手があります。
たとえば

・C言語:組み込み系
・Java:Webアプリ
・Python:データ分析(AI)

が主に利用される分野だったりします。
ちなみに我々は主に以下を利用して開発をしております。

・C#
・JavaScript(TypeScript)
・Java
・Swift
・Python

一昔前は

・C
・C++

などもありましたが、今はほとんど利用しなくなっています。

これだけ言語数が多いので、当然プログラマーにも得手・不得手の言語があります。
所属した企業が主に使っている言語で得手・不得手も決まってくるかと思います。
さらに言うと、開発企業にも得手・不得手があると思っています。
得意分野が組み込み系であればC言語などが得意ですし
Webアプリ系なら、JavaScriptやC#、Rubyが得意だったりすると思います。
まぁ、利用者からしたらどんな言語で作られているかは関係ないですけどね。

と、これらプログラミング言語を駆使して、プログラマーはシステムを作っていくのが「プログラミング」工程となります。
さすがにプロのプログラマーとはいえ、プログラムを記述するだけですと想定通りに動かないものです。
プログラムを記述しつつ、可能な範囲で動作させながら欠陥を取り除いていく作業もこの工程で行います。
ちなみにこの作業を「デバッグ」といいます。「バグ」は「虫」ですので、防虫、という作業になるのでしょうか。

プログラマーによるプログラミングが終わった後は、第三者によってレビューを実施することで、この工程でも品質を作り上げていきます。

単体テスト工程って何するの?

さて、前工程で作成されたプログラムは次の工程で「単体テスト」工程に流れていきます。
どのような観点のテストをするのか、どのような条件下でテストをするのか、などは上流工程で「テスト計画」を立案済みなので、それに従ってテスト工程を進めていきます。

この単体テストではプログラミングしたソフトウェアが単体で仕様(設計)通りに動くか検査します。
この「単体」というのが分かり辛かったりします。
たとえば、下図の4画面でシステムが構成されているとします。
これら4画面が連携(遷移)することでシステムが成り立つのですが、全部を一度に検査するのではなく1画面(単体)だけで検査します。
下図のような場合は、4画面それぞれで単体テストを実施することになります。

単体テストは以下の手順で実施します。

 ①テスト(確認)項目を作成する。
 ②テスト項目を第三者レビューして、テストパタンの漏れなどを防ぐ。
 ③テスト項目に従い、テストを実施する。
 ④不具合があれば修正して、再度テストを実施する。
  このとき影響範囲を調査し、必要に応じて合格した項目も再度テストする。
 ⑤全項目合格するまでテストする。

これで1機能が完成し、1機能での品質を担保することができました。

ただ、これだけでは、システムとしてはまだまだ動作しなはずです。
次回は、次工程の「結合テスト」について触れてみたいと思います。