Technical Information

解説!ソフトウェアテストの国際標準「ISO/IEC/IEEE 29119」

asset_approach_column_advanced-software-test04_hero.jpg

現在、さまざまなソフトウェアテストに関連する技術が開発され、またそれらの技術を知識としてまとめた文書が公開されています。これは他の技術分野でも同じですが、この技術情報を得ようと思った場合、例えば、書籍、国際/国内学会の論文、国際標準、資格試験などがあります。本稿は、ソフトウェアテストの国際標準であるISO/IEC/IEEE 29119について解説します。
国際標準の世界は複雑に見える(本当は知ってしまえばそこまで難しくはない)ので、基本的なところから解説していこうと思います。本稿のゴールは、国際標準に関わる以下の文章を理解できるようになることです。

須原 秀敏

株式会社ベリサーブ
オートモーティブ事業本部
オートモーティブ検証サービス開発部
須原  秀敏

【POINT】

・JTC1/SC7/WG26が、ISO/IEC/IEEE 29119 を書いている。
・ISO/IEC/IEEE 29119には既にISとして発行されているPart1~5があり、今後複数のISやTRの発行が予定されている。

1.ISO/IEC/IEEE 29119とは

ISO/IEC/IEEE 29119とは何かを理解するには、まずISO/IEC/IEEE 29119 Part 1のIntroductionの冒頭の説明を読むのが良いと思います。

The purpose of the ISO/IEC/IEEE 29119 series of software testing standards is to define an internationally-agreed set of standerds
for software testing that can be used by any organization when performing any form of software testing.[1]

簡単に言うと、国際的に合意されたソフトウェアテストの標準群です。
ISO/IEC/IEEE 29119の策定自体は2007年に検討が開始され、Part1、2、3の初版が2013年に発行[2]されています。
検討開始から初版の発行まで6年もかかっているのは、後述の重厚なプロセスがあるからです。現在は、Part1~5までが発行されています。
各Partの内容はそれぞれ以下です。

Part1:Consepts and definitions(コンセプトと定義)[3]
Part2:Test processes(テストプロセス)[4]
Part3:Test documentation(テスト文書)[5]
Part4:Test techniques(テスト技法)[6]
Part5:Keyword-driven testing(キーワード駆動テスト)[7]

Part1が概要、導入の章です。ソフトウェアテストに関する考え方を記載しており、例えば、この標準群の特徴の一つであるリスクベースドテスト※1 について説明がなされています。

Part2はこの標準群の中心的な考え方となるテストプロセスについて定義している章です。ポイントとしては複数のレイヤーのテストプロセスモデルを採用している点があります。各プロジェクトのテストプロセスの上位に組織的なテストプロセスを置き、そこで組織的に定めるテストポリシーなどをまとめる、という考え方に基づいたプロセスになっています。

Part3はPart2で定義したテストプロセスの中でどんな文書が必要となるか、また、その文書の構成要素としては何があるかを定めています。
例えば、テスト完了レポートという文書があり、内容としては実施したテストのサマリ、テスト完了評価、テストのメトリクスなどが必要である、といったことが記載されています。

Part4は主にPart2のテスト設計プロセスにおけるテスト(設計)技法について列挙されています。仕様ベースのテストとして同値分割や境界値分析が挙げられていたり、構造ベースのテストとしてステートメントテストや改良条件判定カバレッジ(MC/DC)※2テストが挙げられていたりします。

Part5はテスト設計からテスト実装に関係する手法である、キーワード駆動テストを取り上げています。

上記の内容から、多忙な方は、まずPart2から読むと良いと思います。

※1:"リスクのレベルに基づいてテストを設計し優先度付けする"テスト(ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2018.J03)
※2:改良条件判定カバレッジ(MC/DC)(modified condition decision coverage):判定結果に対して独立に影響する全単一条件結果のうち、テストスイートが遂行した条件結果のパーセンテージ(ソフトウェアテスト標準用語集(日本語版)Version 2.3.J01)

2.国際標準の概要

国際標準を発行している組織には代表的なものがいくつかあります。本稿で取り上げているISO/IEC/IEEE 29119は、後述する代表的な3つの組織(ISE、IECおよびIEEE)が合同で発行した国際標準です。
国際標準は、世界中のエキスパートが知恵を絞り合って策定した「国際的に合意」された文書であるため、技術的に妥当なことが書かれていることが多い、という強みがあります。そのため、企業または組織は自分たちの活動の参考にできる可能性があります。

ただ、国際標準はそれ以上に大事な意味を持ちえます。それは、WTO(World Trade Organization)加盟国が守るべきルールになりうる、という点です。WTO協定の中にTBT(Technical Barriers to Trade)協定というものがあり、「TBT協定は、工業製品などの各国の企画および規格への適合性評価手続き(規格・基準認証制度)が不必要な貿易障害とならないよう、国際規格を基礎とした国内規格策定の原則、規格作成の透明性の確保を規定」[8]しています。簡単に言うと、「国際規格を使って各国の足並みをそろえよう」ということです。この「国際規格」に該当するものが国際標準です。そのため、国際標準は企業または組織が従わなければならないルールになる可能性があります。
このように、国際標準は各主体の活動の妨げになりうるので、各国の代表組織が参画して策定やレビューなどを行って、自分たちの不利益にならないようにしています。日本ではISO/IECの代表組織をJISC(日本産業標準調査会)が担っています[9]

ただ、国際標準は各国の代表が策定を行っているものではあるものの、賛成意見ばかりではありません。IEO/IEC/IEEE 29119の策定に際してもAssociation for Software Testing[10]や、International Society for Software Testing[11]などから反対意見が出されました(一部の議論は日本語訳されて公開されています[12])。このような意見があることを知った上で、企業または組織にとって有用な標準を自ら選んで活用するという立場が大切だと考えています。

3.ISO/IEC/IEEEとは

「ISO/IEC/IEEE 29119」の先頭についている「ISO/IEC/IEEE」は、前述の通り、発行している組織です。それぞれ、ISO(International
Organization for Standerdization:国際標準化機構)、IEC(International Electrotechnical Commission:国際電気標準会議)、
IEEE(Institute of Electrical and Electronics Engineers:電気電子技術者協会)です。ISOとIECは欧州の標準化団体で、IEEEはアメリカの標準団体です。

ISOとIECは多くの分野で標準を発行していますが、特に情報技術に関してはJTC1(Joint Technical Committee 1)という合同専門委員会を作り、共同で標準の発行活動を進めています[13]
また、IECとIEEEは協力して標準を策定していくことに合意しており[14]、IEEEはISOの標準化に協力できるため[15]、定められたプロセスを経て双方の発行物としてリリースできる手段が用意されています。似たような標準をそれぞれが出していると混乱するので、相互が合意できる内容であれば一本化してくれた方がわかりやすいでしょう(とはいえ、同じ分野であっても色々な意見があってしかるべきなので、複数の団体がそれぞれの意見を持った標準を出すことも価値があると思います)。

ISO/IEC/IEEE 29119は、ISO/IEC JTC1/SC7/WG26(詳細は後述)内で策定された標準であり、IEEEの承認プロセスを経て、三者合同の標準として発行されています(下図)。

ISO/IEC/IEEE三者合同標準の承認プロセス

図:ISO/IEC/IEEE 三者合同標準の承認プロセス

4.JTC1/SC7/WG26とは

JTC1/SC7/WG26は、ISO/IECの中のソフトウェアテストの専門作業部会です。Convenor(議長のようなもの)はStuart Reid氏が務めて
います[16]。 ご存じの方もいらっしゃるかもしれませんが、Stuart Reid氏は2014年にJaSST Tokyo(ソフトウェアテストのカンファレンス)で基調講演をされました[17]

JTC1は前述の通りITに関する合同専門委員会であり、その中に複数のSC(Sub Committee)があります。SC7はSoftware and systems
engineering(ソフトウェア/システム工学)のSCです。SC7の中には複数のWG(Working Group:作業部会)があり、WG26はソフトウェアテストのWGです。その他のSC7に所属するWGとしては、WG6:Software product and system quality(ソフトウェアプロダクトとシステムの品質)、WG10:Process assessment(プロセスアセスメント)[16]などがあります。WG6は25000シリーズ(SQuaRE)と呼ばれるソフトウェア/システムの品質特性に関する標準群を策定しており、WG10は33kシリーズ(SPICE)と呼ばれるプロセスアセスメントに関する標準群を策定しています。33Kシリーズ(SPICE)は自動車分野で有名な「A-SPICE」の元になっている標準群です。
WG26としては、ISO/IEC/IEEE 29119がメインの標準ですが、静的テストの一つであるレビューに関する標準であるISO/IEC 20246も策定しています。

5.ISOが発行する文書

ISOの発行する文書には前述の通り種類があります。本稿で説明してきている国際標準は、IS(International Standards:国際規格)です。
ISは、ルールやガイドラインとなりうるものです。文書のタイトルに特に何も書いていなければ、ISであると思っていただければ大丈夫です。例えば、"ISO 9001:2015"はとても有名で、ISの代表格と言えます。

TS(Technical Specification:技術仕様書)は、将来的にISに昇格させる目的で発行されるものです。技術的に発展途上であるが故にまずは途中段階で発行し、その後フィードバックを受ける目的もあります。あまりTSで有名なものはありませんが、自動車分野の方であれば
"ISO/TS 16949:2009"という規格名に見覚えがあるかもしれません。今はIATF(International Automotive Task Force)16949となっている自動車版のISO 9001です。IATF 16949の前身がISOのTSだった、ということです。

PAS(Publicly Available Specification:公開仕様書)は、マーケットの要請により急いで文書を発行する必要がある際に使われる方式です。期限は6年であり、TSと同じようにフィードバックを受けつつ、その後にISへの昇格または破棄となります。最近だと"ISO/PAS 21448:2019"が発行されています。こちらも自動車分野なので、分野が近い方はご存じかもしれません。SOTIF(Safety Of The Intended Functionality)という自動車の安全に関する文書です。この文書が発行された背景としては、自動運転が広がりつつある中でその安全性の保証の仕方を急いで定めて公開しよう、ということがあります。

TR(Technical Report:技術報告書)は、informative(情報提供)の意味が強い文書です。ISに関する調査データや、最先端の情報を含められますが、情報提供の範囲を超えないものです。TRにはその性格からISへの昇格の仕組みがありません[18]

6.ISO標準の発行プロセス

ISOが発行する文書には、主にIS、TS、PAS、TRという文書があります。一般的に標準と呼ばれる文書はIS(International Standards:国際規格)です。そのISを発行するまでには、いくつものステージが必要となります(下図参照)。そのプロセスの中で、各国からの意見を提出し、それに対して修正を行ったり、投票を行ったりして、最終的に発行まで進みます。WD/CD/DIS/FDISという文言を見たら、標準の開発ステージであると理解いただければ問題ありません。詳細なステージはISOのWebサイト[19]をご確認ください。
ここで詳しく発行プロセスをご理解いただくのは難しいと思いますので、お伝えしたいこととしては、一つの標準が発行されるまで長い道のりがある、ということです。

ISO規格の策定手順

ISOの開発プロセスは、ISO/IEC Directives(専門業務指針)によって定められており、そのプロセスは次のようになります。
※下図はプロセスの前半と後半で2枚のスライドに分かれています。図の下の操作ボタンで切り替えてご覧ください。

出典「ISO規格の策定手順」:日本船舶技術研究会 http://jstra.jp/images/standard/iso/iso_iec_kikaku_tejyun.pdf

7.ISO/IEC/IEEE 29119の今後

まず、ISはシステマティックレビューという制度があり、5年に一度レビューを実施し、必要があれば更新しなければなりません。
ISO/IEC/IEEE 29119のPart1~5も同じです。Part1~3の発行は2013年であるため現在まさにレビュー中であり、近いうちに更新版が発行されることになります。更新内容について詳細を書くことはできませんが、もしISO/IEC/IEEE 29119を参照してプロセスや文書を作っている企業や組織の方は、改めて更新版の標準を見ていただく必要があると思います。
なお、更新前後は、例えば更新版が2020年に発行される場合は、

 ・既存版"ISO/IEC/IEEE 29119-1:2013”
 ・更新版"ISO/IEC/IEEE 29119-1:2020”

のように、末尾につく西暦年で見分けることができます。逆に、ISOの文書を論文や開発文書などで参照する場合は、西暦年まで書く必要があります。

また、ISO/IEC/IEEE 29119は、いくつかのPartの追加を予定しています。ISまたはTRという位置付けでの発行となる予定です。
一つはISO/IEC TR 29119-11 Testing of AI-based systems[20]です。まだステージとしては初期ですが、TRということで、ドラフトが作られれば発行まで比較的早く進む可能性があります。性格としては、上述の通り最先端の情報をいち早く提供する、という意味合いが強いため、この文書がルールや規制になることは考えにくいです。その他には、アジャイルテスト、インシデント管理、パフォーマンステスト、テストアーキテクチャなどのISまたはTRの策定が進んでいます。

8.ISO標準の策定に参画する方法

これまで書いてきた通り、ISO/IECの国際標準は各国の代表組織によって策定、レビュー、投票が行われて、最終的に発行されます。JTC1としての日本の代表組織はJISCですが、情報技術分野に関しては情報処理学会 情報企画調査会に委嘱が行われています[21]
そのため、ISO/IECの標準の策定に参画するためには、情報企画調査会の賛助員となることが条件になります。ベリサーブも2019年度から賛助員となり、この活動に参画しています。もしご興味がある方は情報企画調査会のWebサイト[22]でご確認いただければと思います。

9.ISO標準策定に参画することのメリット

ベリサーブでは、2019年度から情報企画調査会の賛助員となり、私自身がWG26のエキスパートとして活動しています。月に一度開催される国内委員会の他、半年に一度開催される各国のWGメンバーとの国際会議に参加し、上述のPart1~5の更新に対するレビューや新しいPartの策定などに関わっています。

活動に参画することによるメリットがあります。
国内や各国のメンバーから国際標準の内容の趣旨や意図、解釈を直接聞くことができ、適切に国際標準を利活用・運用することができるようになることです。さらに積極的には、自らの不利益になることを防ぐように、標準を修整、策定できます。もちろん、参画しているWGメンバーは技術的に正しいことを追い求めて標準を作っているため、「技術的に正しい」の範囲の中で、利益を求め、不利益を除外することができるということです。

結果、ベリサーブでは適切な情報をタイムリーに、自社開発のツールやベリサーブ独自のテストプロセス標準に適用できます。実際に、ベリサーブで開発を行っているテスト設計支援ツールであるTESTRUCTUREや、当社独自のテストプロセス標準でテストの作業手順や成果となるドキュメントをまとめたVSMethod(Veriserve Standard Method)へのISO/IEC/IEEE 29119の活用を進めています。

標準に合わせ、使われる単語、ドキュメント、完了基準の統一などを行うことは、ツールを利用するベリサーブのお客様のテスト効率化などといったテストプロセスの改善にも貢献できる活動だと考えます。

まとめ

本稿では、ISO/IEC/IEEE 29119の解説を中心に、国際標準の仕組みなどをご紹介しました。
最初に紹介した文章は理解できるようになったでしょうか?

・JTC1/SC7/WG26が、ISO/IEC/IEEE 29119を書いている。
・ISO/IEC/IEEE 29119には既にISとして発行されているPart1~5があり、今後複数のISやTRの発行が予定されている。

本稿を読んだことで、少しでも国際標準へのハードルが下がり、国際標準を読んでみようと思っていただければ幸いです。

<参考文献>

  1. [1]https://www.iso.org/standard/45142.html
  2. [2]Reid,S.(2012). "The New Software Testing Standard". In Dale, C.; Anderson, T.(eds.). Achieving Systems Safety: Proceedings of
    The Twentieth Safety-Critical Systems Symposium, Bristol, UK, 7-9th February 2012. Springer Science & Business Media. pp.237-56.
    ISBN 9781447124948.
  3. [3]ISO/IEC/IEEE International Standard.2013. "Software and systems engineering --Software testing --Part1:Concepts and definitions,"
    in ISO/IEC/IEEE 29119-1:2013(E),pp.1-64.IEEE.
  4. [4]ISO/IEC/IEEE International Standard.2013. "Software and systems engineering --Software testing --Part2:Test Processes,"
    in ISO/IEC/IEEE 29119-2:2013(E),pp.1-68.IEEE.
  5. [5]ISO/IEC/IEEE International Standard.2013. "Software and systems engineering --Software testing --Part3:Test documentation,"
    in ISO/IEC/IEEE 29119-3:2013(E),pp.1-138.IEEE.
  6. [6]ISO/IEC/IEEE International Standard.2015. "Software and systems engineering --Software testing --Part4:Test techniques,"
    in ISO/IEC/IEEE 29119-4:2015(E),pp.1-149.IEEE.
  7. [7]ISO/IEC/IEEE International Standard.2016. "Software and systems engineering --Software tvesting --Part5:Keyword-driven testing,"
    in ISO/IEC/IEEE 29119-5:2016(E),pp.1-69.IEEE.
  8. [8]https://www.jisc.go.jp/cooperation/wto-tbt-guide.html
  9. [9]https://www.jisc.go.jp/international/index.html
  10. [10]https://www.associationforsoftwaretesting.org/2014/09/05/the-iso29119-debate/
  11. [11] https://www.ipetitions.com/petition/stop29119
  12. [12]https://qualab.jp/category/29119/
  13. [13]https://www.jisc.go.jp/international/iso-tc.html
  14. [14]https://standards.ieee.org/content/dam/ieee-standards/standards/web/documents/other/iec_ieee_coop.pdf
  15. [15] https://www.iso.org/organization/11326.html
  16. [16]https://www.iso.org/committee/45086.html
  17. [17]http://jasst.jp/symposium/jasst14tokyo/report.html
  18. [18]https://www.iso.org/deliverables-all.html
  19. [19]https://www.iso.org/stage-codes.html
  20. [20]https://www.iso.org/standard/79016.html
  21. [21] https://www.itscj.ipsj.or.jp/faq/index.html#faq_10
  22. [22]https://www.itscj.ipsj.or.jp/katsudo/