見出し画像

A Study on Efficient Software Testing Processes by Covering Arrays and Combinatorial Join

2021年度研究会推薦博士論文速報
[ソフトウェア工学研究会]

画像2

鵜飼 大志
(楽天グループ(株) プリンシパルソフトウェアエンジニア)

邦訳:カバリングアレイと組合せ結合を用いた効率的なソフトウェアテスティングプロセスについての研究

■キーワード
テスト自動化
ソフトウェアテストソフトウェアモデル組合せ爆発
カバリングアレイ

【背景】多様なコンポーネントからなるソフトウェアの効率的テストが困難
【問題】対象システムをモデル化する手段の不在.モデル化に伴うテストすべき組合せの爆発的増加
【貢献】多様なコンポーネントを統一的にテスト可能なモデル化する手法,これに伴う組合せ爆発に分割統治法の適用を可能にする手法の提示

 近年の各種技術の改善に伴い,ウェブUIアプリ等,単純なシステムのテスト自動化は一般化した.一方で,外部への依存が大きなシステムや多様なコンポーネントからなるシステムのテスト自動化は依然として大きな困難が伴い,また単純なシステムやときには単体テストさえ,その達成度(テスト全体の自動化率,テストのバグ検知)には大きな格差がある.これには人材・スキル・予算配分の不足等運営上の問題,各種ツールの機能・汎用性の不足等比較的単純な技術上の要因もあるが, システムの複雑化に伴って必然的に生じ,かつ克服のための根本的対処法が示されていない本質的課題も多くある.考慮するべきシステム動作パターンの爆発的増加,いわゆる「組合せ爆発」と多様なモデルへの統一的適用が可能なモデルベーステスト手法が存在しないことなどである.これらの解決のために本論文が提案した手法を紹介する.

(多様・変容する仕様と組合せテスト) 現代のシステム開発においては開発期間中も仕様・設計の変更は続く.テストは入力値を変えつつ多数設計・実施するため冗長度が高い.仕様変更のたびに多数のケースを手作業で修正することは,実務上大きな問題になる.システムの仕様をモデル化してテストケースを自動生成するモデルベーステスト手法は提案されてきたが,管理限界を超える膨大なテストケースの生成が生じる,あるいはテストすべき対象に提供されたモデルが適合しない問題などがあった.本研究では少数のテストで高い網羅率を実現する手法である「組合せテスト」を,多様なモデルに適用する能力を備えたツール「JCUnit」を開発し,提案した$${^{1)}}$$.

(組合せ結合)さて,信頼できるソフトウェアシステムは部品として再利用され,システムの規模は拡大する.一方,組合せテストの生成は仕様の複雑化に伴い急速に効率が悪化する.また,システム全体のテストケースを一度に生成するのが前提であり,サブシステムごとに生成したテストを統合する仕組みはない.これは組合せテストで用いるデータ「カバリングアレイ」の生成自体は盛んに研究されてきたものの,複数のカバリングアレイを連結して新しいカバリングアレイを生成する手法の研究は進んでいなかったためである.本研究では,組合せテストにおいて「分割統治」を可能とする新しい概念「組合せ結合」を提案し,その実装を示した.

(組合せ結合の性能改善)「組合せ結合」の手法は分割統治法を組合せテストの分野にもたらすが,結合自体に要する計算時間は無視できない.産業規模のソフトウェアのテスト入力はときとして数千に及び,実験結果によれば本手法の効率改善は必須であった.本研究では,テストの強度をいったん低下させてから結合する手法を示してこれを図り達成した.

(提案手法の効果)「JCUnit」を筆者が所属する会社の検索エンジンUIに適用し,自動生成したテストスイートがバグ検出能力を持つことを確認した$${^{2)}}$$.一方,組合せ結合については,組合せ結合を使用しない従来手法に比較して13〜96%の生成速度の向上を行った$${^{3)}}$$.

(まとめ) 本研究は,組合せテストの技法を多様なモデルに統一的に適用しうるテスト自動化手法とそのツールを提示した.それに伴って生じるさらなる組合せ爆発への対処として「組合せ結合」の概念と実現方法,その改良を示し,これにより従来困難であった大規模で複雑な分散システムに対するテスト自動化の系統的手法を示した.また組合せ結合により効率的に発見できるバグの類型と実例を明らかにした.

画像2

■Webサイト動画アプリなどのURL
http://dakusui.github.io/

参考文献
1)https://github.com/dakusui/jcunit
2)Ukai, H. and Qu, X. : Test Design as Code: JCUnit, $${2017}$$ $${IEEE}$$ $${International}$$ $${Conference}$$ $${on}$$ $${Software}$$ $${Testing}$$, $${Verification}$$ $${and}$$ $${Validation}$$ $${(ICST)}$$, pp.508-515 (2017), doi: 10.1109/ICST.2017.58
3)Ukai, H., Qu, X., Washizaki, H. and Fukazawa, Y. : Accelerating Covering Array Generation by Combinatorial Join for Industry Scale Software Testing, PeerJ Computer Science 8:e720 (2022), https://doi.org/10.7717/peerj-cs.720

(2022年5月24日受付)
(2022年8月15日note公開)

ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー
 取得年月日:2022年2月
 学位種別:博士(工学)
 大学:早稲田大学

ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー

推薦文[コンピュータサイエンス領域]ソフトウェア工学研究会
ソフトウェアのコンポーネント内やコンポーネント間における各種の組合せ群を少ないテストケースで効率良く網羅するための被覆配列へ分割統治の考え方を導入し,多様な製品の統一的テスト自動化の仕組みを実現した.国際的に評価されトップカンファレンスや難関雑誌に掲載され,成果は製品開発で利用されている.


研究生活 
 博士課程での研究のきっかけはオープンソースで開発している自作ツールJCUnitが米国の研究者の目にとまり,交流・ICST2017での論文発表に至ったことでした.

ソフトウェア検証の自動化は20年以上前からその利益が喧伝されていたにもかかわらず今なお発展途上です.

従来型のテストで重要だったスキルや考え方はあまり役に立ちませんが,逆に言えば若い方には挑戦のしがいがあり日本がこれから存在感を示せる分野とも考えています.

多くの方に専門として選んでいただくことを願っています.