HOME会社概況業務内容開発分野開発事例CANモジュールソフテックだよりお問い合わせ
HOME > ソフテックだより > 第6号(2005年11月16日発行) 現場の声編「システムテストとバージョン管理について」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより(技術分野別)のページへ
ソフテックだより(シーン別)のページへ


ソフテックだより 第6号(2005年11月16日発行)

現場の声編

「システムテストとバージョン管理について」

今月は、現在進行中の、ある大規模システムのシステムテストとバージョン管理について紹介します。
この大規模システムは新宿本社では設置場所が確保できない為に、青森にある八戸事業所にてシステムテストを行っています。
テスト環境のシステム構成ではパソコンは6台、ディスプレイも6台、各種基板12枚が所狭しと並んでいます。
テスト環境の所為だけでは無いと思いますが、天気予報では最高気温17度となっていた日、妙に暑く感じてエアコンを起動した所、室内気温28度となっていました。そんな常夏八戸でのシステムテストとバージョン管理についてお話したいと思います。

«テストについて»

始めに、テスト方法について簡単に説明させていただきます。
ソフト開発においてテストは、単体テスト、結合テスト、システムテストに分けられます。(分類や考え方によって他にも色々なテストがありますが、ここではこの3つとします)単体テスト、結合テストも含めて簡単に説明すると以下のようになります。

◆単体テスト

アプリケーション単体や関数単体などモジュール単位に行うテストです。全コードを通っているか、プログラムが作成者の意図通りに動いているかを確認します。

◆結合テスト

各モジュールを結合し、インターフェイス部分の確認に重点を置いたテストです。通信などデータのやり取りなどが意図通りに動いているかを確認します。

◆システムテスト

プログラムの作りなどは意識せず、システムが仕様通りに機能しているかを確認するテストです。単体テスト、結合テストが終了した後に行います。
プログラムの作りを意識しないようにする為、作成者とは別担当者が行うことが好ましいとされています。

«バージョン管理»

現在私が携わっている大規模システムのシステムテスト環境ではパソコン上で動かす実行ファイル、データベースファイル、マイコンで動作させるヘキサファイル、などが合計で177ファイルあります。
これら177のファイルが不具合修正により更新されていくのですが、不具合が修正されたからといって次々と最新ファイルを取り込みつつシステムテストを行ってしまうと、さっきまで頻発していた不具合が突然発生しなくなって再現しなくなったり、さっきOKで確認済みとした項目が実は正常に動かなくなってしまっていたりと収拾がつかなくなってしまう恐れがあります。
そこで、各修正担当者にはファイルの修正が終わった時点でファイルのバージョンを振ってもらい、システムテストを行う際にはシステムのバージョンを振り、システム単位でもバージョンを管理するようにしています。
また、システムテスト中にはシステムテストの進捗に多大な影響がでると思われる重大な不具合が発生しない限り、1つのシステムバージョンで通すようにしています。

先日、ニュースにもなっていましたがある大規模システムがダウンしてしまいました。
私も興味があり、インターネットで原因が何だったのか検索してみると、

  • Aシステムに不具合が見つかり修正を行った。しかし、Aシステム修正の報告が抜けたままお客様にリリースしてしまう。
  • お客様ではAシステムが修正されていることに気付かず、他システムと一緒に運用開始してしまう。
  • ここで修正されたAシステムという「新」と、Aシステムの修正による影響で修正が必要だったが修正されていない他システムという「旧」の、新旧システムが混在して運用開始されてしまう。
  • 運用開始後しばらくは影響なかったが、この新旧のズレが月次処理によりシステムダウンという形で表面化してしまう。

という流れだったようです。
この場合の不具合はシステムテストを行っていれば発見・回避できたでしょう。(月次処理がテスト項目に入っていなければ無理ですが)
しかし、かなり大きなシステムですので、システムテストを行う環境が物理的、時間的、金額的に構築できたのか?という問題があります。
システムテストで回避できなかったこの不具合ですが、そもそもの原因は「Aシステム修正の報告が抜けたまま」であり、このような事態を回避するためにもバージョン管理は必要不可欠なものと位置付けています。

«システムテスト»

テスト仕様書を片手に、各確認箇所を確認する為にシステムテスト環境の周りをグルグル回りながらテストを行っています。
事象の発生時間が短く、確認し切れなかった時は再度繰り返しテストを行い、またグルグル回ります。
テスト環境が広くなることによって、想像していたよりも体力勝負なシステムテストとなっています。

不具合の中にはタイミングによって発生していて、なかなか再現しない不具合があります。このような不具合の再現を修正担当者から依頼され、再現しようとしてもなかなか再現させることができない時は、「見間違えたかな?」「操作ミスしたかな?」と内心少しドキドキしながら作業しています。
修正担当者の目の前で無事再現させることができれば一安心なのですが、再現させることができずに常時監視事項となってしまうこともあります。(そしてなぜか、このような不具合は修正担当者が近くにいない時を狙って再現するのです)

「品質は上流で作り込む」という考えの元、仕様検討やプログラム作成を行ってきても、やはり不具合は存在してしまいます。
不具合が見つかるのは嬉しくはありません。しかし、不具合を見つけることができれば修正することができるのです。
「テスト担当者の私の仕事はテスト項目をこなす事ではなく、テストを実施することによって不具合を発見し、少しでも不具合の無い状態でリリースを向かえることである。」と自分に言い聞かせ、リリースに向けシステムテストを行っていきます。

(S.T.)


関連ページへのリンク

関連するソフテックだより