1997年1月21日

JaSST‘03
ソフトウェアテストシンポジウム2003 研究発表資料

発表の概要

ダイナミックに操作を補完するテスト自動化について

テスト自動化の問題点
ダイナミックに操作を補完するテスト自動化
自動実行ツール デモ

2003年3月6日（木）富士ゼロックス株式会社
カスタマーフォーカス＆クオリティ統括部
システム検証センター
小坂 史, 山口 聡之

まとめ

1/12

テスト自動化の問題点

テスト自動化の問題点

SWの高機能化 → テスト量が増加

SWの高機能化 → テスト量が増加

近年のSWテストの傾向

近年のSWテストの傾向
SW開発コスト削減 → テスト工数削減

SW開発コスト削減 → テスト工数削減

テストの自動化が 必要
DoProcedure01(xxxx,yyyy)
If(d>m) {Print( “m m m m ” )DoProcedure05(ggg)}
Func

DoProcedure03(xxxxxxxxyyy

for(I=0; I<10; I++) {ｙｙｙｙｙｙｙP r i n t“( xxxxx ”)
C l i c k B u t t o n ( x x x) x
xxxxxx}returnx x x x}
FindWindow(xxxx

テストの自動化が 必要

テスト指示プログラム（テスト対象のUIに強く依存）

DoProcedure01(xxxx,yyyy)
If(d>m) {Print( “m m m m ” )DoProcedure05(ggg)}
Func

DoProcedure03(xxxxxxxx

yyy

for(I=0; I<10; I++) {ｙｙｙｙｙｙｙP r i n t“( xxxxx ”)
C l i c k B u t t o n ( x x x) x
xxxxxx}returnx x x x}
FindWindow(xxxx)

X = 155;
Y = 258;

テスト指示プログラム（テスト対象のUIに強く依存）)

X = 155;
Y = 258;

テスト自動実行

テスト自動化の準備• レコード再生の記録• プログラミング・・・

テスト自動実行

テスト自動化の準備• レコード再生の記録• プログラミング・・・◆テスト現場では、必ずしもプログラミング技術を持っている人ばかりではない。

テストを自動化した場合の問題点

テストを自動化した場合の問題点

・高いプログラミング技術が必要（開発者レベル）
・テスト指示プログラムの流用性が低い
・教育期間が必要であるため、現場の負担が大きい

・高いプログラミング技術が必要（開発者レベル）
・テスト指示プログラムの流用性が低い
・教育期間が必要であるため、現場の負担が大きい

2/12

テスト自動化の問題点

SWの高機能化 → テスト量が増加

近年のSWテストの傾向

近年のSWテストの傾向
SW開発コスト削減 → テスト工数削減

SW開発コスト削減 → テスト工数削減

テストの自動化が 必要

Print( “m m m m ” )DoProcedure05(ggg)}
Func

DoProcedure03(xxxxxxxx

yyyfor(I=0; I<10; I++) {ｙｙｙｙｙｙｙP r i n t“( xxxxx ”)
C l i c k B u t t o n ( x x x) xxxxxxx}
returnx x x x}
FindWindow(xxxx3/12

テスト自動化の問題点

SWの高機能化 → テスト量が増加

DoProcedure01(xxxx,yyyy)
If(d>m) {◆従来のテスト自動化
ツールでは、プログラミング作業が必要。

テスト指示プログラム（テスト対象のUIに強く依存）)X = 155;
Y = 258;

テスト自動化の準備• レコード再生の記録• プログラミング・・・

テスト自動実行

テストを自動化した場合の問題点
・高いプログラミング技術が必要（開発者レベル）
・テスト指示プログラムの流用性が低い
・教育期間が必要であるため、現場の負担が大きい

テストの自動化が 必要
DoProcedure01(xxxx,yyyy)
If(d>m) {Print( “m m m m ” )DoProcedure05(ggg)}
Func

DoProcedure03(xxxxxxxx

yyy

for(I=0; I<10; I++) {ｙｙｙｙｙｙｙ◆テスト指示プログラムには、具体的なGUIの情報（ボタン名、メニュー選択等）や操作方法が記述される。
◆テスト指示プログラムを後継Versionの SW
テスト等に流用しようとしても、テスト対象のUIに強く依存しているため、非常に困難。
4/12

P r i n t“( xxxxx ”)
C l i c k B u t t o n ( x x x) x
xxxxxx}returnx x x x}
FindWindow(xxxx

テスト指示プログラム（テスト対象のUIに強く依存）)

X = 155;
Y = 258;

テスト自動化の準備• レコード再生の記録• プログラミング・・・

テスト自動実行

テストを自動化した場合の問題点
・高いプログラミング技術が必要（開発者レベル）
・テスト指示プログラムの流用性が低い
・教育期間が必要であるため、現場の負担が大きい◆テスト自動化ツールを導入するには、ツール使用方法に関する教育が必要。
◆教育内容は難易度の高いものになる（プログラム 文法など）。
◆現場の負担は大きい。

5/121

1997年1月21日

テスト自動化の問題点

テスト指示書によるテスト実施
手作業によるテスト実施

SWの高機能化 → テスト量が増加
近年のSWテストの傾向
SW開発コスト削減 → テスト工数削減

テストオペレータが意 識せ ず行 う操 作

テスト指示書最終的に設定すべきテスト手順（テストの要点）が記述されている

テストの自動化が 必要
DoProcedure01(xxxx,yyyy)
If(d>m) {Print( “m m m m ” )DoProcedure05(ggg)}
Func

DoProcedure03(xxxxxxxxyyyfor(I=0; I<10; I++) {ｙｙｙｙｙｙｙP r i n t“( xxxxx ”)
C l i c k B u t t o n ( x x x) xxxxxxx}
returnx x x x}
FindWindow(xxxx

文書を閉じる設定

テスト指示プログラム（テスト対象のUIに強く依存）)

X = 155;
Y = 258;

出来るだけ今までのやり方を崩したくない！

テスト自動実行

テスト自動化の準備• レコード再生の記録• プログラミング・・・

テスト文書を開くまでの手順

アプリケーション

Word2000日本語版

テスト文書

testdoc.doc

部数4

ファイルダイアログを開く

解像度(dpi)

600

出力用紙サイズB4

解像度設定までの手順

用紙の向き

よこ

プリンタプロパティを開く

部数設定までの手順
印刷ダイアログを開く※弊社プリンタのシステムテストのテストケース例

出力用紙設定までの手順

テストを自動化した場合の問題点

タブをクリック・高いプログラミング技術が必要（開発者レベル）
・テスト指示プログラムの流用性が低い・教育期間が必要であるため、現場の負担が大きい

プリンタドライバ設定
＆印刷

7/12

ダイナミックな操作の補完

本研究におけるテスト自動実行

pre

ユーザ操作・補完操作 の構造
ツール が手 順を補完 する

ユ ー ザが Toolに 入力

テスト文書を開くまでの手順

設定
Word2000日本語版
testdoc.doc

部数

4

解像度(dpi)

600

出力用紙サイズ

B4

用紙の向き

よこ

※弊社プリンタのシステムテストのテストケース例

ユーザ操作

ダイナミックに操作を補完

テスト指示書

テスト文書

Ｘ

6/12

テスト指示書によるテスト実施

アプリケーション

タブをクリック状態x

pre state：操作するのに必要な状態

補完操作
post 状態ypost state：操作後の状態変化

status a

文書を閉じるpreファイルダイアログを開く

c

ユーザ操作

状態aでユーザ操作を指定した

部数設定までの手順
印刷ダイアログを開く

ユーザ操作は、pre state でcを要求

status a

解像度設定までの手順

pre

プリンタプロパティを開く

補完操作 1
postタブをクリック
出力用紙設定までの手順

ab

preb

補完操作 2
post

prec

ユーザ操作

cになるための補完シーケンスを構築c

補完シーケンス

タブをクリック

status a

補完操作

pre

status ba

補完操作１
post

8/12

b

補完操作を実行していく

status c
preb

補完操作２
postc

prec

ユーザ操作

補完操作をする実行するたびに、補完シーケンスをダイナミックに再構築
9/12

補完シーケンスの再構築
補 完 シーケンスの 再 構 築

ユ ー ザ操 作の 指定
status c
prea

ユーザ操作

status cstatus d

preprec

補完操作

補 完 シーケンスの 構築

poststatus c
pre

post

prea

ユーザ操作

a

実行済

c

pre

補完操作
postd

補完操作

bb

b

補完操作
post

prea

ユーザ操作

③状態dから状態aになる補完a

シーケンスを再構築しながら実行する。

テスト自動化ツールデモ

補 完 シーケンスの 実行status dstatus cstatus b

pre

prec

補完操作
postb

①実行b

補完操作
post

a

②期待する状態bではなく状態dになった

prepost
prea

ユーザ操作

pred
pre

補完操作
ad

postｂ

補完操作

補完操作 post
preｃ
posta
補完操作

aｂ

10/12

11/122

1997年1月21日

Appendix-- A 作成工数と導入率
Appendix

発表のまとめユーザ
簡単入力
設定
アプリケーション
テスト文 書Word2000日 本 語版
testdocument.doc

部数

4解像度(dpi)

600

出 力 用 紙サイ
用紙のズ向きB4

テスト指示書よこ

従来の自動化ツール

・テスト指示書を簡単に作成可能
自動生成 ・
テスト指示書の再利用性が高い
UI情報
・ダイナミックに操補完操作
作レベルの差換えができる
UI Capture
Tool

自動実行Tool
ダイナミックに操作補完

操作のRecord

100

ユーザ操作数72補完操作数

36

テストケース数

128

データ作成工数(単位:人日)

1.5

DoProcedure01(xxxx,yyyy)
If(d>m) {Print( “m m m m ” )DoProcedure05(ggg)

ユーザ}
Func

DoProcedure03(yyyxxxxxxxx
for(I=0; I<10; I++) {ｙｙｙｙｙｙｙP r i n t“( xxxxx ”)
C l i c k B u t t o n ( x x x) xxxxxxx}

導入率(単位 : % )本研究における自動化ツール

80
60
4020

returnx x x x}
FindWindow(xxxxX = 155;

プログラム修正)

0Y = 258;

プリンタのシステムテストにおける作成工数

2 0 0 0年

2 0 0 1年

2 0 0 2年

弊社プリンタのシステムテストへの導入率

自動実行（Replay）
・プログラミング技 術が 必要
・再 利 用は困 難・レコードした通 りにしか 実行
できない
12/12

Appendix-- B テストへの適用範囲
Appendix
PC
自動化ツール
操作対象SW

13/12

Appendix-- C 応用例
AppendixB.↓テスト対象

UI Capture
Tool

結果が残る

GUI 状態遷移
Capture（印 刷 物、メール送信 など）

A.↑テスト対象

対象SWのほぼ全ての状態遷移
情報◆Windowsの操作方法の常識の範囲で予測できる仕様
・タブクリックでタブシートが出る、・ボタンクリックでダイアログが出る
等・・・[タイプA]
コントロールの標準的な反応を、補完操作として自動生成→標準的な反応のテストはできない。
コントロール間（機能間）の禁則は、補完操作を生成していない→禁則に関するテストが可能。

◆SWの仕様書で確認しないと予測できない仕様
・トレイ1に設定しているとA3に設定できない・ズームが100%以外の時に2upは設定で14/12 きない
等・・・

ユーザ

仕様確認（対 話）

網羅実行

15/12

3