テストと仕様書「仕様書は一側面である」という前提に立ったテスト活動

1.はじめに

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

2

1.はじめに自己紹介

検証エンジニア

蛭田恭章

HirutaYasuaki

株式会社ベリサーブ
URL:http://www.veriserve.co.jp

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

3

1.はじめに発表概要

ソフトウェアの品質確保の視点を、「バグの作り込みがない」と、「利用時の期待に応える」の２つと考えた時、仕様書に沿った開発、テストだけではそれを達成するのは難しい

その理由は、仕様書は一側面を捉えたものであり、開発者や利用者に起因する懸念事項を全て確保できているとは限らないからである



それらを補う取り組みとして、開発工程での「仕様書レビュー」、テスト工程での「仕様書をベースとしないテスト」の２つの活動を説明する

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

4

1.はじめに発表構成

 仕様書の現状
 仕様書レビュー活動
 仕様書をベースとしないテスト

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

5

2.仕様書の現状

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

6

2.仕様書の現状

そもそも仕様とは何だろうか？

仕様 = 要求の実現手段（機能等）を定義したもの
仕様書 = ユーザー要求・要件を開発者が実現するために作成した文書
要望

要求

要望・要求 → 開発要件
開発要件 → 機能仕様
仕様書

システムの利用者（ユーザー）の声
開発設計者

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

7

2.仕様書の現状

ソフトウェア開発における仕様書
仕様書には、開発者が要求を実現する手段を記載
満たすべき要求• ユーザー要求（直接）• オーナーの要求• ユーザーの暗黙要求

実現する手段• システム構造/方式• プロジェクトの制約• 開発体制の考慮

近年は、その難しさが増している・・・

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

8

2.仕様書の現状

要求が多様化している

多くのユーザが多くの期待を持つ様々なユーザが様々な使い方をする

要求を満たすための構造・制約事項は複雑化

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

9

2.仕様書の現状確保しなければならないソフトウェア品質

品質確保は、暗黙の要求事項
高い安全性が求められる安心できるシステムの実現

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

10

2.仕様書の現状「仕様書」の世界も限られている仕様書には要求の実現手段としての機能が記載される
うまく機能する場合を中心に説明するのが精一杯…

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

11

2.仕様書の現状

このような状況における開発の課題とは・・・
大事な点を漏らしてはいないだろうか？

期待に応える製品が作られるであろうか？
Copyright © 2016 Veriserve Corporation. All Rights Reserved.

122.仕様書の現状

理想的な品質確保と４つのアプローチ

不足点がないコンセプト探索

利用の世界

利用サポート要求

②

要件定義

仕様の世界

仕様レビュー
基本設計

詳細設計

SWの世界

受入れテスト④
仕様書①

システムテストテスト実施③

バグを作り込まない

結合テスト

単体テスト
コンポーネントテスト

テスト工程

開発工程
コーディング

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

13

2.仕様書の現状

こうした背景でテストチームに期待されるもの
テストの知見から仕様書上の問題点を検出できないか

仕様レビュー

仕様書

テスト実施

①

仕様書

③

バグを作り込まない
あの機能の動作も考慮しないといけないのでは？

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

14

2.仕様書の現状

こうした背景でテストチームに期待されるもの
仕様の世界に限らず品質向上を促すことができないか
仕様書の周辺領域（利用シーンなど）

不足点がない仕様書④②
仕様レビュー

仕様書

テスト実施

仕様書を観るだけでなく、仕様書の周辺からも観てみよう！

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

15

2.仕様書の現状

取り組みは「開発工程」と「テスト工程」とで２つ！
仕様書レビュー活動

仕様書をベースとしないテスト

開発工程での取り組み

テスト工程での取り組み

①

②

③

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

④

16

3.仕様書レビュー活動
Copyright © 2016 Veriserve Corporation. All Rights Reserved.

17

3.仕様書レビュー活動

仕様書レビューでやりたいこと不足点がない利用の世界①
仕様をソフトウェアで実現する際のバグの作り込みを抑える

②

仕様の世界

SWの世界

仕様書
①

②
利用の世界を考慮したときに仕様に不足している点を補うバグを作り込まない

開発工程

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

18

3.仕様書レビュー活動

レビュー対象となる仕様書

要件定義書（要求仕様書）

機能仕様書

共通フレーム2013より抜粋したソフトウェア開発プロセス図
Copyright © 2016 Veriserve Corporation. All Rights Reserved.

19

3.仕様書レビュー活動

仕様書レビューでは「仕様」 と「文書」を区別する
仕様書は物体としては１つだが、確認内容としては別になる実現手段として決めたことの確認

決めたことの記述の確認

仕様書
（文書）

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

20

3.仕様書レビュー活動

仕様の「誤り」だけでなく「予兆」も指摘する


誤り：そのまま設計・実装したら不具合となるもの



予兆：設計・実装において不具合を作りこみそうなもの

誤り

予兆
この辺りが虫歯になりそうなのでしっかり歯磨きしてください！

このままいくと虫歯になるので治療しちゃいましょう！

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

21

3.仕様書レビュー活動

仕様書レビューでやりたいこと不足点がない

利用の世界

仕様の世界

SWの世界

仕様書
①

①
仕様をソフトウェアで実現する際のバグの作り込みを抑える②
利用の世界を考慮したときに仕様に不足している点を補うバグを作り込まない

開発工程

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

22

3.仕様書レビュー活動

バグの作り込みを抑える指摘事項

書

仕様（文書）
目的未達成

用語の不整合非対称性

記述内容の重複・漏れ（MECEの逸脱）

一般との相違指示語

仕様としての曖昧さ

抽象的な表現など

定性的な表現など

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

23

3.仕様書レビュー活動

ツールによるレビューで効率化を図る

開発ドキュメント
検証サービス

複数の表現や構成に関するレビュー観点をツールにより検出

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

24

3.仕様書レビュー活動

テストの立場で特に期待される点

曖昧さに気づく視点 テスト担当者は曖昧な仕様ではテストできないため、気づきやすいという期待 動作前提が不明確、振る舞いが不明確



機能の関連性の視点
 テスト担当者はすべての機能を知っているという期待 入力と出力の関係性、複合動作の関連性、機能間の動作の整合性

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

25

3.仕様書レビュー活動

仕様書レビューでやりたいこと不足点がない利用の世界①
仕様をソフトウェアで実現する際のバグの作り込みを抑える

②

仕様の世界

SWの世界

仕様書

②
利用の世界を考慮したときに仕様に不足している点を補うバグを作り込まない

開発工程

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

26

3.仕様書レビュー活動

仕様の不足を補う指摘事項

書

仕様（文書）
利用環境の考慮不足
利用状況の考慮不足
利用方法の考慮不足

対象外

振る舞いの妥当さなど

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

27

3.仕様書レビュー活動

テストの立場で特に期待される点

利用状況の視点 テスト担当者は、利用時の条件を抽出するのに長けているという期待

利用者の想いの視点
 テスト担当者は、利用者の視点で振る舞いの妥当性を判断できるという期待

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

28

3.仕様書レビュー活動

利用状況の視点で確認したいこと
様々な状況下での利用者がどんな行動をとるか？
操作目的
接続先

アクション

利用状況
場所

オケージョン

時間

人数

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

29

3.仕様書レビュー活動

利用者の視点で確認したいこと利用者が何を期待しているか？

利用者が望んでないことは？

簡単！

損害…

ストレス…

快適！
楽しい！

使えない…

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

30

3.仕様書レビュー活動「デザイン思考」がより重要になる
世の中の関係性は以下の６つに分けられる
１

４

人と人モノと情報

１５

２

２５

人とモノ

モノとモノ

３
人と情報

３

４

６
情報と情報

６
参考文献：問題解決に効く「行為のデザイン」思考法/村田 智明(著)

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

31

3.仕様書レビュー活動

仕様書レビューのおける現状課題
仕様書レビューの効果測定
仕様書レビュー時の思考プロセスの明確化
指摘事例の蓄積と汎用化・パターン化

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

32

4.仕様書をベースとしないテスト

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

33

4.仕様書をベースとしないテスト

仕様書をベースとしないテストでやりたいこと利用の世界

不足点がない③仕様ベースでは気づきにくい
重大バグの検出
④

仕様の世界

SWの世界

仕様書
③

④
利用者の期待を満たしていない点の提示

バグを作り込まない

テスト工程

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

34

4.仕様書をベースとしないテスト何をベースにしてテストを考えていくか？
本日は、「バグ情報」と「利用者情報」の２種類をテストベースとしたテストについて説明する③
仕様ベースでは気づきにくい
重大バグの検出④
利用者の期待を満たしていない点の提示

バグ情報
過去バグ、市場バグなどのデータ

利用者情報
VOC(Voice of Customer)やSNS上のコメントなどのデータ

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

35

4.仕様書をベースとしないテスト

バグ情報ベースとした重大バグの検出

利用の世界

不足点がない③仕様ベースでは気づきにくい
重大バグの検出

仕様の世界

仕様書

④
利用者の期待を満たしていない点の提示

SWの
世界

③

バグを作り込まない

テスト工程

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

36

4.仕様書をベースとしないテスト

バグ情報ってどんなもの？
過去バグ
 過去テストチームなどで検出した不具合
 発生原因が特定されものは、テストケース改善につながる

市場バグ
 返品やクレームにつながった不具合
 再現不能なものも多く、発生原因を突き止められないものもある

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

37

4.仕様書をベースとしないテスト

バグ情報の特徴
一部の過去バグや多くの市場バグは原因が特定されない仮説を立て発生条件を抽出することが重要！！

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

38

4.仕様書をベースとしないテスト

データ分析からの仮説立てが必要

データ分析
・バグ情報を収集する
・傾向を把握する・対処すべき問題を決める

仮説立て
・問題の原因を考える（仮説）- SW内部要因- SW外部要因

・仮説の確認方法を決める

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

39

4.仕様書をベースとしないテスト

分析により着目すべき要素とその傾向を掴む
発生事象の傾向

発生シーンの傾向• 起動不可になる• 再起動が頻発する• エラーが出続ける
・・・が多い• ネットワークを使っていると～• ソフトウェアをアップデートしたら～・・・が多いCopyright © 2016 Veriserve Corporation. All Rights Reserved.

40

4.仕様書をベースとしないテスト

仮説は内部要因・外部要因の２方向から
環境
システム
HW
ユーザー

SW機能

ユーザー

外部的な懸念内部的な懸念顕在する外部的な条件

顕在する内部的な条件

外部から内部へ

内部から外部へ

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

41

4.仕様書をベースとしないテスト

内部要因はSWの処理や機能のメカニズムに着目
例：処理の流れとリソース(CPUやメモリ）に着目して検討
準備中ランプ点灯条件判定 販売ボタン押下受付

販売ボタン点滅

商品送出ラック決定

マスタCPU

商品送出

ラックCPU（ラックご 販売ボタと）ン用CPU準備中ランプ点灯
条件判定

販売ボタン押下受付
準備中ランプ点灯
条件判定停止準備中ランプの点灯条件を判定する処理の実行と、販売ボタンの押下が同時に発生した場合どうなるか？

販売開始判定ランプ点滅開始（押されたボタン）

商品送出ラック決定

ランプ消灯（他のボタン）
商品送出動作※2015年テスト設計コンテストの成果物一部（テスト対象：自動販売機）

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

42

4.仕様書をベースとしないテスト

外部要因は利用者のフローとその阻害要素に着目
例：利用者のアクションとハードウェアや外部環境に着目して検討
商品取り出し釣銭取り出しユーザによる悪条件

ハードによる悪条件【後プロセスでのイレギュ
ラーな動作・機械の故障を誘発するミス】
・商品取り忘れ懸賞ルーレット待ち

懸賞ルーレット確認

ソフトによる悪条件
懸賞終了
待ち【電源異常】
・停電

懸賞結果
確認

End

懸賞ルーレット処理中に、貨幣を投入したり、停電により電源が断たれた場合はどうなる？

環境による悪条件

ユーザによる悪条件

ハードによる悪条件【後プロセスでのイレギュ
ラーな動作・機械の故障を誘発するミス】
・ルーレットに気付かない【ハードウェア故障】
・ルーレットランプ故障・ブザー故障
・懸賞ルーレット用CPU故障【想定外の操作】・販売ボタン押下・返金ボタン押下・貨幣投入※2015年テスト設計コンテストの成果物一部（テスト対象：自動販売機）

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

43

4.仕様書をベースとしないテスト

GSNを使ったテスト要素抽出の可視化事例
GSN (Goal Structuring Notation)
 システムが達成すべき目的や性質について、その達成を導く方法・思考を可視化する際に用いる記法

http://www.sparxsystems.jp/products/EA/tech/GSN.htm

再起動の発生条件を明確にできる例

市場不具合の傾向から、再起動の報告が多発している再現性は低く、原因は掴めていない

内部要因と外部要因で分ける
発生条件は内部要因にある発生条件は外部要因にある単一処理と複数処理で分ける

ハードウェアとユーザで分ける

発生条件は単一処理にある発生条件は複数処理にある発生条件はハードウェアにある発生条件はユーザにある入力データとアルゴリズムで分ける

状態とイベントで分ける

リソースとHWインターフェースで分ける

ユーザの行動と利用環境で分ける

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

44

4.仕様書をベースとしないテスト

利用者情報をベースとした満足度評価

利用の世界

不足点がない③仕様ベースでは気づきにくい
重大バグの検出
④

仕様の世界

SWの世界

仕様書

④
利用者の期待を満たしていない点の提示

バグを作り込まない

テスト工程

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

45

4.仕様書をベースとしないテスト

利用者情報をベースとしたValidation
 Validationで満足度向上を促したい
 仕様書通りかの確認(Verification)ではなく、操作方法や振る舞いが利用者に価値を与えるものかを評価する
 行動心理学から、利用者が利用する際の特徴を抽出

人は近道や簡便さで選ぶ ⇒ 利用マニュアル通りに操作しない



経験等、知っていることで判断する ⇒ 従来版と同じように動くはずと考える⇒ 利用者の年齢、性別、利用目的の重要性、利用条件等から、満足度は変わる

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

46

4.仕様書をベースとしないテスト

利用者情報からテスト要素を抽出

利用者の傾向満足度向上のターゲット

テスト要素抽出「利用目的」「利用シナリオ」「期待度」の観点で利用者の傾向を把握する• この利用目的における満足度は向上させたい• この利用シーンは救っておきたい

テスト対象
テスト条件
期待値

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

47

4.仕様書をベースとしないテスト

利用目的からテスト対象を抽出

利用者は何をやりたいか？
スマホで外出中でも動画を視聴したい

その時に、必要となる機能や外部環境は？
機能や外部環境：動画アプリ、ネットワーク環境

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

48

4.仕様書をベースとしないテスト

利用シナリオからテスト条件を抽出
ペルソナやユーザストーリーを想定してテスト条件を抽出
利用者

利用場所

利用者の行動外部環境の変化

学生
社会人
シニア

電車内
カフェ
自宅

動画を探す
一時停止する
動画をシェアする

N/Wの切替わり
N/W状況の変化

ストーリー想定にはアローダイヤグラムなどの絵図を描く

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

49

4.仕様書をベースとしないテスト

利用者の期待から期待結果を抽出「良いことがある」と「悪いことがない」は別に考えることが大事！
良いことがある

悪いことがない

画音質がきれい興味のある動画を探しやすい

スマホの電池の減りが速くない
スマホが発熱することがない

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

50

4.仕様書をベースとしないテスト

仕様ベースの動作確認との違い
利用者志向で考えるため、機能を主語とした確認はしない

売り切れ
ランプが点灯する
こと（利用者が）
売り切れであると理解できること

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

51

4.仕様書をベースとしないテスト

仕様書をベースとしないテストにおける課題
仮説出しの精度向上（内部・外部の分析手法）
仮説内容の可視化と仮説立証プロセスのパターン化
満足度向上測定

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

52

5.まとめCopyright © 2016 Veriserve Corporation. All Rights Reserved.

53

5.まとめ

本日のストーリーをGSNで振り返る！

２章

ソフトウェアの品質確保
開発工程とテスト工程で分ける

３章（SWの世界で）バグの作り込みを防ぐための仕様レビュー

ソフトウェアの品質確保の視点を、「バグの作り込みが無い」 「利用時の期待に応える」の２つと考える
仕様書は一側面を捉えたものであり、仕様書に沿った開発・テストだけでは達成できない品質が存在する
開発工程での取り組み= 仕様書レビュー
テスト工程での取り組み = 仕様書をベースとしないテストの２つある仕様レビュー

仕様書をベースとしないテスト「SWの世界」と「利用の世界」
で分ける「SWの世界」と「利用の世界」で分ける（利用の世界での）不足点を補うための仕様レビュー（仕様ベースでは気づきづらい）重大バグを検出するテスト

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

４章（利用の世界での）不足点を提示するためのテスト

54

ご清聴ありがとうございました

写真素材：
https://www.pakutaso.com/
http://www.photo-ac.com/

Copyright © 2016 Veriserve Corporation. All Rights Reserved.

55