ソフトウェアテスト・評価とは? 必要性や7原則、評価項目を紹介(ソフトウエアテスト・評価)
更新:2024.10.3
著者:Sky株式会社
目次
ソフトウェアテスト・評価(ソフトウエアテスト・評価)とは
ソフトウェア評価は、アプリケーションやシステムの品質、使いやすさ、有効性を判断するものです。ソフトウェアが必要な規格や仕様を満たして意図した目的通りに機能しているかを判断する、ソフトウェア開発での重要な工程です。
ソフトウェアテスト・評価(ソフトウエアテスト・評価)の必要性
ソフトウェアに不具合などの欠陥があった場合、さまざまな損失が発生します。ここでは、どういった損失が発生するのかを4つのタイプに分けて紹介し、ソフトウェア評価の必要性についてご説明します。
経済的な損失
見つかった欠陥の修正や再テストを行うにはコストがかかるため、経済的な損失が発生します。さらに、その製品を使っていたユーザーが、欠陥のために何らかの損失を被っていた場合、賠償問題に発展することも考えられます。ソフトウェアの欠陥が原因で発生する損害は、年間595億ドルにものぼるという米国の国立研究所による調査結果も残っています。そのうちの3分の1はソフトウェア評価で回避できた問題だそうです。
時間の浪費
見つかった欠陥を修正するには、費用だけでなく時間も浪費してしまいます。つまり経済的な損失は、時間的な損失にもつながるといえます。さらに、早急にソフトウェアの欠陥を修正するために、別の開発プロジェクトの担当者の応援が必要となり修正作業に加わるような場合、ほかのプロジェクトにも遅れが出てしまい、ビジネス上の機会損失につながる可能性もあります。
信用の失墜
製品に欠陥があった場合、製品に対する信用だけでなく、会社全体の信用失墜にもつながります。特に著名な企業であればあるほど、その影響範囲は大きくなり、企業のブランドイメージが低下する懸念もあります。
生命に関わる事故
ソフトウェアは、自動車や電車などの制御システムにも用いられています。そうしたソフトウェアに欠陥があった場合、人命に関わる重大な事故を引き起こしかねません。また、医療機器の欠陥も人の命に直結します。生命に関わる事故を起こさないためにも、ソフトウェア評価で欠陥を見つけ出す工程は欠かせません。
ソフトウェア評価・テストに関するお問い合わせはこちら
お問い合わせはこちらソフトウェアテスト・評価(ソフトウエアテスト・評価)の7原則
ソフトウェア評価には、「ソフトウェア評価の7原則」という、ソフトウェア評価を行う技術者が共通して持っている考え方があります。ここでは、その7原則について解説します。
テストでは「欠陥がある」ことしか示せない
ソフトウェアの品質を保証する上で、必要かつ十分だと考えられるケースを想定して、ソフトウェアに対するテストを行います。テストを行って欠陥が見つからなかったとしても、想定したケースで欠陥がなかっただけで想定しえなかった処理や極めてまれな条件、特定の状況下でのみ欠陥が検知されるというケースも起こりえます。テストによって欠陥があることはわかりますが、欠陥がないことの証明はできません。
全数テストは不可能
全数テストとは、すべてのパターンをテストすることです。すべてのパターンのテストケースを洗い出し、テストを実行することは、膨大な時間がかかるため、非現実的です。そのため、実際のテストでは、ソフトウェアの性質、目的、使われ方、考えられるリスクなどによって、重点的にテストを行う場所を絞り込んだり、優先順位をつけたりして、テストを行う必要があります。
早期テストで時間とコストを節約
欠陥のないソフトウェアを開発することが理想ですが、人間が作っている以上、完璧なソフトウェアの開発は不可能です。もしソフトウェアを納品する直前に欠陥が見つかった場合、影響がある箇所をすべて再テストする必要があり、スケジュールの遅延やコストが増大する恐れがあります。ですが、プログラムのコーディング直後にテストをすれば、仮に欠陥が見つかったとしても、該当箇所のみを修正して再テストすることで、すぐに欠陥を取り除くことができます。つまり、開発の早い段階でテストを行うことで欠陥を早期発見でき、結果的にコストの低減、削減につながります。
欠陥の偏在
テストで見つかる欠陥は、多くの場合、実装の難易度が高い、業務要件が複雑、リソース不足で十分な人員を充てられなかったなどの要因によって、特定の領域に集中しているケースが多いです。ですから、欠陥が多い箇所を確認し、該当箇所のテストを強化することで効率的にテストを進められるようになります。
殺虫剤のパラドックスに注意
害虫の駆除に同じ殺虫剤を使っていると、そのうち虫が耐性を持ち、殺虫剤がだんだん効かなくなります。それと同様に、ソフトウェアテストでも同じテストを繰り返していると、新たな欠陥を発見できなくなります。そのため、各工程でテストの観点を変えたり、開発者目線だけでなくユーザー目線でテストを設計したりと、さまざまな観点でテストを実施する必要があります。
テストは条件次第
ソフトウェアを使用する状況や目的によってテストの内容は異なります。例えば、欠陥があれば生命に関わる事故につながる、自動運転のソフトウェアであれば細心の注意を払った綿密なテストが必要です。一方、社内で活用するだけのソフトウェアなのであれば、ある程度のテストを行ってリリースしてからブラッシュアップしていくこともできます。つまり、ソフトウェアの特性を考慮したテストを行うことが重要になります。
「バグゼロ」の落とし穴
欠陥がゼロであっても、高品質なソフトウェアであるとは限りません。機能的な欠陥をなくすための修正を行ったことにより、使い勝手が悪くなってしまう可能性もあります。ソフトウェアは、機能面だけでなくセキュリティ対策や使いやすさ、性能といった観点でも評価されます。ソフトウェアテストでは欠陥をなくすためだけでなく、ユーザーの要件や使いやすさを確認するために実施するという視点も必要です。
評価項目・基準
品質の高いソフトウェアを提供するために、ソフトウェア品質の評価に関する「ISO/IEC 25010:2011」という国際規格が定められています。ここでは、この規格で定められているソフトウェアの8つの品質特性についてご説明します。
機能適合性
機能適合性は、エンドユーザーの求める機能をどの程度実現できているかという指標です。エンドユーザーの要望は言葉で明確に伝えられたものだけでなく、潜在的なニーズも含みます。潜在的なニーズまで的確にくみ取りながら開発されたソフトウェアは機能適合性が高いソフトウェアだといえます。
信頼性
信頼性は、障害の起こりにくさや障害が発生した際の不具合の解消しやすさの指標です。頻繁に不具合が起こったり、不具合の解消までに時間がかかったりすると、ユーザーの信頼を損ねてしまいます。
性能効率性
性能効率性は、操作した際の反応などシステム実行時の性能や資源効率を表す指標です。ユーザーが製品を操作した際のスムーズな応答を保証するために、機能実行時の応答速度および処理速度を評価します。また、システムにおける資源は、メモリやCPU、ディスク容量の使用効率を指します。できるだけ少ない資源で動作させることが理想です。
互換性
互換性は、他製品やシステムと機能や情報を共有、変換できるかどうかの指標です。例えば、スマートフォンのアプリで考えると、iPhoneでもAndroidでも使用できるといったことを指します。もちろん、さまざまな環境で使用できる方が高品質だといえます。
使用性
使用性は、ユーザーが効果的、効率的に利用できるかどうかを表す指標です。例えば、ECサイトなどで商品を選んで決済するまでの流れがわかりやすいといったように、ユーザーが迷わず操作できたり、知りたいことがすぐにわかったりするソフトウェアは使用性が高いといえます。
セキュリティ
セキュリティは、ソフトウェアが第三者に悪用されることがなく、保持している情報やデータが保護されているかどうかを表す指標です。不正な侵入やなりすましを防ぐ仕組みが整っている必要があります。
保守性
保守性は、ソフトウェアの管理者が管理やメンテナンスをしやすいかどうかを表す指標です。管理者は、日々の稼働状況をチェックし、異常がないかを確認しています。問題が発生した際に、異常を素早く発見、原因の特定と修正が速やかに行えることが重要です。
移植性
移植性は、別の動作環境に移行しやすいかどうかを表す指標です。ソフトウェアを別の動作環境に移す際には、移行先の環境に対応できるようにカスタマイズする必要があります。移植性は、移行時のカスタマイズのしやすさを指します。例えば、macOS用のアプリケーションをWindowsでも動作するように速やかに対応できるのであれば、移植性が高いといえます。
ソフトウェアテスト・評価(ソフトウエアテスト・評価)の手順
ソフトウェアの品質を保証するために、さまざまなテストが行われます。ここでは、テストを行うための手順についてご説明します。
テスト計画
ソフトウェアの評価作業を始める前に、テスト計画書を作成します。計画書に記載する要素は、テストの目的、テストで焦点を当てる領域や品質基準、必要な人員、機材、スケジュールなどです。こうした要素を明確にして記載することが、ソフトウェア評価の精度を高めることにつながります。
テスト設計
テスト設計では、テスト計画で定めた方針に沿ってどのようにテストを行うのか、次の3つの作業を行い具体的に決めていきます。
テスト設計書作成
評価するソフトウェアの仕様から、テスト範囲やテストで確認したい観点、どのようなテスト条件で確認すべきかなどを洗い出し、まずはテスト方針書を作成。さまざまなテスト条件が考えられるため、どの程度網羅するのか、その基準と理由を決めて、さらにテスト設計書としてまとめます。
テストケース作成
テスト計画およびテスト設計書で決めた方針どおりにテストが実施できるように、テストケースを作成します。テスト条件やテスト手順、テストで期待される結果を具体的にまとめておくことで、確認すべき項目の漏れや不足を防ぐことができます。
テストデータ作成
テストを行う際に必要となる、画像や音楽ファイルなどのテスト用のデータを作成します。
テスト実行
計画したスケジュールに沿って、テストケースを実行します。不具合が検出された場合は修正し、きちんと修正されたかどうかの確認も行います。
振り返り
テスト実施結果を基に振り返りを行います。テストの有効性や品質の判断に加え、問題点を洗い出し、今後に向けた改善事項を洗い出します。
ソフトウェアテスト・評価(ソフトウエアテスト・評価)ならSky株式会社
Sky株式会社は、自動車関連システム、業務系システムなど幅広い分野で、ソフトウェアやシステムの品質保証業務に携わっています。ここでは、Sky株式会社のソフトウェア評価の実績などについてご紹介します。
事業内容
Sky株式会社は、自社パッケージ商品の開発をはじめ、カーエレクトロニクス・モバイルなどの組込みシステム開発、業務系の基幹システム開発など行っています。ソフトウェア評価事業は2004年に立ち上げ、現在は300社以上との取引実績があります。
Sky株式会社が携わる領域
ソフトウェア評価/検証・サポート
自動車関連システム / サービス、業務系システム、コンシューマ製品、アプリケーション・パッケージソフトウェアなど、幅広い分野でソフトウェア評価業務をご支援しています。近年は、実装後の品質テストだけでなく、要件定義といった開発の上流工程から品質管理を行うなど、携わる領域も拡大しています。
車載関連のソフトウェア評価では、クリティカルな制御をつかさどる車載ECUテストや、関連システムの各種テストで、ソフトウェア品質向上に寄与しています。
また、業務系システムの評価業務にも注力。企業の大規模な情報システムでは、柔軟性や技術要件の幅広さなど、さまざまなことが求められますが、Sky株式会社は、品質評価の経験だけでなく、受託開発や自社パッケージ商品の開発で長年にわたり培ってきたノウハウを生かして、システムの品質向上を支援しています。
業務系システム開発
業務系システムの開発にも30年以上にわたって携わっています。金融・保険業界のコールセンターシステムや、医療業界の内視鏡ITシステム、建設業界の生産管理システムを開発するなど、多様な業界・業種で実績を積み重ねてきました。主要メーカー製品や各種スマートデバイスなどと連携するシステムをはじめ、クラウドサービスの利用を進めることで、ビジネス環境の急速な変化にも迅速かつ柔軟に対応できるシステムを開発しています。
Sky株式会社の業務系システム開発について詳しくは、こちらをご覧ください
Sky株式会社の業務系システム開発について組込み / 制御 / アプリケーション開発
Sky株式会社は、創業時から組込み / 制御システム開発を強みとし、アプリケーション開発など幅広い開発実績を有しています。サービス分野についても、カーエレクトロニクス開発やモバイル開発、デジタル複合機開発、デジタルカメラ開発、社会インフラ、医療機器開発、FAシステム開発など、さまざまな領域に携わっています。
Sky株式会社の組込み / 制御 / アプリケーション開発について詳しくは、こちらをご覧ください
組込み / 制御 / アプリケーション開発についてまとめ
ここまで、ソフトウェア評価の必要性や評価を行う上での原則、手順などをご紹介しました。ソフトウェア評価は、ソフトウェアやシステムの品質を高める上で欠かせないものです。
Sky株式会社では、自動車関連システム、業務系システムをはじめとした幅広い分野で、ソフトウェア評価の実績があり、開発の上流工程から品質管理に携わるノウハウも有しています。ソフトウェア評価でお困りごとがあれば、ぜひSky株式会社までお問い合わせください。
ソフトウェア評価・テストに関するお問い合わせはこちら
お問い合わせはこちら著者 Sky株式会社
Sky株式会社は、家電のシステム開発を手掛けたのをきっかけに、デジタル複合機やカーエレクトロニクス、モバイル、情報家電、さらに自社商品として教育分野における学習活動ソフトウェアや、公共・民間向けクライアント運用管理ソフトウェアなど、幅広い分野でのシステム開発を展開しております。