システムテスト⾃動化の普及・展開に向けた取り組み
2017年10⽉13⽇
株式会社東芝 ソフトウェア技術センター
⼩笠原秀⼈（hideto.ogasawara@toshiba.co.jp）© 2017 Toshiba Corporation

今回の発表で伝えたい事• テスト⾃動化ツールを使わないのはもったいない！
– Ranorex、TestComplete、Selenium、Sikuri、UWSC、etc.
• 昔から、ツール（X-Runner、Win-Runner、etc.）はあったが、失敗の繰り返し。その反省を踏まえて進め⽅を考えよう。

• ツールを使いこなす、テスト実⾏環境を構築するには、テスト技術者が必須！
– リソース（テスト技術者）が確保できなければ⾃動化は難しい• テストから⼊って、開発に深く⼊り込む！ … オフショア– 簡単なツールや機能の開発から始めてシステムの理解を深め、将来的には、コアの部分の開発をお願いするという作戦は、うまくいかない事が多い…

© 2017 Toshiba Corporation2

⽬次
1. テストにおける背景と解決すべき課題
2. テストの⾃動化とツール
3. テスト⾃動化の進め⽅
4. テスト⾃動化の成果
5. テスト⾃動化を推進するためのポイント
付録(1) テスト技術の全体像(2) テスト⾃動化を推進するための環境© 2017 Toshiba Corporation

3

1.テストにおける背景と解決すべき課題
テスト⼯数が増⼤し、減らせない• 時代の変化への対応– スマートデバイスや各種ブラウザでのテスト– 操作性のテスト– セキュリティのテスト– …

• テストを減らせない– そもそも減らない• 製品の品質保証をするうえでは、網羅的にテストを実施し、問題がないことを説明できなければいけない。
– 増やさないと対応できない• シリーズ製品開発の場合、変更の影響が及ぶと思われる箇所を厚くし、その他の部分も変更の影響がないことを確認するため、⼤幅にテストが減ることはない。
• さらに、プラットフォームやブラウザの進化に追随するためにテストが増える。
© 2017 Toshiba Corporation4

解決すべき課題
製品開発において、「テスト⼯数」の増⼤への対応が必須

総合テスト

要求定義

基本設計

現在の開発

結合テスト

詳細設計

結合テスト、総合テスト開発⼯数は削減できていても、テスト⼯数を⼤きく削減できないため、廉価版製品開発などに影響が出る

単体テスト
実装

あるべき姿派⽣開発• IT技術の進化と多様化、ビジネス・技術⾰新のスピードの加速により多量のテストを短期間に⾏う必要あり■課題

要求定義〜単体テスト派⽣開発■背景• ソフトウェア開発のテスト期間とテスト⼯数の⽐率は約30％に達する（※1）①繰り返し⾏うテストによる⼯数の増⼤②テストの抜けもれによる後戻り⼯数の増⼤※1:ソフトウェア開発データ⽩書2012-2013,IPASEC

テスト⼯数を⼤きく削減
し、製品バリエーションに対応した最適な開発を実現する© 2017 Toshiba Corporation

5

システムテスト⾃動化導⼊の阻害要因と解決⽅法
システムテスト⾃動化技術を導⼊するも７割が問題あり（※2）
・導⼊コストが⾼いため⼿作業の⽅が早いと思われる・テストスクリプトの保守コストが⾼い・⾃動化ツールを使いこなすまでに2ヶ⽉以上かかる
・スクリプトの変更割合が多く、管理が難しい

Step1の阻害要因：導入・維持コストがかかり効果が出ない

既存のテスト仕様をベースにテストスクリプトを作成・適用し、その後、複数の製品シリーズに展開して、テスト工数を大幅に削減する

Step1：⾃動化で⼯数を削減する
要求仕様
設計情報
リスク

テスト
仕様

テスト
スクリプト

Step2：抜け漏れないテストを作る
Step2の阻害要因：テスト
仕様に抜け漏れがあり効
率的・効果的に作れない

テスト
結果

テスト
実施

システムテスト
⾃動化プロセス

抜け漏れのないテストスクリプトを効率良く開発・維持し、QCD を満たす開発を実現する
・⾃動化しても不具合の発⾒に繋がらない

Dorothy Graham 2014
※2:Test Automation Problems –Survey results© 2017 Toshiba Corporation

6

前提条件と施策• 導⼊成功の前提条件
システムテスト⾃動化を安定運⽤するには整然としたテスト管理が前提

安定
テスト管理の基本を実践できる

混沌〜2012年代：テスト管理の課題
Excel/Wordで作成
メールやフォルダで共有
⼈⼿で集計

テスト管理ツールTETRAPLUS

バラツキが⼤きく、再利⽤が難しい
過去や最新の状況を確認できない管理⼯数が増⼤

2013〜2016：
テスト管理の安定化• 施策 2016〜：システムテスト⾃動化の取り組みを開始
阻害要因

施策のポイント

施策内容

Step1の阻害要因：導⼊・維持コストがかかり効果が出ない①専⾨家の知識により効率的に⾃動化を導⼊専⾨家による導⼊⽀援、テスト⾃動化ガイド②導⼊・維持コスト削減のための体制を整備

テストセンター活⽤③維持コスト削減のための環境を整備

仕様、スクリプト、実⾏結果の⼀元管理環境を構築（TETRAPLUSを軸に）④再利⽤でき保守しやすいテストスクリプトの開発

テストスクリプト開発技術⑤テスト設計の品質向上のための診断と改善

テストプロセス診断・改善技術（テストプロセ
ス成熟度モデルTPI Nextの利⽤）⑥テスト仕様からテストスクリプトを効率よく作る

テストスクリプト⾃動⽣成技術

Step2の阻害要因：テスト仕様に抜け漏れがあり効率的・効果的に作れない© 2017 Toshiba Corporation

7

テストセンターの活⽤
導⼊・維持コスト削減のためのテスト⾃動化専⾨家育成• システムテスト⾃動化技術を集約し、⽴ち上がりを早くする• テストセンターのリソースを活⽤し、テストスクリプト開発のコスト削減• テストセンターの専⾨家によるテストの充実で品質向上を狙う
テスト⾃動化実装

ベトナム（20名）
ドメイン知識の移転

開発部⾨テストセンター
システム理解⽀援
テスト設計⽀援
テストスクリプト作成⽀援
テスト技術の提供

⾃動テストプロセス整備
⾃動テスト環境の整備
テスト設計⽀援⽀援部⾨
活動の全体設計、運営⽀援© 2017 Toshiba Corporation

8

2. テストの⾃動化とツール• テストの⾃動化とは？
– GUIやコマンド処理を通して操作した場合と同等になるように、ツールで操作を再現することで
⾏うテスト

• 利点
– ⼀時実施した事（テスト）を繰り返し実施できる

Ver.1

Ver.2

Ver.3

自動自動

修正
Ver.1

修正
Ver.2

Ver.3

記録
© 2017 Toshiba Corporation

9テストの実⾏コスト
初回は、テストケースを作成するコストが必要なので、手動テストと比較すると数倍のコストが必要

実⾏コスト

自動テスト
実行回数が多いとコストメリットが大きい
2回目から下がる
手動テスト
2回目以降は、手動テストのコストの数分の1
自動テストの実行コストが0になることはない

1234
実⾏回数

5…

© 2017 Toshiba Corporation

10

テスト⾃動化ツールの選定• 市販ツール、フリーソフトなど、数多くのツールが存在する– テストの⾃動化を進めるために、事前に検討し、準備しておく必要がある• 評価項⽬の例：– 動作環境（OS、ブラウザ、スマートフォン/タブレットなどの対応、ハードウェアのスペック、必要なライブラリ、など）– 価格• 本体価格と保守費は？
• フローティングライセンスでよいか、それともノードロックか？
• ランタイムは必要か？
– テストスクリプトを編集する頻度と作成したテストスクリプトを実⾏する頻度は？
– 安定性（安定して動作するか？）– ⽇本語化（⽇本語化対応しているか？）– スクリプト⾔語（ツール⾃体が出⼒するコードは？ ユーザコードの⾔語は？）– 検証結果の出⼒（検証結果はどのような⾔語、あるいは形式で出⼒されるのか？）– UIの操作（ユーザの操作がどこまで記録できるのか？ 何を記録しているのか分かりやすいか？）– キーボード⼊⼒（特に、記録中にかな漢字変換が安定して使えるか？）– 検証⽅法（実⾏結果を検証する機能はあるか？ 記録後に検証コードを追加できるか？）– スクリーンキャプチャ（スクリーンキャプチャはできるか？ 記録後に追加か削除ができるか？）© 2017 Toshiba Corporation

11

3. テスト⾃動化の進め⽅• テスト⾃動化を推進するためのプロセス
テスト⾃動化戦略策定ステップ
A. ⽬的の明確化

B. ⾃動化対象の⾒極め

C. 体制・ツールの決定

D. ⾃動テス
ト設計

E. ⾃動テスト実装・実施

製品全体のテスト設計© 2017 Toshiba Corporation

12

実践事例
• 対象
– ソフトウェア：システムを監視したり、パラメータを設定したりするソフトウェア– テスト環境：システムを模擬できるテスト環境• A. ⽬的の明確化– 品質保証部⾨によるテスト（1〜2週間／1〜2⼈）を効率化する• 特に、“⼼が折れそうになる（膨⼤で単純な作業の繰り返し）作業” を⾃動化する• B. ⾃動化対象の⾒極め– 単純な繰り返しの作業を効率化する• 例：サブシステム毎に数千件の確認項⽬– ⼿作業でデータをセットし⽬視で結果を確認– 膨⼤なバリエーションの中から合理的に組み合わせのパターンを⽣成し、網羅性を向上させる• 例：スケジュールや確認のタイミングなどを設定しながらテストを実施© 2017 Toshiba Corporation13

• C. 体制・ツールの決定– 体制：開発部⾨、テストセンター、⽀援部⾨による体制を構築– ツール：Ranorex• D. ⾃動テスト設計– オフサイト活動（約10⽇）• ステップ1：ドメインの理解– システムを説明した資料（pptで約70ページ）で学習• ステップ2：テスト対象の理解– 取扱説明書（wordで約170ページ）、テスト仕様書（TETRAPLUSで約300件）の内容を確認– オンサイト活動（約10⽇）• ステップ３：システムの動作確認• ステップ4 ：テストスクリプトの開発⽅法の決定– 独⽴性の維持（前処理、後処理の⽅法）– モジュール化する部分の⾒極め、など© 2017 Toshiba Corporation14

• E. ⾃動テスト実装・実施– オンサイト期間中に、約40件のテストスクリプトを開発• テストスクリプトの⽣産性について：– 算出はできるが⽐較できるものではないので、提⽰する際には注意が必要– 最初は⼩さく出発し、どのようにすれば⻑く使えるかという視点で計画すべき– クライアント（Ranorexが⼊ったPC）と信号の送受信を担うPC間の通信⽅法とテストスクリプト実装
⽅法の確認（PsExec.exe を利⽤）
– ⾃動テストの利⽤⽅法と管理⽅法、今後の体制を検討
テスト仕様書例（今回の対象とは違うテスト仕様）
タイトル

チェックポイント

テスト⽅法

成功条件

ブラウザ再読み込み後、指定したフォルダにテ任意のフォルダに登録さスト項⽬が格納されている。
れているテスト項⽬を選
テスト項⽬の 既に登録してあるテスト 択し、メニューより、「格元のフォルダにはテスト項⽬は格納されてい格納フォルダ 項⽬の格納フォルダを変 納フォルダを変更する」をない選択する。表⽰されたフを変更する 更するォルダ選択画⾯にて、別テスト項⽬を移動した後の画⾯で、「ごみのフォルダを指定する箱」という表⽰がでないこと© 2017 Toshiba Corporation15

4. テスト⾃動化の成果• 対象製品：– 社会インフラ系の⼤規模システム• 適⽤期間– 2016年10⽉〜2017年３⽉までの半年間• 特徴：– 製品系列シリーズの最初の開発であり、この開発以降数年間に渡り、シリーズ製品を複数リリースする– シリーズ製品は、ハードウェア構成には⼤きな変更がなく、個別の設置場所毎に⼩規模な仕様変更が⼊る• 今回の適⽤における阻害要因と施策– 阻害要因•⾃動化の⾒極めが難しい

– 施策①
•

⽀援部⾨が導⼊⽀援を⾏い、テスト⾃動化の戦略、計画を策定– 阻害要因•テスト⾃動化の導⼊コストが⾼い•

⾃動化のための体制／プロセスがない

– 施策②
•

テストセンターを活⽤したシステムテスト⾃動化体制・プロセスの整備© 2017 Toshiba Corporation16

施策①の成果
⾃動化対象を⾒極め再利⽤可能なテストスクリプトの開発完了• ⾃動化の向き不向き、再利⽤を考慮したテスト⾃動化対象の⾒極め実施（約50%が⾃動化が有効と判断）– ⾃動化対象の中から他システムの影響を受けにくいテストを選定した1,200件のテストスクリプトの開発完了全体に対するテスト自動化の比率

0500

1000
自動化完了

1500

2000

2500

自動化対象外• ⾃動化対象外のテスト– 外部機器との接続などが必要となるテスト– マイグレーションのテスト– 画⾯の表⽰結果の確認⽅法が難しいテスト（40％white、波形、etc.）– 例外フロー– …
© 2017 Toshiba Corporation17

施策②の成果
⾃動化導⼊によるコスト効果、品質効果を確認• コスト効果– ⾃動化の導⼊により次機種以降、テストコストが30%以上削減⾒込み（図1）– テストセンターの利⽤により初期導⼊コストを40%削減（図2）

40％削減

前機種

今回の開発

手動テストのコスト

次機種

系列展開(1)

自動化初期コスト

系列展開(2)

自動テスト保守コスト

図1 システムテストのコスト推移予測

テストセンターを利用した実績

自部門で自動化した
場合の推測

図2 初期導⼊コストの評価• 品質効果– ⾃動化した部分のテストを⼿動で実施：1週間／⼈ → 3時間で実⾏可能– 毎晩⾃動テストを実⾏。変更に対するデグレードがないことを翌⽇には確認。
© 2017 Toshiba Corporation18

5. テスト⾃動化を推進するためのポイント• テスト技術者は必須– ⾃動化ツールを使いこなす、テスト環境を構築する、開発したテストスクリプトを保守する、といった役割があり、テスト技術者がいないと⾃動化は進められない• ⾃動化をする前に開発は⼤丈夫か？
– ⾃動化しようとしても、肝⼼のソフトウェアが開発途中であったり、品質が安定していないと、どうにもならない。

• テスト環境を事前によく確認しておくこと– ネットワークに接続できず作業が滞ったりツールのライセンスが取得できない、実機がないと動かせない、実機があっても開発やテストで占有されてしまう、OSやブラウザの制約があり想定したツールが使えない、といったことがないか事前によく確認する必要がある。

• 開発プロセスに組込み、周知すること– ⾃動化したテストをどのように活⽤するのかを決め、それを開発メンバに周知する必要がある。例えば、周知が⼗分でないと、ヒューマンファクターにより⾃動化が中断してしまうこともある（⾃動実⾏中に、機器の切断やテスト対象システムの操作が起こり、⾃動化が中断する）。
© 2017 Toshiba Corporation19

• 海外リソース活⽤拡⼤とテスト技術者の育成– 海外リソース活⽤拡⼤の⽅法（今までの経験による）• 深く理解し、広く展開する作戦（▲ or ×）– 製品開発において、周辺機能やツール系の開発が中⼼であり、コアの部分を出せない状態が続く事が多い。結局、コアの部分の開発に移⾏できない。
• 広く理解し、次に深く⼊り込む作戦（○）– システムレベルの環境や動作が分かるので、システムの全体像を把握しやすい。改善提案も出しやすい。ドロドロした開発状況も理解できる。
– テスト技術者の育成とローテーション• テスト⾃動化を推進するためには、⾃動化ツールの活⽤、テストスクリプト開発、テスト設計、テスト環境構築など、さまざまな技術が必要。
– 技術者としてのロードマップを⽰しやすい• テストしやすい設計についても思いを巡らせる事ができるので、設計・開発⼒の向上にもつながる。
– 設計・開発とテストとのローテーションを回しやすい© 2017 Toshiba Corporation20

付録1. テスト技術の全体像
ソフトウェア開発の最後の砦を守る！品質と効率を両立するツール群の提供• テスト資産の蓄積• テストの可視化と選択

SQATP®
• リリース時期の推定• テスト戦略の⾒直し

TETRAPLUS®

システム
テスト

要求分析
アーキテクチャ
設計

統合テスト

運⽤・保守
自動化ツール• 記録して繰り返し実施• デグレードの早期検出

単体テスト

詳細設計

PRISMY®
APTNavi®
• 組み合せ爆発への対処• 合理的にテスト項⽬を削減

実装
静的解析ツール• 不具合を確実に修正• 問題箇所のテスト拡充• 全コードを対象（網羅性の担保）• 危険なコードを検出 © 2017 Toshiba Corporation21

付録2. テスト⾃動化を推進するための環境• 基本的な考え⽅：既存のテスト仕様を活⽤する• 利⽤するツール：テスト管理ツールTETRAPLUS＋⾃動化ツール※ TETRAPLUS の説明 ⇒ 22〜26ページ※ TETRAPLUS と⾃動化ツールの連携イメージ ⇒ 27ページ• ⾃動実⾏の仕組み：継続的インテグレーションツールJenkinsを活⽤© 2017 Toshiba Corporation22

テスト管理ツールTETRAPLUSの概要• 機能– テスト資産（テスト項⽬とその結果）を保管する– 最新のテスト実施状況を表⽰する– 蓄積されたテスト資産をさまざまなビューから可視化する– テスト資産を再利⽤するための仕組みを提供する• ねらい– テスト情報の共有
・曖昧に成りがちなテスト（システム）仕様をチーム全体で共有– リアルタイムなテスト進捗の確認
・最新のテスト状況を分かりやすく、⼿早く確認・ボトルネックの追跡が容易– テスト管理作業の軽減
テスト結果の収集→グラフ化作業を⾃動化

Web+DataBaseによりテスト項⽬とテスト結果を⼀元管理する© 2017 Toshiba Corporation23

TETRAPLUSのユーザインタフェース
コマンドビュー

ツリービュー

メインビュー© 2017 Toshiba Corporation24

テスト項目タイトル(必須)、優先度、チェックポイント、テスト方法、成功条件、テスト環境、タグ、特記事項、添付ファイル
全ての項目を埋める必要はない。PJで必要な項目だけ登録。

© 2017 Toshiba Corporation25

テスト結果
実施日、結果、不具合登録、バージョン、登録者、内容、添付ファイル、機種、工数、スケジュール© 2017 Toshiba Corporation26

テスト実施状況の分析• 担当者、⽤途ごとにビューを切り替えテスト状況を確認・分析する

累積不合格 &信頼度推定グラフ

テスト進捗グラフ

ＳＷＩＴＣＨ

テスト実施サマリー

テスト実施カレンダー

テスト一覧表／テスト状況一覧表© 2017 Toshiba Corporation27

TETRAPLUSと⾃動化ツールとの連携仕様、スクリプト、テスト結果を⼀元管理し、可視性・保守性の向上
・TETRAPLUSのIDと紐付けてテストを実装する
ことで保守性を向上

試験仕様

テスト管理ツール
テスト
スクリプト

試験成績書

⾃動テストツール

試験仕様
+
試験結果

・サマリー機能で自動実行の結果を即座に確認

テスト結果 登録者 実施日 バージョン 不具合登録 内容 工数 添付ファイル

試験結果

機種

・TETRAPLUS連係ツールで、試験結果をTETRAPLUSに 登録© 2017 Toshiba Corporation28