不具合と開発現場の実態に基づく テスト分析手法の提案...のテスト条件?...

22
金子昌永 / Masanori KANEKO ( [email protected] ) クラリオン株式会社 技術開発本部 コアソフト開発部 ソフト環境グループ 不具合と開発現場の実態に基づく テスト分析手法の提案 SQiPシンポジウム2015

Transcript of 不具合と開発現場の実態に基づく テスト分析手法の提案...のテスト条件?...

  • 金子昌永 / Masanori KANEKO ( [email protected] )

    クラリオン株式会社 技術開発本部 コアソフト開発部 ソフト環境グループ

    不具合と開発現場の実態に基づく テスト分析手法の提案SQiPシンポジウム2015

    mailto:[email protected]

  • 2 Copyright © 2009‐2015 Clarion Co., Ltd.

    クラリオンにおける主な製品の特徴

    カーナビゲーション, カーオーディオなどの車載機器

    安全運転支援システム

    フルデジタルスピーカーシステム

    モバイルアプリケーション, ウェブサービス

    ソフトウェア品質シンポジウム2015

  • 3 Copyright © 2009‐2015 Clarion Co., Ltd.

    本発表における用語は概ねISTQBに準じます

    テストベース 要求仕様書や設計書などの開発文書

    テスト分析 テストベースを分析するプロセス

    テスト設計 テストケースを導くプロセス

    テストレベル システムテスト,単体テストなどの分類

    テストタイプ ISO25010の製品品質特性に応じた分類

  • 4 Copyright © 2009‐2015 Clarion Co., Ltd.

    研究の動機

    特別な不具合 管理システム

    開発 開発部門 によるテスト

    品質保証部門によるテスト

    市場不具合

    どうすれば 作らずに

    済んだか?

    どうすれば 早く発見 できたか?

    テストに関する防止策の内容が不十分

    上位のテストレベルでないと検出できない

    不具合が多く、中には平易な手順で発生する

    ものもあることが、経験的にわかっている。

  • 5 Copyright © 2009‐2015 Clarion Co., Ltd.

    本研究のアプローチとプロセス

    開発現場

    分析 調査

    必要と推測されるテスト技術

    必要なテスト技術

    手法の考案

    アンケート

    結論

    評価実験 ベテラン技術者 テスト対象機能

    提案手法

    不具合情報

    ソフトウェア品質シンポジウム2015

  • 6 Copyright © 2009‐2015 Clarion Co., Ltd.

    不具合の分析

    特別な不具合 管理システム

    ・・・

    直近50件(2008-2014) ・現象・手順・再現率・原因・再発防止策…など

    番号 テストレベル テストタイプ テスト設計技法 その他、 気づくべきこと

    1 システム 機能適合性 テスト

    状態遷移テスト ・・・・・・・・・・・・・・

    2 統合 性能効率性 テスト

    - ・・・・・・・・・・・・・・

    3 システム 信頼性テスト - ・・・・・・・・・・・・・・

    ・・・

    どうすれば不具合を検出できたか? を念頭に置きながら、

    テストの技術要素を抽出・整理

    ソフトウェア品質シンポジウム2015

  • 7 Copyright © 2009‐2015 Clarion Co., Ltd.

    不具合の分析:その他、気づくべきこと

    これらを何と呼ぶ?

    ISTQB のテスト条件? NGT/VSTeP のテスト観点?

    誤解されやすい, 理解しにくい用語は採用したくない

    むしろエラー推測において着目すべき要素

    不具合が起こりやすい条件

    不具合誘発条件

    状態遷移完了直後

    同じ機能の繰り返し実行

    単一リソースの同時利用

    ファイルシステムの破損

    ボタンの連打・同時押し

    矛盾した複数の入力 重い機能の実行中

    重複したデータ 似ているデータ

    通信路の切断

    特殊なエンドユーザー シーケンスの省略

    ソフトウェア品質シンポジウム2015

  • 8 Copyright © 2009‐2015 Clarion Co., Ltd.

    不具合の分析:推測される弱点

    テストレベル 件数 システムテスト 30 統合テスト 12 コ ンポーネン トテスト

    10

    動的テストでは検出困難

    6

    テストタイプ 件数 機能適合性テスト 27 性能効率性テスト 10 信頼性テスト 5 使用性テスト 2

    テスト設計技法 件数 同値分割法 9 境界値分析法 3 デシジョンテーブルテスト 2 状態遷移テスト 5 制御フローテスト 2

    主にシステムテストレベルにおいて…

    テストタイプの定義や選択に問題がある?

    不具合誘発条件の導出プロセスに問題がある or 存在しない?

    基本的なテスト設計技法を適用できていない?

    テストタイプ 必要 不必要 機能適合性テスト 9 18 性能効率性テスト 9 1 信頼性テスト 4 1 使用性テスト 2 0

    不具合誘発条件の考慮必要有無

    ソフトウェア品質シンポジウム2015

  • 9 Copyright © 2009‐2015 Clarion Co., Ltd.

    開発現場の実態調査:存在する文書の調査

    文書名 現場A 現場B 現場C 要求仕様書などの明文化された テストベース ● ● ●

    テスト計画書 ● ● ● テスト分析・設計に関する文書 ☓ ☓ ☓ テストケース ● ● ●

    ※システムテストレベルを調査対象とした

    テスト分析・設計に関する文書は存在しない。

    テストケースからは、どのようなテスト分析・設計が

    行われたのか読み取ることが困難。

    テストベースの文面を転記した表形式のテストケースが多い。

  • 10 Copyright © 2009‐2015 Clarion Co., Ltd.

    開発現場の実態調査:インタビュー

    質問 A B C Q1:要求仕様書などの文書に直接書かれていない内容がテストされることがあるか?

    ☓ ☓ ●

    Q2:テストタイプの定義と選択はできているか? ● ☓ ☓

    Q3:不具合誘発条件を考えている? ☓ ☓ ☓

    Q4:基本的なテスト設計技法を使用している? ● ☓ ☓

    要求仕様書に書かれていないことを テストする必要があるのですか?

    どのようにテストケースを作ったか なんて、文書に残しませんよ。

    ※システムテストレベルを調査対象とした

    ソフトウェア品質シンポジウム2015

  • 11 Copyright © 2009‐2015 Clarion Co., Ltd.

    課題と解決方針

    1. 品質特性に関するテストタイプの定義・選択が不十分である

    品質特性と公知のテストタイプを考慮し、

    クラリオンにおける標準テストタイプを定義する。

    2. テスト分析プロセスが無く、不具合誘発条件を導出していない。

    3. 基本的なテスト設計技法の活用が不十分である。

    テスト分析のアウトプットとなる文書をどのように書けば良いかを示す。

    その文書をテスト設計書と呼ぶ。

    テスト設計書は表形式で書けるようにする。

    今まで要求仕様書に直接書かれたことしかテストしていなかった

    組織が導入しやすい形とする。

    不具合誘発条件を記載する欄を設ける。

    どの基本的テスト設計技法を使用するか記載する欄を設ける。

    ソフトウェア品質シンポジウム2015

  • 12 Copyright © 2009‐2015 Clarion Co., Ltd.

    標準テストタイプ

    テストタイプ名 概要 要否と理由

    機能テスト 機能仕様に定められた通りに 機能するか?

    ○/☓ …のため

    パフォーマンステスト 各機能の性能が規定範囲内であるか? ○/☓ …のため

    ストレステストストレスをかけたときの性能劣化やクラッシュをどこまで許容するか?

    ○/☓ …のため

    ロングランテスト どれだけ連続稼働できるか? ○/☓ …のため

    フォールトインジェクションテスト

    異常発生時にもできるだけ機能するか? 異常から復帰できるか?

    ○/☓ …のため

    異常原因解析テスト 異常発生時に原因究明に必要な 情報を残せているか?

    ○/☓ …のため

    互換性テスト 旧仕様や旧フォーマット等との 互換性があるか?

    ○/☓ …のため

    ユーザビリティテスト エンドユーザーから見て使いやすいか? ○/☓ …のため

    セキュリティテスト秘匿情報が書き換えられたり 漏洩したりしないか?

    ○/☓ …のため

    JIS X 25010:2013 を基に、社内で協議して決めた。

    ソフトウェア品質シンポジウム2015

  • 13 Copyright © 2009‐2015 Clarion Co., Ltd.

    不具合誘発条件の分類

    状態遷移完了直後

    同じ機能の繰り返し実行

    ファイルシステムの破損

    ボタンの連打・同時押し

    矛盾した複数の入力 重い機能の実行中

    通信路の切断

    特殊なエンドユーザー シーケンスの省略

    これらをテストベースから直接導き出すことは難しい。

    不具合誘発条件のファクター(因子)とは何か?

    HAYST法のラルフチャートを参考に分類

    入力ファクター 10

    内部状態ファクター 12

    外部状態ファクター 3

    アプローチファクター(入力の仕方) 5

    ユーザーファクター 2 ラルフチャートの拡張

    不具合分析結果にある 不具合誘発条件の分布。

    5種のどれかに必ず 当てはまった。

    これらのファクターを まとめて

    テストファクターと呼ぶ

    ソフトウェア品質シンポジウム2015

  • 14 Copyright © 2009‐2015 Clarion Co., Ltd.

    FL表と不具合誘発条件

    テストベース ファクター名 バリエーション

    ○○仕様書 項番 123 パラメータX 0 1 10

    ☓☓仕様書 項番 456 対応フォーマット フォーマットA フォーマットB 非対応フォーマット

    入力ファクター

    アプローチファクター

    関連入力ファクター ファクター名 バリエーション

    ボタン 操作スピード ふつう ゆっくり 急いで

    周辺接続機器 着脱頻度 ふつう 高頻度着脱 つけっぱなし

    5種のファクターごとにFL表を作成し、その具体的バリエーションの中から

    不具合誘発条件を選ぶ。

    例えば、入力ファクターのFL表を作成し、境界値・特異値・無効同値

    クラスに属するパラメータを不具合誘発条件として選ぶ。

    これらのFL表をテスト設計書に含める。

    ソフトウェア品質シンポジウム2015

  • 15 Copyright © 2009‐2015 Clarion Co., Ltd.

    テストタイプ別思考過程による書式

    1. あるテストベースの記述について

    2. どのような機能的振る舞いを期待するのか?

    3. どのようなパフォーマンスを期待するのか?

    4. どのような条件であれば期待通りにならないと予想されるか?

    5. 上記内容をもとにテスト設計する際、どのような工夫が必要か?

    機能テスト・パフォーマンステストの場合

    テストベース

    確認内容 不具合誘発条件 テスト設計技法機能 パフォー

    マンス入力 ファクター

    アプローチファクター

    内部状態 ファクター

    外部状態 ファクター

    状態遷移テスト デシジョンテーブル 制御フローテスト

    の3択

    各ファクターについて 不具合誘発条件を記入する。 無ければ空欄で良い。

    思考過程

    トレーサビリティ

    仕様書の内容 そのままのものと そうでないもの

    ソフトウェア品質シンポジウム2015

  • 16 Copyright © 2009‐2015 Clarion Co., Ltd.

    1機能仕様:1行 ではない場合

    複数の機能仕様から1行分の内容が見いだせることがある。

    ほか、テストベースに記載が無くとも、経験のみから1行分の内容を

    見いだせることもある。

    テストベース

    確認内容 不具合誘発条件 テスト設計技法機能 パフォーマンス 入 ア 内 外

    機能仕様ID1 ・・・であること

    機能仕様ID2 ・・・であること

    機能仕様ID100 ・・・であること

    テストベース

    確認内容 不具合誘発条件 テスト設計技法機能 パフォーマンス 入 ア 内 外

    機能仕様ID 1, 2, 100

    左記機能仕様から読み取れる状態遷移モデルに沿って機能すること

    状態遷移 テスト

    ソフトウェア品質シンポジウム2015

  • 17 Copyright © 2009‐2015 Clarion Co., Ltd.

    アンケートによる評価:手法が受け入れられるか?

    テスト分析を行わないと解決できない問題が現場に存在しており、

    提案手法によって解決できると期待されている。

    しかし、実践のための能力と工数が不足していると考えられている。

    問題を 認めない

    解決策の方向性に合意でき

    ない

    解決策が問題を

    解決できると思わない

    解決策を実行すると副作用が生じる

    解決策の実行を

    妨げる障害がある

    未知のことへの恐怖感がある

    抵抗の6階層, 3までクリア

    アンケート対象者

    開発現場の被インタビュー者を含む8名

    ソフトウェア開発経験9年~23年のベテラン技術者

    抵抗の6階層※を参考に(※八木将計他,XDDPのマフィアオファー, SWEST15)

    設問を作成。回答は4択。(非常にそう思う, そう思う, そう思わない, 全くそう思わない)

  • 18 Copyright © 2009‐2015 Clarion Co., Ltd.

    評価実験:従来のテストより優れているのか?

    評価内容

    機能テストに関するテスト設計書の作成、テストケース作成、テスト実施により、

    従来発見できなかった不具合を発見できるか?新たに不具合を発見できるか?

    既存のテストケースからテスト設計書に相当するものをリバースして比較

    テスト対象:カーナビゲーションの音楽再生機能

    実機を手動で操作する、システムレベルのブラックボックステスト。

    テストベース:当該機能に関するソフトウェア要求仕様書

    A4用紙換算82ページ

    評価実施者:1名(開発経験7年, テスト経験1年, JSTQB-FL保有)

  • 19 Copyright © 2009‐2015 Clarion Co., Ltd.

    評価実験の結果

    従来は発見できなかった不具合8件のうち、5件を発見できた。

    新たに2件の不具合を発見。

    テスト設計書行数76件中、従来テストケースと同等でないものは22件

    。 テストベース

    確認内容 不具合誘発条件 テスト設計技法機能 入力

    ファクターアプローチファクター

    内部状態 ファクター

    外部状態 ファクター

    2件の検出に寄与

    無効同値クラス, 境界値が有効。3件の検出に寄与

    アプローチファクターを考慮したテストケ

    ース作成は経験的に行ったため、それ

    は提案手法の成果とは言えない。

    アプローチファクターの導出自体は有効

    不足理由

    入力ファクターの不足 11

    アプローチファクターの不足 5

    状態遷移テストの設計不足 3

    デシジョンテーブルテストの設計不足 1

    内部状態ファクターの不足 1

    テストベース記載項目の漏れ 1

    どの仕様群に どの技法を適用するか考える機会を与えることが有効。 3件の検出に寄与

    ソフトウェア品質シンポジウム2015

  • 20 Copyright © 2009‐2015 Clarion Co., Ltd.

    本研究のまとめ

    開発現場

    分析 調査

    必要と推測されるテスト技術

    必要なテスト 技術

    手法の考案

    アンケート

    結論

    評価実験 ベテラン技術者 テスト対象機能

    提案手法

    不具合情報

    不具合と開発現場の実態調査に基づきテスト分析手法を提案

    アンケートによって現場の期待に沿う手法であることを確かめた

    1機能を対象にした評価実験によって有効性を確かめた

    ソフトウェア品質シンポジウム2015

  • 21 Copyright © 2009‐2015 Clarion Co., Ltd.

    今後の課題と展望

    組織への普及と効果の更なる立証について

    能力と工数に関するネガティブなイメージの払拭

    テスト設計書の作成工数の調査

    テストケースのレビューからテスト設計書のレビューへの変更による効率化

    演習形式の教育

    より多くのシステムや機能を対象とした評価実験による効果の立証

    機能テスト以外のテストタイプに関する評価実験による効果の立証

    提案手法の発展について

    不具合誘発条件を活用したテスト設計技法の確立

    ユーザビリティテスト・セキュリティテスト・互換性テストの取り入れ

    不具合の分析と開発現場の実態調査継続による提案手法の継続的改善

    ガイドワードを用いた手法による不具合誘発条件の導出

    ソフトウェア品質シンポジウム2015

  • 以上です。 不具合の分析に取り組まれている方、 開発現場の調査に取り組まれている方、 テスト分析・設計手法に知見をお持ちの方、様々な方からのご意見をお待ちしております。

    金子昌永 / Masanori KANEKO ( [email protected] )

    クラリオン株式会社 技術開発本部 コアソフト開発部 ソフト環境グループ

    本資料で使用している画像は、クラリオン株式会社が著作権を有しているもの、 および Creative Commons Public License の下に公開されているものです。

    mailto:[email protected]