Webアプリのテスト自動化がもたらすビジネスへの効用
株式会社オープントーン 業務ソリューション事業部

2013/05/31 ver1.0

Development, JAVA, .Net, Object Oriented Technique
http://www.opentone.co.jp1

アジェンダ1

はじめにテスト自動化の概要
導入事例を通してテスト自動化の現状
テスト自動化に向けた戦略

まとめ
OPEN TONE Co.,Ltd. All Rights Reserved.

はじめに

2

本講演の流れ弊社実績の中からテスト自動化を導入した事例をご紹介致します。
「自動化ツールの特性」
「自動化の向く/向かないシステム」
「自動化のポイント」
テスト自動化とは、正しく戦略を立てて実施することにより、その効果を発揮するものである。
設計・製造に先立って「テスト自動化」の存在を前提とした戦術作りが欠かせない。
OPEN TONE Co.,Ltd. All Rights Reserved.

テスト自動化の概要

3

テスト自動化とは「テスト自動化とは、テスト支援ツール等を使うことにより、ソフトウェアテストを自動化することである。」※1テストの作業作業を支援するツールの種類

テスト分析

要件管理ツール

テスト設計

状態遷移テストツール など

テスト実装

スタブツール など

コード解析

静的解析ツール など

テスト（自動）実行

テスト自動実行支援ツール など

・・・

・・・

テスト支援ツールは、文字通りテスト自動化の支援をしてくれる。
※1 「Wikipedia - テスト自動化」より引用
http://ja.wikipedia.org/wiki/%E3%83%86%E3%82%B9%E3%83%88%E8%87%AA%E5%8B%95%E5%8C%96※2 NPO法人 ソフトウェアテスト技術振興協会 発行 ASTERテストツールWG 著 「テストツールまるわかりガイド（入門編）」より一部抜粋
http://www.aster.or.jp/business/testtool_wg/pdf/Testtool_beginningGuide_Version1.0.0.pdf
OPEN TONE Co.,Ltd. All Rights Reserved.

状況設定

4

とある企業の会議室…
課題を抱えている顧客企業側担当者
 プロジェクトマネージャ
 プロジェクトリーダー

相談に乗るSI企業担当者

OPEN TONE Co.,Ltd. All Rights Reserved.

登場人物
最近人件費が…。
コストを削減したい5

全力でプレゼンするぞ！
目指せ案件受注！！

テスト自動化・・・。
うまく運用ができるのかな？

OPEN TONE Co.,Ltd. All Rights Reserved.

テスト自動化の概要

6

企業の導入状況
600社以上にアンケートの結果
 テスト自動化を導入済み ＝ 8.5％
 テスト自動化を導入検討中＝ 5.8％

IT業界に限定した場合
 テスト自動化を導入済み ＝ 15.8％

 テスト自動化を導入検討中＝ 6.3％

全業種ではまだまだテスト自動化の導入は進んでいないが、IT業界に関しては、導入済みと検討中を合わせて22.1％がテスト自動化に注目※引用：キーマンズネットのアンケート結果(2013/02/28～2012/03/06)
http://www.keyman.or.jp/at/dev/debug/30004610/

OPEN TONE Co.,Ltd. All Rights Reserved.

戦略 – ツール・役割の決定

メリット
テスト実行のコストを下げる
コードによりテスト項目を記載するので、項目に曖昧さが無くなるテスト実行のコストが少ないので、不具合修正時に、他のコードに影響していない事を確認することが容易問題の再現が容易になる
反復が可能なので、繰り返しテストが自動でできる

7

デメリット
テストコード作成に時間がかかる
繰り返しテストを行うシステ
ムでなければ効果を発揮しづらい無料ツールではサポートがな
く自ら情報を収集する必要がある
導入初期時はコスト・工数面で効果を実感しにくい

OPEN TONE Co.,Ltd. All Rights Reserved.

Cucumber

8Cucumber

OPEN TONE Co.,Ltd. All Rights Reserved.

Cucumber

9Cucumber－http://cukes.info－Ruby
システムの振る舞いを自然言語で記述、実行

人間の理解しやすいテストケース
メンテナンス性Webアプリケーション以外にも対応

OPEN TONE Co.,Ltd. All Rights Reserved.

Cucumber10

シナリオファイル（*.feature）
テスト対象アプリケーションの振る舞いと期待結果
自然言語に近いツールに沿った形式

ステップファイル（*.rb）
シナリオファイルを解析・アプリケーションの操作に変換
DSL(ドメイン特化言語)で記述

OPEN TONE Co.,Ltd. All Rights Reserved.

導入事例

11

例：勤怠システムで5月の勤務実績を見る■シナリオファイル#language: ja
機能: ICタイムリコーダーで、自分の2013年5月の勤務実績を参照する
シナリオ: 勤務実績を参照する
前提 IC勤怠システムにログインしているかつ ”Web勤務表一覧“画面を表示している
もし “対象年月”に”2013年5月”と入力する
かつ "検索"ボタンをクリックする
ならば “現在の表示内容”に“2013年5月”が表示される
かつ “当月集計”が表示される
かつ “検索結果”が表示される

OPEN TONE Co.,Ltd. All Rights Reserved.

導入事例

12

例：勤怠システムで5月の勤務実績を見る■ステップファイル
前提 /^IC勤怠システムにログインしている$/ dologin
End
前提 /^"(.*?)"画面を表示している$/ do |screen|show screenend
もし /^対象年月に"(.*?)年(.*?)月"と入力する$/ do |year, month|fill_in 'txt_searchYearForEmployee', :with => year
select month, :from => 'lst_searchMonthForEmployee'end
もし /^検索ボタンをクリックする$/ doclick_button 'btn_searchForEmployee'end
ならば /^"([^"]*?)"が表示される$/ do |text|
page.should have_content(text)end

OPEN TONE Co.,Ltd. All Rights Reserved.

導入事例

13

実演

OPEN TONE Co.,Ltd. All Rights Reserved.

導入事例

14

気を付けるポイント「○○に値を入力する」「○○ボタンをクリックする」

○○が容易に特定できないラベル

CSSセレクタ（id, class, nameの指定...)書式や文言の統一

OPEN TONE Co.,Ltd. All Rights Reserved.

導入事例｜規模

15

導入したシステムの規模
No.

機能名

テストケース数

12345678
91011

トップメニュー
管理者メニュー
更新系機能1
更新系機能2更新系機能3
アップロード機能
ダウンロード機能
その他機能
マスタ機能1
マスタ機能2
マスタ機能3合計

21106
146844
322
159
1,440
314763
138
154,268機能数 ：11
ケース数 ： 4,268
ステップ数：90,170

OPEN TONE Co.,Ltd. All Rights Reserved.

導入事例｜コスト16

テスト工数推移
400
350

6回目以降は手動テストより、自動テストの方が累計の工数が少なくなる。

300(工 250
数200人
日 150

手動テスト

自動テストでは、初回は導入コストが大きく発生

自動テスト)

手動テスト 累計
自動テスト 累計100500
1 回目

2 回目

3 回目

4 回目

5 回目

6 回目

7 回目

8 回目

9 回目

10 回目

【前提事項】
・テスト工程のみの工数です。テスト環境構築や納品ドキュメント作成、仕様確認等の作業工数は含みません。
OPEN TONE Co.,Ltd. All Rights Reserved.

戦略

17

目的の明確化

自動化対象の見極め

ツール・役割の決定

テスト設計

テスト実装・実施
OPEN TONE Co.,Ltd. All Rights Reserved.

戦略 – 目的の明確化

18

ポイント
何のために自動化をするのか
人件費削減品質向上
作業効率の向上

どこまでを自動化するのかいつまでに自動化するのか
OPEN TONE Co.,Ltd. All Rights Reserved.

戦略

19

目的の明確化

自動化対象の見極め

ツール・役割の決定

テスト設計

テスト実装・実施
OPEN TONE Co.,Ltd. All Rights Reserved.

戦略 – 自動化対象の見極め向いている操作が単純仕様が安定しており、大幅な改修が発生する見込みが小さいひとつのシナリオに対して複数パターンのデータを用いた検証を繰り返し行う

20

向いていない複雑な操作・シナリオ

前提条件が多い (外部/内部)

仕様が安定していない
一度しか行わない

OPEN TONE Co.,Ltd. All Rights Reserved.

戦略

21

目的の明確化

自動化対象の見極め

ツール・役割の決定

テスト設計

テスト実装・実施
OPEN TONE Co.,Ltd. All Rights Reserved.

戦略

22

ツール・役割の決定
ツールの決定を左右する要素
 開発言語、既存プログラムの品質、学習容易性...など

テスト設計
テスト分析（目的、対象、範囲、リソース...など）
テスト方法（実行方法、項各基準、エビデンス...など）
テストケース作成

テストケースに従って実装実装難易度は使用するツール、対象プログラムによって差異がある
OPEN TONE Co.,Ltd. All Rights Reserved.

まとめ

23

テスト自動化について正しく理解することメリット・デメリット
自動化に必要なイニシャル(体制構築・導入教育)コスト/ ランニング(自動化に用いるリソースの管理)コスト
テスト自動化に向いているプロジェクト、テスト工程自動化の目的を改めてじっくり考えて見る事
他に手段はないか？本当に自動化で解決するのか？

OPEN TONE Co.,Ltd. All Rights Reserved.

まとめ

24

開発に着手する前段階でのテスト自動化を検討しているようであれば、予めテスト自動化を開発工程に取り組んでしまうこと「チームの傾向として毎回テスト実施の工数が膨らんでしまっているから、今回は自動化を前提としたTDD(テスト駆動開発)で開発してみよう」

「テスト自動化を見据えて、コーディング規約はそれを前提にしたものをしっかりと作らないといけないな」

OPEN TONE Co.,Ltd. All Rights Reserved.

ご案内

25

「テスト自動化」をテーマにしたミニセミナーを計画しています。(予定は未確定ですが、テーマを分けて数回を予定しています)
開催決定の際にご連絡を希望される方は下記メールアドレスにその旨ご連絡頂くか、もしくは本日アンケートの当セッション欄にその旨記載ください。

メールアドレス：ot-sec-bsol@opentone.co.jp

OPEN TONE Co.,Ltd. All Rights Reserved.

26

付録

OPEN TONE Co.,Ltd. All Rights Reserved.

テスト自動化の概要（ツール比較：自動テスト：ブラウザテスト向け）
特色

ベンダー

27

製品名

レポート形式

対応言語・環境

メンテナンス方法

価格

SeleniumHTML

Webブラウザ一般

HTML、Java、C#、Ruby、 ・画面キャプチャ機能
Python・Firefoxプラグイン（Selenium IDE）
・その他Webブラウザのテストツール（SeleniumRC）
・iPhone/Androidを含む複数ブラウザのテスト支援（Selenium Web Driver）

オープンソースソフトウェア フリー（OSS）（Apache 2.0 License）

Cucumber

HTML
コンソール

Webブラウザ一般

スクリプト編集（自然言語＋ Rubyで作られた振舞い駆動開発（BDD）フレームRuby）
ワーク

OSSフリー（MIT License）

anyWarp Capture/Replay

HTMLCSS
Ajax

ツール操作
スクリプト編集
操作記録

・座標認識によるシナリオ作成

日立ソリューションズ¥ 315,000（月額レンタル：15,750）

vTest

HTML

ActiveX
JSP
Servlet

テストスクリプトを編集
操作記録

・データベースのデータテスト（ODBC接続に限る）も可能

エクシズ株式会社¥ 315,000～¥ 47,250,000（ライセンス制）てぷらぱ

画像（PNG）
Excel

SAP

Excel
テストスクリプト編集
操作記録

・エビデンスの自動保存機能

野村総研¥ 1,000,000～

Spirent（iTestシリーズ）

専用フォーマット
HTML/XML
テキスト
各種DB

Flash
ターミナルソフト（Telnet等）
コマンドプロンプトなど

テストスクリプトを編集・スケジューリング機能
・カバレッジ計測機能

東洋テクニカ

要問合せ

QCWing

CSV/HTML

組込系

テストスクリプトを編集

日本ノーベル・組み込み系に特化
・専用ハードによる自動化（ロボットによるボタン操作など）¥ 800,000～¥ 3,800,000

OPEN TONE Co.,Ltd. All Rights Reserved.

テスト自動化の概要（ツール比較：自動テスト：ユニットテスト向け）

28

製品名

レポート形式

対応言語

特色

ベンダー

価格

C++testHTMLPDF
カスタムフォーマット
Visual Studio
Eclipse

C/C++

単体テスト、静的解析、バグ解析など組込系向けの機能が充実

テクマトリックス株式会社

要問合せ

Jtest

EclipseJava

単体テスト、静的解析、バグ解析、カバレッジ計測、脆弱性解析など

テクマトリックス株式会社

要問合せ

dotTest

ツール上 （dotTest）.Net

単体テスト、静的解析、バグ解析、カバレッジ計測、脆弱性解析など

テクマトリックス株式会社

要問合せ

RSpec

コンソール

Ruby

振舞い駆動開発のフレームワーク

OSS

フリー

OPEN TONE Co.,Ltd. All Rights Reserved.

テスト自動化の概要（ツール比較：静的解析ツール）

29

製品名

チェックタイミング

対応言語

特色

ベンダー

価格

Checkstyle

Just In Time（プログラム作成中）Java

Eclipseプラグインとして使用可能
コーディング規約チェックができる※Sunのコーディング規約に基づいたルール群［Sun Checks］がデフォルトで提供

OSS

フリー（LGPL）

PMD

Just In Time（プログラム作成中）

Java
PHP （PHPMD）
Flex（Flex PMD）

豊富な連携 （Eclipse、Emacs、Gel、JDeveloper、NetBeansなど）
コーディング規約、潜在的なバグ（※）をチェックする
手動実行ありルールを定義したXML、検証用実行クラスの作成が必要
コーディング規約チェックを行う

OSS

フリー（BSD）

Find Bugs

コンパイル時Java

Eclipseプラグインとして使用可能
ルール拡張は専門知識（BCEL）が必要

OSS

フリー（LGPL）

Coverity
Quality Advisor

コンパイル時C/C++、C#、Java

担当開発者を紐づける等のワークフロー機能が特色
潜在的なバグ（※）をチェックする。
バグナレッジベースとして使用できる（過去の不具合、類似の不具合検索など）
Android Java対応

Coverity, Inc

要問合せcppcheck

手動

C/C++

潜在的なバグ（※）をチェックする
Eclipse 、Jenkinsのプラグインとして使用可能OSS

フリー（GPLv2）

anyWarp
CodeDirector for
C/C++

要問合せ

C/C++

HTMLレポート、メール通知機能あり
Visual Studio（2010まで）、Eclipseと連携

株式会社日立ソリューションズ¥ 5,250～￥6,300,000※潜在的なバグ（※）： メモリリーク、NullPointer制御、バッファオーバーランなど。

OPEN TONE Co.,Ltd. All Rights Reserved.

テスト自動化の概要（ツール比較：性能・負荷テスト）

30

製品名

レポート形式

特色

ベンダー

JMeter

ツール上

同時アクセス数、連続アクセス数の検証ができる

Jakartaプロジェクト

フリー（Apache License,V2.0）

Load Impact

Webサイト上Amazon EC2サーバから負荷テストを実行する

Gatorhole AB社

10回/$30（毎月5回まで無料）

負荷テストに特化

富士通ミドルウェア株式会社

要問合せ

Load Testingfor Web Application

価格

OPEN TONE Co.,Ltd. All Rights Reserved.

テスト自動化の現状

31

企業の導入状況
凡例

会社数

全体

669

8.5%

5.8%

100名以下

164

1.8%

4.3%

247

6.5%

4.4%

1001名以上

258

14.7%

8.1%

IT製品関連業

303

15.8%

6.3%

製造業(IT関連以外)

180

1.7%

4.4%

流通・サービス業全般

122

3.3%

6.6%

その他業種

64

3.1%

6.3%

従業員規模 101～1000名以下

業種

導入済み

検討中

※引用：キーマンズネットのアンケート結果(2012/02/28～2012/03/06)
http://www.keyman.or.jp/at/dev/debug/30004610/

OPEN TONE Co.,Ltd. All Rights Reserved.

テスト自動化の現状

32

導入企業の対象開発言語の割合
開発言語割合

Java

70.9％

.NET

32.7%

C++

21.8%

C

16.4%

VB

12.7%

COBOL

7.3%

PHP

3.6%

Ruby1.8%

Perl

0.0%

その他

7.3%

80%
70%

プラットフォームに依存せず、ライブラリも多い「Java」での割合が高い

60%
50%
40%
30%
20%
10%

0%
Java.NET

C++.

C

VB

COBOL

PHP

Ruby

Perl

その他

※引用：キーマンズネットのアンケート結果(2012/02/28～2012/03/06)
http://www.keyman.or.jp/at/dev/debug/30004610/

OPEN TONE Co.,Ltd. All Rights Reserved.

テスト自動化の現状

33

導入企業の自動化対象テストの割合
テスト名割合

単体テスト

63.6％

結合テスト

41.8%

性能テスト

40.0%

リグレッションテスト

29.1%

システムテスト

25.5%

性能テスト

18.2%

セキュリティテスト

5.5%

ユーザビリティテスト

1.8%

その他

3.6%

80%
70%
60%

50%

大幅な工数削減が期待できる
ことと、導入の容易性から「単体テスト」と「結合テスト」の割合が高い

40%
30%20%
10%0%※引用：キーマンズネットのアンケート結果(2012/02/28～2012/03/06)
http://www.keyman.or.jp/at/dev/debug/30004610/

OPEN TONE Co.,Ltd. All Rights Reserved.

参考書籍
・継続的デリバリー
・継続的インテグレーション入門 開発プロセスを自動化する 47 の作法・ソフトウェアテスト技法―自動化、品質保証、そしてバグの未然防止のために・Jenkins 実践入門

参考 PDF
・テストツールまるわかりガイド（入門編）(NPO 法人 ソフトウェアテスト技術振興協会)
http://www.aster.or.jp/business/testtool_wg/pdf/Testtool_beginningGuide_Version1.0.0.pdf
・テスト自動化の前に押さえておきたい３つのポイント(日本ヒューレット・パッカード株式会社)
http://www.jasst.jp/archives/jasst11k/pdf/S5.pdf
・2013 Trends in Automated Testing (WORKSOFT)
http://www.worksoft.com/files/resources/Worksoft-Research-Report-2013-Trends-in-Automated-Testing.pdf

参考サイト
・TABOK※. 米国 ATI（Automated Testing Institute）が策定した自動テストに関する知識体系
http://www.automatedtestinginstitute.com/home/index.php
・Martin Fowler による Continuous Integration（邦訳）(オブラブ)
http://objectclub.jp/community/XP-jp/xp_relate/cont-j
・Google Test Automation Conference (Google)
https://developers.google.com/google-test-automation-conference/
・テスト自動化の現状(IT Pro)
http://itpro.nikkeibp.co.jp/article/COLUMN/20120918/423283/?ST=upper&P=1
・ソフトウェアテスト自動化まとめサイト なんでも自動化サイト(wiki)
http://www11.atwiki.jp/autotest/m/pages/14.html
・テストツールとは？(エクシズ株式会社)
http://www.vtest.jp/test_automation_tool/index.html
・テスト自動化について 5 分で分かるまとめ(Ryuzee.com)
http://www.ryuzee.com/contents/blog/3408
・カバレッジについて(個人ブログ)
http://d.hatena.ne.jp/t-wada/20111207/coverage_is_your_friend