「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
私は、間もなく入社から1年を迎える中国出身の社員です。この1年間で、私は主にWindowsアプリケーションの開発とマイコンソフトの開発を行ってきました。今回は、去年の6月から今年の2月にかけて担当したある大規模システムのシステムテストを通して学んできたことをお話したいと思います。
システムテストとは、システム開発におけるプログラムの検証作業の中でも、構築したシステムが全体として予定通りの機能を満たしているかどうかを確認するテストのことです。具体的な作業内容は、実際の使用環境に近い形で動作させ、個々の機能や仕組みを総合したシステム全体を対象として、設計のとおりにプログラミングされているか、機能間の連携は取れているか、機能や性能は仕様書の通りになっているか、といったことを検証します。システムテストをクリアすると、顧客に試用してもらって顧客の要望がきちんと満たされているかどうかを確認する「ユーザーテスト」が行われ、顧客の承認が下りるとシステムの完成となります。図1に示したように、一般的なシステム開発プロジェクトのフェーズにおいては、システムテストとユーザーテストはシステムが本稼働する前の最後のフェーズに該当します。
図1. システム開発プロジェクトのフェーズ
ソフテックでは、少人数でも大きなプロジェクトが行われ、しかも大きな規模のシステム開発でも将来的な成長も見越した人員参入を推進しています。そのため、新入社員の私も今回のような責任とやりがいがある仕事を任されることができました。今回取り組んだのは、ソフテックでも大きな規模のシステム開発で、参加したときは、システムテストの段階でした。お客様にとっては、事業の基盤となる重要システムなので、システムテストも慎重に行いました。最初は指示された作業をミスなくこなすことに集中していました。その後、徐々に知識も身に付き、周りの状況も段々と見えるようになってきたことで、自分自身では成長を感じることのできたプロジェクト経験でした。
新入社員として1年間、仕事に必要な技術や進め方について学んできました。担当してきた作業、とりわけシステムテスト作業を通して感じたことや上司・先輩社員から指摘を受けたこと、そして数々の失敗の経験から実務を行う上で重要だと思うことを紹介します。
システムテスト作業に入ったばかりの頃、「不適合を見つけるためにシステムテストを実施する。そして、システムテストを通して、品質を高める」と間違った考えを持っていました。直ちに、社長からは、「テストとは品質がよいものであること、を確認する作業である。すなわち、テストによって品質をよくするのではない。とくに、システムテストでは、その要素が強くなる。品質をよくするのは、上流の設計段階である。」との指摘を受けました。実際のシステムテスト作業を通して、高い品質のソフトは、設計・開発フェーズといった上流フェーズから作りこまなければならないことを実感することができました。例えば、テスト・移行フェーズにおいて、数多くの変更依頼が発生します。特にユーザーがシステムの操作性や業務への適合度を確認するために実施するユーザーテストを行うと、これまで聞いたことのないような要件や要望が上がります。そうした変更依頼に対して、やはり上流フェーズから品質を意識して開発しないと、本稼働までの短い期間で柔軟かつ速やかに対応するのは難しいと考えられます。
テスト・移行フェーズは、システムが本稼働する前の最後のフェーズです。このフェーズで問題を見落とすと、業務に支障が出ることを意味します。このため、システムテストは、1つひとつの作業を確実に行うことが求められています。テスト中に、安易に進められている作業がないか、確認が十分にされずに行われている作業がないか、手順が不明確なっている作業がないかなどを、常にチェックする意識が不可欠だと感じました。ただし、同時に全体を振り返ることを繰り返し、システムの趣旨、目的、背景などを、しっかりと把握することも非常に重要だと思いました。つまり、テストが正確かつ妥当になるためには、システムに対する理解を深めなければなりません。システムの理解にあたっては、システム全体を俯瞰するため、局部と全体を交互に行き来する思考を行い、単に仕様書といった文章表現だけでなく、シンプルに整理された設計モデリングも参照していました。違った視点で、システムのあらゆる角度から見つめることで、システムが本質的に解決すべき事柄・品質に関する事柄をもっと把握しやすいのではないかと思っています。
テストの実施にあたっては、的確な情報伝達が要求されます。定期的な進捗会議や日報を通して、作業状況(不適合の発見など)と進捗状況(予定と実績の差など)を明確し、チームメンバーなどに速やかに伝えるように行っていました。しかし、迅速な報告、連絡、相談を的確に行うということの難しさを感じました。一つの作業に対し、予想以上に時間を使っている時、一言声をかければ解決するような問題なのに、一人で考え込んで、手に負えなくなり、聞いた時には無駄に時間を使ってしまうことが多くありました。迷惑をかけないためにも早い段階で、相談をするということの大切さを強く感じました。また、日報報告については、不適合の発見のみならず、自分自身の作業のQCDに関する評価や、改善やプロジェクト推進をどのようにしたいかの意志、考え、希望などの報告をもっとすればと反省しました。
どんな単純作業にも必ず背景があって、大きな目的に沿って動いています。1つひとつの作業がどこを目指しているのかという目的を意識して取り組めば、面白くなると言えました。単調な仕事にも改善の余地があると捉えて取り組んでいくと、単なる単純作業が異なる様相を見せることがありました。ほかに方法はないかと自問自答し、仕組化を検討する必要はあると感じました。今回のテストにおいて、かなりの部分は単純なテスト項目でした。効率的に作業を行うためのパターンを考え出せるか、まずはじっくりと観察しました。そう考えながらテストをしていると、一見単調な作業も違った顔を見せてくれました。そうしたパターンを並べて眺めてみると、何かの傾向がつかめることにより、仕様全体の理解に大きな助けとなりました。
ソフテックに入社してからもうすぐ1年が経とうとしています。実際の開発経験はまだ少ないですが、先輩からのご指導のおかげで、未熟ながらも技術力が身についてきていると感じています。今までの失敗から反省や苦労して学んだことを種に、早期に一人前のソフトウェア開発技術者になれるように、知識と経験を蓄えていきたいと思います。
拙い文章ですが、最後までお読みいただき、ありがとうございました。
(S.S.)
関連ページへのリンク
関連するソフテックだより