社内SEになりました

社内SEは本当に楽なのか?ユーザー系IT企業とSierとの違いは?これからIT企業への就職や転職を考えている人むけに、ユーザー系IT企業から社内SEに40代で転職した筆者がITエンジニアの仕事内容やプロジェクト管理のノウハウ等をご紹介。

開発工程(製造・単体テスト)

開発工程の中の製造・単体テストの説明です。

1.単体テストについて

単体テストは、人によって対象とする範囲が異なるため、プロジェクト計画書で以下のどちらを指すのかを明確にして、プロジェクト内での共通認識を持つことが重要です。

①正しい意味での「単体テスト

いわゆるプログラムテスト。モジュール単体のテストです。JavaであればJUnitなどのツールを使ってテストをしたりします。「ドライバ」とか「スタブ」とかいったテスト用のモジュールが登場するのも、この単体テスト工程です。

大規模のスクラッチ開発のプロジェクトでは、こういったモジュール単体のテストで、最低限の品質を担保してから結合テスト(機能テスト)を実施します。

小規模のプロジェクトの場合には、この単体テスト(プログラムテスト)は実施しないことが多く、プログラマーが画面等を動かして、動作確認する程度で本来の意味での単体テスト工程を終えます。

また本来の言葉の意味とは異なりますが、この簡単な動作確認をデバッグと呼んだり、単体テストのことをデバッグと呼んだりすることもあります。

②間違って理解している人の多い「単体テスト

私の経験上では、単機能の結合テスト単体テストと呼ぶことが多いです。日本でトップクラスの大手ベンダーのプロジェクトマネージャーでも、そのような勘違いをしている人が多いです。

単機能の結合テストとは、具体的には1画面内のバリデーションチェック(入力値のチェック)やエラーメッセージの出力タイミングや文言等のテストのことです。

プロジェクトによっては、連続した画面遷移も含めて単体テストの範囲にすることもあります。

事業会社のシステム部門はプログラミング経験の無い人が多いので、①の単体テストのテスト仕様書は見ても分かりません。そのため単体テストのテスト仕様書は通常はレビュー対象外としますが、これをベンダーは②の単体テストと勘違いをして、後になってベンダーと揉めるケースがあります。

ベンダーはレビュー対象外かレビュー対象かで、ドキュメンテーションの力の入れ具合を変えます。そのためレビュー対象外と思っていた単体テスト仕様書がレビュー対象になると、ドキュメントをキレイにするための余計な工数が発生するため、難色を示します。

そのようなことを避けるためにも、プロジェクト計画の工程定義をする段階で、きちんと単体テストの範囲を明確にした上で、レビュー有無を合意する必要があります。

2.製造でやること

プログラミングする際に重要な役割を担うのは、コーディング規約です。

コーディング規約は、変数やメソッド等の命名規約を定めたり、ソースの可読性を高めたりするためのルールをまとめたものです。


文字コードはMS932で記述すること
・改行コードは「CR+LF」にすること
SQLに実値をハードコーディングしないこと
マジックナンバーは使用しないこと
・インデントはタブではなく、半角空白とすること

これらは遵守しなくても、システムが仕様通りに動かないといった不具合は発生しませんが、プログラマーによってソースの書き方が異なると、他の人が修正する際にソースを解読するのに時間がかかったり、誤って解釈してしまったりといった弊害が発生します。

プログラムソースのソースレビューでは、サンプリングしたソースコードに対して、コーディング規約を遵守しているかをチェックすることが主目的になります。

3.ITエンジニアの一般的なイメージ?

ITの仕事を知らない一般の人が抱くITエンジニアの仕事のイメージは、まさのこの製造・単体テストのイメージかと思います。

実際に20年くらい前までは、プログラミングはシステム開発の主流の工程でした。新人はまずはプログラミングを経験し、設計、要件定義といった順番でスキルアップしていくのが王道でした。

でもプログラミング言語の生産性が高まることで、製造工程は全体の工程の中でどんどん短くなっていき、最近ではプログラミングしなくてもGUIだけでシステムが作れるようになりました。

RPAにいたっては、すでにユーザー部門が自分たちでシステムを作ってしまえる状態です。今後、パッケージ製品やSaaS等を作るコアなプログラマーと、それらを利用してシステムを開発するライトなプログラマー?の二極化がどんどん激しくなっていくと思います。

【振り返り】

今回は製造・単体テストの説明でした。次回は結合テストの説明をしていきたいと思います。

①戦略・企画
②要求定義
③要件定義
④基本設計
⑤詳細設計
⑥製造
単体テスト
結合テスト
⑨総合テスト
⑩受入テスト