ソフトウェアを開発するとき、プロジェクトマネージャー(PM)は決められた「納期」、「コスト」の中で、できる限り「品質」を高めようとします。モノづくりでは、開発工程が花形とされ、フォーカスされがちですが、品質を高めるときにテスト工程は欠かせません。ソフトウェアテストのフローや技法について知見のある方も徐々に増えてきましたが、それでも品質が上がらない・・・というご相談は多くあります。「テストが重要なことは知っている」「テストの技法は知っている」という方に、もう一押しのソフトウェアテスト工程のポイントを解説していきます。
ソフトウェアテストはなぜ必要なのか
現代ではソフトウェアに触れずに生活するのは難しいほど、数多くのソフトウェアが存在しています。ソフトウェアテストは、利用者が安全・快適にソフトウェアを利用できるように、必ず行わなければなりません。それは、新規開発、機能拡張などの派生開発、バグ改修、最近ではレガシーシステムからのマイグレーションなど、どのような開発でも同じです。しかし、顧客ニーズの変化は早く、ソフトウェアは複雑化し、リリースまでのスピード感も求められるようになりました。
ソフトウェアの開発において、納期短縮を図る際、まず頭に浮かぶのはテスト工程の削減という方も多いと思います。では、決められた「納期」と「コスト」を守れば、顧客は満足してくれるでしょうか。おそらく「品質」が悪ければ、クレームになるでしょう。バグが多ければ、BtoBの場合は信用低下や契約解除、BtoCの場合は顧客離れに繋がります。例えば、定額制のアプリケーションを新しく追加して、「画面が固まる」「起動しない」「アプリケーションが落ちる」といった現象が頻繁に発生していたら、次回契約更新時に継続するでしょうか?
特別な理由がない限り、契約終了となるはずです。一度離れた顧客に再契約・再利用してもらうのは、新規顧客の開拓をするよりも難しく、労力がかかります。そのため、BtoB、BtoCに関わらず、どのような開発でもソフトウェアテストは必要なのです。
テスト実行をはじめて行うエンジニア向けのマニュアル型資料
テスト実施の基本とバク報告の書き方を解説
テスト実行者向け はじめてのガイドブック
テスト工程が軽視されがちな理由
テスト工程というと「新人がやるものだ」「下請け会社にやらせればいい」と、開発工程に比べて軽視されることも多いのではないでしょうか。新人の方がテスト工程を担当する場合、ほとんどが「上流工程のドキュメントに書いてあることが満たされているか」を確認するためのテストを行い、完了としているのではないかと思います。これは一例ですが、異常系(イレギュラーな動作)まで全て網羅されているようなドキュメントを作成するのは現実的ではなく、ドキュメントベースのテストでは異常系のテストが不十分になりがちです。
しかし、異常系のテストで見つかるバグは多いのです。 異常系のテスト観点を持っている新人さんはなかなかいないので、テストでバグが検出できず、市場に流出、その後、改修対応に追われ、次期開発のスケジュールが遅れます。このような「テストの悪循環」に陥ってしまうと抜け出すのは大変です。そもそも開発者は、開発が好きだから開発をしているはずです。品質の高い開発をすることは意識できても、「品質を高めるテスト」はやりたくない人がほとんどでしょう。これをネガティブに考えれば「開発者はテスト工程を軽視している」となりますが、「開発工程を重視している」というポジティブな見方もできるのではないでしょうか。
そこで、より品質の高い開発をするのに必要になってくるのが、テストエンジニアという職種です。テストエンジニアを主体とするテストチームを作る企業も増えてきましたが、開発者とテストエンジニアではそもそもの考え方が違うのです。(もちろん、テストが重要だと考えている開発者の方も多数いますが、そういった考えからテストエンジニアに転向する方も少なくありません。)開発工程で品質を上げたい開発者、テスト工程で品質を上げたいテストエンジニア、上手く協力ができたら良い開発ができると思いませんか?
プロジェクト・プロダクト全体の品質を向上させ、デジタル改革を加速させます
バルテスの品質向上サービスのご紹介
「誰が」テストするかでプロジェクトの成否が分かれる
テストの担当者はある程度の独立性を確立すると、より効果的にバグを発見できるとされています。テストにおける独立性の度合いを以下に示す(独立性の低いレベルから高いレベルの順に列挙)。
- 独立したテスト担当者不在(開発担当者が自分のコードをテストするのみである)。
- 開発チーム、またはプロジェクトチーム内に所属する、独立した開発担当者、またはテスト担当者(開発担当者が同僚の成果物をテストすることもある)。
- 組織内にある独立したテストチームまたはグループで、プロジェクトマネージャーや上位管理者の直属組織。
- 顧客またはユーザーコミュニティから派遣された独立したテスト担当者、または、使用性、セキュリティ、性能、規制/標準適合性、移植性など、ある特定のテストタイプを専門に行う独立したテスト担当者。
- 組織外の独立したテスト担当者。オンサイト(インハウス)またはオフサイト(アウトソーシング)で作業する。
※「テスト技術者資格制度 Foundation Level シラバス Version 2018V3.1.J03」より一部抜粋
開発の担当者が自分でテストをしようとすると、思い込みからテストの抜け漏れが発生してしまうこともあります。そこで、テストの担当者をできるだけ独立させ、開発者とは異なる技術的視点を持つことで、開発者が行うテストで検出するバグとは異なるバグを検出できる可能性が上がります。また、開発の担当者とテストの担当者を分けることは、開発スピードの向上にも効果があります。
特にフェーズを区切った派生開発や、バグ改修など、開発とテストが並行で進行する場合、それぞれの担当者が作業を進められるので開発スピードが格段に上がります。もし、開発の担当者がテストまでしていたら、テストが終わるまで次の開発に移れません。また、前述した通り、開発者はテストが好きではないのです。納期に追われているテストが嫌いな開発の担当者がテストまで担当していたとしたら…バグに気付かず開発が進んでしまいそうですよね。
意外かもしれませんが、ソフトウェアテストは、技法やプロセスだけではなく、テストを行う体制も重要なのです。あなたが関わる開発プロジェクトのテスト体制はどの程度独立しているでしょうか?レベルをひとつ上げるだけでも、品質向上に繋がるかもしれません。
品質を高め、コストダウンができる効果を9つの事例でご紹介
テストアウトソーシングの効果とコストダウン実例ガイドブック
まとめ
「ソフトウェアテストが重視される理由と成功のポイント」と題して、解説してきました。 ソフトウェアテストは、開発工程に欠かせないものですが、市場変化にあわせていくことで、システムは複雑化し、開発スピードも求められるようになってきました。 ソフトウェアテスト技法などの知見があっても「品質が上がらない」といった悩みがある方は、一度、開発体制の見直しを検討してみてはいかがでしょうか?
当サイトでは、テスト技法を学びたい方、アジャイル開発やマイグレーションのテスト手法について知りたい方、テストアウトソーシングサービスに興味のある方へ、ダウンロード資料を多数ご用意しております。ぜひダウンロードいただき、資料をご活用ください。