ソフトウェア実行情報を活用した回帰テストの自動化
倉林利行†1

テスト品質を保ちながら回帰テストの稼働の大幅削減を実現する方法について議論する.

Regression Testing Automation
based on Software Information Analysis
Toshiyuki KURABAYASHI†1
The authors would like to discuss on how to reduce the manual works of regression testingwith keeping test quality.

1. は じ め に
ソフトウェア開発の半数以上を占める保守改造案

図1

回帰テストのタスクフロー

件1) では, 保守・改造のたびに行われる回帰テストの稼働削減が求められている. 回帰テストは従来機能のシナリオに沿ってテスターが人手で実行する.

劣化の有無を確認するためのテストである. 本ワーク(d) 合否判定について

ショップにおいては, テスト品質を保ちながら回帰テ

本タスクではテスト実行によって得られた結果（画ストの稼働の大幅削減を実現する方法について議論し面結果や DB の値など）に基づいて, 合格または不合たい.

格を判定する. 回帰テストの場合はデグレードの有無

2. 従来の回帰テスト実行方法
回帰テストは通常, 図 1 のタスクフローで行われる.

(a) テスト環境準備についてテストを行う上で必要となる環境（ハードウェの確認が目的となるので, 以前のバージョンと今回のバージョンの結果を比較し差異がなければ合格とする.

3. 着目する回帰テストのタスク
本ワークショップでは回帰テストの稼働削減を目指

ア,OS,DB,NW など）を準備する.

しているため, 回帰テスト全体の稼働削減に最も寄与(b) テストケース準備についてする (b) テストケース準備に着目する. テストケー

本タスクでは (c) テスト実行において必要なテストス準備の効率化に対する需要は高いが, 現状では支援ケースの準備を行う. テストケースはテストシナリオ,ツールの使用率は１割程度である2) . テストケース準

入力値, 事前条件, 期待結果などを含む. 実行するテス

備に対する実用的な支援技術を樹立できれば, 回帰テトの数を減らしたい場合は前回開発で仕様したテストストの稼働削減が狙える.

ケースに基づいてテストケース選定を, テスト実行を回帰テストの稼働を削減するために, テストケース自動化したい場合はテストスクリプトの作成を行う.

準備で行える工夫として「テストケーススクリプト(c) テスト実行について化」という方法が存在する. 本手法では準備したテス

本タスクでは, テストケースに書かれたテストを実トケースをスクリプト化することによってテスト実行行する. テストケース準備のタスクにてテストスクリのタスクを自動化し, 稼働を削減することが狙いであプトが用意されている場合はスクリプトを実行し, 用る. テストケースには入力値や事前準備する入力以外意されていない場合はテストケースに書かれたテストのデータの値とテスト実行の手順の情報が記載されている. これらをすべてスクリプト化することで, テス†1 NTT ソフトウェアイノベーションセンタNTT Software Inovation Center

ト実行の自動化が可能になり, 回帰テストの度に使いまわすことができる.
1 で表される.
上記の方法は図 2 の⃝4. テストケーススクリプト化の課題と原因
4.1 課

題

テストケーススクリプト化は必ずしも稼働削減に効果があるとは限らないという課題がある. これはテストケーススクリプト化自体に稼働がかかるためである.
具体的には以下の２種類の稼働がかかる.

法によってテストケース準備にかかる稼働は以下のように改善される.
・テストスクリプト作成の稼働
現場に実際に存在する資材（ソースコードや実行ログ）からテストケースをスクリプトの状態で生成するため, 不要となる.
・テストスクリプトのメンテナンスの稼働回帰テストの度に新しいスクリプトが生成されるため, メンテナンスの必要がなく, 不要となる.

・テストスクリプト作成の稼働テストケースは１つずつ手動でスクリプト化する必要がある. テストケーススクリプト化の支援として,Selenium IDE 等の Caprure and Replay と呼ばれるツールが存在する3) . Selenium IDE は, 画面操作を保存し, 自動的にスクリプト化するツールであり, スクリプトを人手で作成する手間を軽減できる. しかし本ツールを用いても, 画面操作自体は人手で実行しなくてはならない上に, ツール操作やスクリプト修正の稼働もかかるため, 稼働のオーバーヘッドが大きい.
・テストスクリプトのメンテナンスの稼働テストケースをすべてスクリプト化した後も, ソフトウェアの改造内容によってはスクリプトがそのまま実行できないこともあるため, スクリプトのメンテナ

図2

従来と提案する回帰テストのフローンスが必要となり余分な稼働がかかる.
上記２種類の稼働により, 一般的に 3 回以上回帰テストを実行して初めて, スクリプト化による稼働削減効果が得られると言われている.

4.2 原因6. お わ り に本ワークショップでは「ソフトウェア実行情報を活用した結合テストレベルのテストケース自動生成によテストケーススクリプト化に稼働がかかる原因は,る回帰テストの稼働削減手法」を提案した. これによ

前回開発のときに作成したテストケースを利用していり回帰テストを少ない稼働で実行することが可能となることにある. 前回開発のときに作成したテストケーる. 本手法によって今まで回帰テストという非生産的スを用いるという前提では, 自然言語かつフリーフォーな作業に費やしていた時間をソフトウェアの新規開発マットで書かれているテストケースを全自動でスクリや新機能追加などの価値創造的な活動に費やすことがプト化することは不可能なため, 支援ツールを利用しできるため, 事業者のサービス開発力が向上し, 社会全ても何らかの形で必ず人の稼働を要することになる.

体が恩恵を受けることができる. 今後は, ソースコー

また前回開発で用いたテストスクリプトを流用していドなどの現場の資材からテストケースを自動生成するるためスクリプトのメンテナンスも必要となる.

技術について検討して参りたい.

5. 提 案 手 法
前章の課題を解決するために本ワークショップでは, 回帰テストにおいて前回のテストケースを用いるという固定概念を捨て, 「ソフトウェア実行情報を活用した結合テストレベルのテストケース自動生成による回帰テストの稼働削減手法」を提案する. ソフトウェ
ア実行情報はソースコードや実行ログのことを表す.
2 で表される. 本提案手
本提案手法のフローは図 2 の⃝参考文献

1) 独立行政法人情報処理推進機構. ソフトウェア
開発データ白書 2014-2015. 独立行政法人情報処理推進機構, 2014.
2) ソフトウェアメトリックス調査 2012
報告書. http://www.juas.or.jp/servey/library/pdf/
12swm.pdf.
3) Selenium ide plugins. http://www.selenium/hq.org/projects/ide/.