JaSST 04: Japan Symposium on Software Testing 2004

Agenda• はじめに– 事例製品、開発プロジェクトの紹介• 開発特性とテストの種類

電磁界解析 ソフトウェア JMAG -Studio の– バージョンアップ 開発に依存した問題とは– 機能構成の確認– 過去不具合の構造化バージョンアップ テスト事例紹介
開発特性、製品特性を考慮した品質改善へのアプローチ• 今後の課題– 形状依存性の問題– 低再現性の問題• まとめ株式会社 日本総合研究所
エンジニアリング事業本部
小川 哲生

目的：
バージョンアップ 開発の特性を、製品テストにどのように 活用するか？
我々の製品、プロジェクトでの事例をご紹介
1

Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

JMAG-Studio の概要

開発プロジェクト概要• JMAG-Studio の概要• 開発履歴– Windows PC 向け 電磁界解析CAEパッケージソフトウェア– CAD Modeling Pre/Post + FEM Analysis Solver– 誕生(version1)から5年。前身のUNIX版含めて20年– 年に2, 3度のバージョンアップ 開発• 開発体制モデル作成

in preparation

電磁界解析

基本的に、前バージョンを基礎にした機能追加の積み重ね
結果描画

version8
version7
version6
version2

Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

3

Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

開発特性からみたテストの組立て

開発特性とテストの種類• 開発プロジェクトの特性を反映した製品特性• 開発特性と過去の品質情報をどこに活かすか？
開発特性を強く意識類似した製品構造、品質特性

プロジェクトの進捗

毎回、類似した開発体制による、積み重ね開発

コード、仕様の複雑化、老朽化

開発特性は意識せず

機能構成確認テスト
機能網羅テスト
過去不具合箇所テスト
ユーザーストーリーテスト

品質保証には、過去の品質情報の蓄積が可能＆不可欠
類似した問題が 発生？

機能構成にズレ？

Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

4

Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved“バージョンアップ 開発”に依存した問題

51

機能構成の確認

過去不具合箇所テスト• バージョンアップによる機能構成のズレ？

• 過去に発生した不具合は、今回も発生する？

– バージョンアップ ごとの段階的機能拡張によって生じる類似機能間の仕様不整合を、機能構成図を用いて仕様テスト段階で検知– 機能網羅テストで検知しきれない潜在的な不具合を効率よく発見するために、過去の不具合情報をもとにテスト設計を行う。
毎度の作り方が同 じなら、

•製品構造上の弱点？

同じような問題が …

•開発プロセス上の問題？

in preparation“似たようなもの”
過去不具合A

過去不具合B

過去不具合C

全く同じテストはさすがに無効…
6

Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

7

過去不具合箇所テスト事例2• 第1段階(失敗例1: 抽象度の問題)• 第2段階(失敗例2: 人の問題)
うっかりミスの”原因”は何？
慣れないA君が作業を担当し、作業が明確でなかったから!

コーディングミス（うっかり）が原因！
似たような”原因”
過去不具合A

過去不具合B

そもそも、まだ関数を定義していなかったからだよ。

新しいテスト項目

Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

過去不具合箇所テスト事例1
その不具合の”原因”は何？

未発見不具合X

似たような”原因”
過去不具合C他のうっかりしそうな箇所を探せ!?

過去不具合A

過去不具合B

過去不具合C

単なる、うっかり、どの問題も、A君が作業していたよ。

コーディングミスだよ

必要な処理を忘れていた

A君はまだそのプログラムに慣れていないし、A君がうっかりしそうな箇所を洗い出せ!?

指示も不明確だったのでは。

あまりにも抽象的過ぎた…

このままでは 、”A君”というツリーになってしまう…
8

Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

9Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

過去不具合箇所テスト事例3

過去不具合箇所テスト事例4• 第3段階(失敗例3: スコープの問題)• 第4段階(成功例：新しいテストケースを獲得)

では、作業が明確ではなかったのはなぜ？

どういう場合に複数箇所でデータを保持しているの？
なぜ、複数箇所でデータを保持していると駄目なの？

あるデータを複数箇所で別々に保持していて、片方への変更を忘れやすい!

あるデータを複数箇所で所持：
しかし一方しか更新せず似たような”原因”
過去不具合A

過去不具合B

過去不具合C

P.exe 内で同一データを複数所持：
しかし一方しか更新せずデータを複数箇所で保持している箇所!?

同じデータを、複数のモジュールで別々に保持している箇所があった 。

過去不具合Aどちらを作業してよいのか分りづらかった。A君でなくても間違えるかも。

だいぶ現実的になったが、もう少し絞り込みたい…

Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

過去不具合B

Q.dll の値をP.exeから参照している：
しかし一方しか更新せず

過去不具合C

P.exeとQ.dll でデータを共有している機能をテスト(2件)作成したテストケースで不具合を発見！
10

Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

112

今後の課題

形状依存性の問題へ…

• 形状依存性の不具合• 形状構造ツリー– 製品で扱うモデル形状を、形状のもつ属性に着目して素単位に分解し、形状に依存した不具合の原因を特定– CAD modeling において、扱うモデル形状に依存した不具合

2体接触
端点-線接触直 線-円弧接触• 低再現性の不具合– タイミング依存（動的問題）– 環境依存（静的問題）– 手順依存（人的問題）– その他

直 線-円接触円 弧-直線接触
円 弧-円弧接触
円 弧-円接触線-線接触
直 線-円弧接触
直 線-円接触円 弧-円弧接触
円 弧-円接触円 -円接触12Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

直線が円弧内側
直線が円弧外側
直線が円内側
直線が円外側
円弧内側
円弧外側
円弧が円内側
円弧が円外側

曲が同じ向き曲が逆向き
外接
内接で円弧が内 側
内接で円弧が外 側
内接
外接
13Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

低再現性の問題へ…

まとめ• 環境依存（静的）問題• JMAG-Studio バージョンアップ開発テスト事例紹介– 過去の不具合から、動作に影響を与える環境パラメータを調査
不具合Aの発 症
環境セット– バージョンアップ 開発の特性を活かした品質保証

Pentium3

1.0

7.0

経年による低再現性のCeleron1.18.0

複雑化と老朽化

問題

1.2

Xeon
jdk

CPU

9.0
DirectX

製品特性etc.

開発特性

品質特性

形状依存性 の問題

同じような現象の不具合は？

潜在不具合

根本原因は？

過去の品質情報の蓄積と活用を重視した体制づくり

未知の環境パラメータとその影響を探索

Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

14

Copyright (c) 2003 The Japan Research Institute, Limited. All Rights Reserved

15株式会社 日本総合研究所
エンジニアリング事業本部
小川 哲生
te-- ogawa@osa.sci.jri.co.jp
tehttp://www.jri.co.jp
http://www.jri.co.jp/pro/pro-- eng/

3