Technical Information

テストづくりのデジタル化に挑む
~伝統的な技術を先進技術でアップデート~

column-software-test06_hero.jpg

テストづくりにおいて、テストケースを作成する技法やテストの観点を分析する手法がこれまで提案されてきました。しかし、それらがうまく活用されず、アナログなやり方でテストケースを作成している現場も多いのが実情です。そのような背景から、当社ではテストづくりのデジタル化を目指し、テスト技法ツールGIHOZ(ギホーズ)というプロダクトを開発しています。本講演では、GIHOZの開発背景や生成AI等の先進技術の活用も含めたデジタル化への挑戦について紹介します。


※この記事は、『ベリサーブ アカデミック イニシアティブ 2023』の講演内容を基にした内容です。

谷﨑 浩一

株式会社ベリサーブ
プロダクトソリューション事業開発部
谷﨑 浩一 

テストづくりの技術について

■テストプロセスの変化とテストづくりの技術の発展

テストづくりの技術は以前から研究・議論がなされており、古くは1960年代からテストケースを作るための方法としてテスト技法が議論されてきました。

昔のテストプロセスは、テスト設計・テスト実施の2段階で考えられてきましたが、時代と共に「テスト設計」の部分が細分化され、テスト分析・テスト設計・テスト実装を経てテスト実施されるという、4段階のプロセスが検討されるようになりました(図表1)。

テスト設計については以前からテスト技法という伝統的な技術が存在していましたが、プロセスが細分化されたことによって、テスト設計の前段である「テスト分析」に注目が集まり、2000年代からはその手法について盛んに議論されるようになりました。

テストプロセスの変化

出典:ソフトウェアテスト技術振興協会「テスト設計チュートリアルU-30クラス向け2020年度版」を基に当社作成
http://www.aster.or.jp/business/contest/doc/2020_U-30_V1.0.0.pdf
図表1:テストプロセスは2段階から4段階へ細分化されるようになった

■テスト技法の例

ここからはまず、古くから存在する「テスト技法」について説明します。
テスト技法とは、ソフトウェアテストのテストケースを作成するために考案された技法のことで、同値分割法や境界値分析、デシジョンテーブルテスト、状態遷移テスト、ペアワイズ法など、さまざまな技法が存在します。いずれも国際規格(ISO)に定義されており、また書籍などでも紹介され、一般的にも確立された技術になっています。
その中から、代表的なテスト技法について紹介します。

デシジョンテーブルテスト

図表2の左側のような表(デシジョンテーブル)を作り、テストケースを作成する技法です。
デシジョンテーブルを作ることで、テストの入力条件の組み合わせパターンと、それに応じた動作(何が起こるか)を網羅的に整理できて、それによって漏れのないテストケース作成が可能になります。
左側のような表形式でそのまま使われることもありますが、実際には右側のような、より管理しやすい形式に変換して使われることも多いようです。

デシジョンテーブルテストの例

図表2:テストの入力条件とそれに応じた動作を網羅的に整理し、漏れのないテストケースを作成する

ペアワイズ法(オールペア法)

こちらは、テストの入力条件=”パラメータや値”が多数あるものについて、全ての組み合わせを網羅するのでなく、2つのパラメータ間の値の組み合わせを網羅して組み合わせを生成するテスト技法です(図表3)。
テストを行う際にはパラメータ・値が大量になることがあります。全ての組み合わせパターンを掛け算して網羅しようとすると膨大な件数になってしまうため、件数を抑えて組み合わせを作りたい時などに有効です。

ペアワイズ法の例

図表3:決まった基準に沿って、件数を抑えた組み合わせを作成することができる

状態遷移テスト

最後は状態遷移テストという技法です。
これは図表4のような状態遷移モデルを基に、状態の遷移の経路を網羅してテストケースを作成する技法です。
例えば、組み込みソフトウェア開発などの場合、その製品の状態がどのように遷移するか、または状態に応じてどのような操作を受け付けるか、といったテストを網羅的に行う必要が生じますが、こうしたケースで活用されるのがこの状態遷移テストです。
また、組み込みソフトウェア以外でも、例えば画面の遷移を網羅的に確認したい場合などには、こういった技法が活用できます。

状態遷移テストの例

図表4:状態遷移モデルから、状態遷移の経路を網羅するようにテストケースを作成する

■テスト分析手法とは

ここからは、テスト技法の上流に位置する「テスト分析」の技術・手法について紹介します。
テスト分析については、特に日本において盛んに議論されている印象があり、代表的な手法としては、VSTeP(後述)、HAYST法※1、ゆもつよメソッド※2などがよく知られています。
本稿ではこの中から、電気通信大学の西康晴先生が考案されたソフトウェアテストの開発方法論であるVSTePについて簡単にご紹介したいと思います。

※1 HAYST法とは、Highly Accelerated and Yield Software Testingの頭文字を取ったもので、秋山浩一氏らにより考案されたテスト手法です。直交表を用いた組み合わせテストを行うのが特徴です。
※2 ゆもつよメソッドとは、湯本剛氏により提唱されたテスト開発手法です。テスト対象にどんな機能があるか、その機能の何をテストするか、どう確認するかを段階的に分析していくのが特徴です。

■VSTePによるテストづくりの流れ

VSTePは、テスト観点をツリー形式の図でグラフィカルに整理し、テストの全体像を可視化するところに特徴があります。VSTePを使ったテストづくりの流れを以下にまとめます。

  1. テスト観点を洗い出し、テスト観点図を作成します(図表5)。
  2. テスト観点図

    図表5:テスト観点図

  3. テスト観点をもとにテストの種類(テストタイプやテストレベルなど)を決め、テストコンテナを作ります。テストコンテナを並べた図(図表6)を作成し、どのようなテストを、どのような順番で行うのか、テストの全体像を整理します。
  4. テストコンテナ図

    図表6:テストコンテナ図

  5. まとめてテストするテスト観点同士をつないで、テストフレームを作ります(図表7)。テストフレームはテストケースのひな形になります。
  6. テストフレーム

    図表7:テストフレーム

  7. テストフレームに具体的な値を入力し、値の組み合わせを作ってテストケースを作ります。
  8. テストケースの手順を具体化したり、自動化テストコードを作成したりして、テストを実行可能にします。

このうち①~③までのステップがVSTePによるテスト分析の特徴的な部分であり、ここで整理したテスト観点を基に、④、⑤で設計・実装(従来のテスト技法を適用しながら具体的なテストケースを作成する)という流れになっています。

テスト作業の課題とデジタル化の必要性

実際に、ここまで紹介したようなテスト技法、テスト分析手法はどのくらい活用されているのでしょうか。またテストづくりの現場ではどのような課題が生じているでしょうか。

例えば、当社が携わるテストづくりの現場からは、「さまざまなテスト技法を学んだが、どのテスト技法を使えば良いか分からない」、「テスト担当者一人一人が職人になっていて、テストの観点やノウハウを共有できていない」などさまざまな声が寄せられています(図表8)。

テストづくりの現場で寄せられる声

図表8:テスト技法の活用や、プロセス、ノウハウの共有について課題が生じている

また当社が製品開発・テスト担当者に対して行ったアンケートからも「テスト技法や分析手法など伝統的な技術があるにもかかわらず、うまく活用されていない」、「主に表計算ソフトを使った手作業・アナログ作業になっている」、さらには「テストづくりの方法や成果物の型式が属人的になっており、ノウハウの共有や再利用が困難」といった課題が浮かび上がってきています。

これに対して、今現場で求められているのは、「手軽に正確に、テスト技法や分析手法を利用できるツールがあること」、「分析結果や成果物を構造化データで表現することで、テストづくりの作業を自動化できること」、さらに「統一形式の構造化データとすることで、成果物やノウハウの共有、再利用が容易であること」などです。

こうしたことから当社では、伝統的な技術のデジタル化・ツール化を目指し、さまざまな取り組みを進めているところです。

伝統的な技術のツール化 ~GIHOZについて~

その取り組みの一つが、テスト技法ツールGIHOZの開発・展開です。

GIHOZは、各種テスト技法・テスト分析手法を手軽に利用して、ソフトウェアテストの効率化を支援するクラウド型ツールであり、表計算ソフトなどの汎用的なツールと異なり、テスト技法ごとに最適なユーザーインターフェースを提供します。また直感的な操作でテスト技法を正しく利用でき、素早くテストケースを作成できます。

GIHOZは、先に紹介したペアワイズテストや状態遷移テストなど6種類のテスト技法に加え、VSTePをサポートしており、目的に応じてテスト技法・テスト分析手法を選択できます(図表9)。

GIHOZ がサポートするテスト技法・テスト分析手法

図表9:7つのテスト技法とテスト分析手法を、ブラウザ上でどこからでも利用できる

GIHOZ開発においてイメージしたのは「ベテラン職人の使う道具箱」でした。職人が使いたい道具(ツール)がそろっていて、使いたい時にすぐに取り出して使える、というような環境を目指しています。テスト分析手法については専用ツールがほとんどないのが現状ですが、表現の自由度の高いVSTePを採用し、自由度と構造化のバランスを考慮しながらツール化しました。

さらなるデジタル化に向けて

GIHOZについては現在、先進技術を活用したアップデート構想を進めています。
主なポイントは次の3点です。

①未サポートのテスト技法・テスト分析手法のツール化

テスト技法やテスト分析手法については、現在GIHOZがサポートしているツール以外にもさまざまなものがありますが、当社ではこうした未サポートの技法のツール化を引き続き検討しています。

シナリオテストのツール化もその一つです。
ツールの構想としては、図表10のように、ユーザーが行う操作と、それに応じたシステムのアクションをフロー図にして整理し、この中から経路を指定することで右側のようなシナリオを抽出していくものになります。
現状では、表計算ソフトでフロー図を作り、そこから手作業でシナリオを書き出しているケースが多いようですが、当ツールでは、フロー図からシナリオ書き出しまでを一気通貫で実行できるところに特徴があります。

シナリオテストのツール化

図表10:現場で使用頻度が高いシナリオテストをツール化

②テスト分析・設計・管理・自動化ツールの連携

各ツール間の連携に関しては、テスト管理ツール(QualityForward)など、当社ツール間での連携を検討しています(図表11)。
また、現在ではテスト自動化ツールの活用も進んでいますが、特にE2Eテスト(エンドツーエンドテスト)を自動化するツールの場合にはテスト内容をシナリオ形式で作成・管理するケースが多いかと思います。こうしたことから、今後GIHOZがシナリオテストをサポートする際には、このようなテスト自動化ツールとの連携も視野に入れていく必要があると考えます。

当社のツール群の連携

図表11:テストの各工程を支援するツール群を連携することで、より効率的にテストを行うことができるようになる

③先進技術の活用:生成AIによるテストづくりの自動化

生成AIの活用についても検討を進めています。

例えば、テスト技法がたくさんある中で、適切な技法を判断するのが難しいという声を聞きますが、このテスト技法の選択にAIが活用できると考えています(図表12)。

AIによるテスト技法の自動選択

図表12:仕様書の文章を入力すると、適切なテスト技法の候補を表示してくれる

また、各テスト技法におけるテストケースづくりについても、生成AIを活用することで効率化を図っていきたいと考えています。例えば、ペアワイズ法におけるパラメータと値、制約式の作成、状態遷移テストにおける状態遷移図の作成なども、仕様書の文書からAIが自動生成する機能を検討しています。

おわりに

本稿では、伝統的なテスト技法、テスト分析手法の特徴と、当社ツールGIHOZの概要、さらに将来的なアップデートのビジョンについて紹介してまいりました。伝統的な技術を先進技術でアップデートし、テスト環境をより効率的に進化させていくことが当社のミッションです。今後もこれらの当社技術とノウハウにより、皆様の開発・テスト環境を力強く支援していきたいと考えています。

この記事をシェアする

Facebook  Twiter