SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
組込みソフトウェアの品質の小噺
Gou Sawada
2016/2/9
差分開発の構造
潜在バグ
旧ソフト
新規開発時に見つか
らなかったバグ
差分開発の構造
差分開発
潜在バグ 潜在バグ
旧ソフト
開発
既存のまま
新ソフト
差分開発の構造
差分開発
潜在バグ 潜在バグ 潜在バグ
旧ソフト
開発
既存のまま
新ソフト
新ソフト
の試験
試験範囲
回帰試験
(デグレ)
※漏れることがある
潜在バグは残る
既存機能については、バグは無いことを前提として考えている。
性善説
新規開発時に見つからなかったバグは
潜在バグとして残り続ける
何かの拍子にバグが発現する
※工数が限られているため
既存機能まで再試験する
余裕は無い
どうするか?
新規開発・大規模開発時に徹底的に
バグを潰す
(観点漏れを防止する)
性善説の強化
どうするか?
新規開発・大規模開発時に徹底的に
バグを潰す
(観点漏れを防止する)
性善説の強化
小規模変更物件でも強化試験を行う
(強化試験をやったことが無い物件について)
性悪説への転換
どうするか?
新規開発・大規模開発時に徹底的に
バグを潰す
(観点漏れを防止する)
性善説の強化
小規模変更物件でも強化試験を行う
(強化試験をやったことが無い物件について)
性悪説への転換
どうするか?
※本当にやろうとすると
試験工数は膨大になる・・・
人も時間も無限ではない
品質対策①:機能一覧表を作る
利用する人の特性 装置の設定 操作中の処理 処理実行
大人 日付(年末年始など) → 停電 → 通常
子供 時刻(深夜0::00など) 長時間の放置 不正終了
年配者 場所 他装置からの通信 取消
性別 時刻補正
障がい者 運用モード
頻繁に利用する 設定の時限切り替え
時々利用する(操作に不慣れ)
故障によるフェールソフト
会員
非会員
1人だけの利用
団体での利用
品質対策①:機能一覧表を作る
利用する人の特性 装置の設定 操作中の処理 処理実行
大人 日付(年末年始など) → 停電 → 通常
子供 時刻(深夜0::00など) 長時間の放置 不正終了
年配者 場所 他装置からの通信 取消
性別 時刻補正
障がい者 運用モード
頻繁に利用する 設定の時限切り替え
時々利用する(操作に不慣れ)
故障によるフェールソフト
会員
非会員
1人だけの利用
団体での利用
ソフト変更・試験項目の作成にあたり
システムが持つ全ての機能や要素を書き出す
これらを、変更しようとしている機能と掛け合わせて
影響があるか検討する
品質対策①:機能一覧表を作る
利用する人の特性 装置の設定 操作中の処理 処理実行
大人 日付(年末年始など) → 停電 → 通常
子供 時刻(深夜0::00など) 長時間の放置 不正終了
年配者 場所 他装置からの通信 取消
性別 時刻補正
障がい者 運用モード
頻繁に利用する 設定の時限切り替え
時々利用する(操作に不慣れ)
故障によるフェールソフト
会員
非会員
1人だけの利用
団体での利用
ソフト変更・試験項目の作成にあたり
システムが持つ全ての機能や要素を書き出す
これらを、変更しようとしている機能と掛け合わせて
影響があるか検討する
※実際、機能一覧表を
作ってみたことで
機能の変更漏れを
発見できたことがあります。
品質対策②:状態遷移を意識してテストする
【観点】各シーケンスにて異常動作を発生させた際、
開始釦を押す 取消 挙動に問題ないことを確認する。
機能別キーを押す 取消
確定を押す 取消
エラー
取消 通信待ち
解除
数量入力
取消 確定を押す エラー
取消
強制実行
正常完了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
A
B
C
D
E
F
停電
動作
無効キーを押す
通信エラー
日付跨ぎ
業務終了時刻跨ぎ
・・・
1
2
3
4
5
6
7
10
8
9
12
16
13
14
15
11
品質対策②:状態遷移を意識してテストする
【観点】各シーケンスにて異常動作を発生させた際、
開始釦を押す 取消 挙動に問題ないことを確認する。
機能別キーを押す 取消
確定を押す 取消
エラー
取消 通信待ち
解除
数量入力
取消 確定を押す エラー
取消
強制実行
正常完了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
A
B
C
D
E
F ・・・
動作
停電
無効キーを押す
通信エラー
日付跨ぎ
業務終了時刻跨ぎ
1
2
3
4
5
6
7
10
8
9
12
16
13
14
15
状態×入力の掛け合わせ
で結果が決まる
11
品質対策②:状態遷移を意識してテストする
【観点】各シーケンスにて異常動作を発生させた際、
開始釦を押す 取消 挙動に問題ないことを確認する。
機能別キーを押す 取消
確定を押す 取消
エラー
取消 通信待ち
解除
数量入力
取消 確定を押す エラー
取消
強制実行
正常完了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
A
B
C
D
E
F ・・・
動作
停電
無効キーを押す
通信エラー
日付跨ぎ
業務終了時刻跨ぎ
1
2
3
4
5
6
7
10
8
9
12
16
13
14
15
状態遷移を意識する
分岐の漏れ=試験の漏れ
また、各状態における
異常動作が有り得るか検討する
各遷移が成功した場合ばかり試験して、
失敗した場合の試験をしていない事がある
↓
市場で障害発生!
状態×入力の掛け合わせ
で結果が決まる
11
所感:影響度の判断について
単純にソースコードの変更規模が小さければ、影響度も小さいとはいえない!
(変更による潜在バグの発現、処理順序・タイミングが意図せず変わっていた、
 もう1か所変更しなければならない部分に気付かなかった・・・etc)
所感:影響度の判断について
単純にソースコードの変更規模が小さければ、影響度も小さいとはいえない!
(変更による潜在バグの発現、処理順序・タイミングが意図せず変わっていた、
 もう1か所変更しなければならない部分に気付かなかった・・・etc)
また、小規模の変更であっても、
・担当者が変わった
・前回開発から長期間経過している
などの場合は要注意案件と考える。
ありがとうございました

Más contenido relacionado

La actualidad más candente

Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションMasanori Satoh
 
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCITakafumi Ikeda
 
詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasstkyon mm
 
Startup jenkins!
Startup jenkins!Startup jenkins!
Startup jenkins!Kanu orz
 
テストを書こう!!
テストを書こう!!テストを書こう!!
テストを書こう!!拓 小林
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストTsutomu Chikuba
 
Jenkinsを使った初めての継続的インテグレーション
Jenkinsを使った初めての継続的インテグレーションJenkinsを使った初めての継続的インテグレーション
Jenkinsを使った初めての継続的インテグレーションdcubeio
 
自動テストで開発効率を上げるには
自動テストで開発効率を上げるには自動テストで開発効率を上げるには
自動テストで開発効率を上げるにはWataru Terada
 
Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~Yuta Matsumura
 
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編Kenji Fukumoto
 
SEゼミ2015 - OSS Hack 4 Beginners - フィードバック
SEゼミ2015 - OSS Hack 4 Beginners - フィードバックSEゼミ2015 - OSS Hack 4 Beginners - フィードバック
SEゼミ2015 - OSS Hack 4 Beginners - フィードバックKouhei Sutou
 
fastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたfastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたToshiyuki Hirata
 
Vagrantでwindows仮想環境を構築しよう
Vagrantでwindows仮想環境を構築しようVagrantでwindows仮想環境を構築しよう
Vagrantでwindows仮想環境を構築しようYuta Matsumura
 
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリーjenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリーJunya Suzuki
 
脆弱性もバグ、だからテストしよう DevSummiFukuoka
脆弱性もバグ、だからテストしよう DevSummiFukuoka脆弱性もバグ、だからテストしよう DevSummiFukuoka
脆弱性もバグ、だからテストしよう DevSummiFukuokaichikaway
 

La actualidad más candente (20)

Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーション
 
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCI
 
詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst
 
Startup jenkins!
Startup jenkins!Startup jenkins!
Startup jenkins!
 
テストを書こう!!
テストを書こう!!テストを書こう!!
テストを書こう!!
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
 
Jenkinsを使った初めての継続的インテグレーション
Jenkinsを使った初めての継続的インテグレーションJenkinsを使った初めての継続的インテグレーション
Jenkinsを使った初めての継続的インテグレーション
 
自動テストで開発効率を上げるには
自動テストで開発効率を上げるには自動テストで開発効率を上げるには
自動テストで開発効率を上げるには
 
10分でわかるDevOps
10分でわかるDevOps10分でわかるDevOps
10分でわかるDevOps
 
Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~
 
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
 
SEゼミ2015 - OSS Hack 4 Beginners - フィードバック
SEゼミ2015 - OSS Hack 4 Beginners - フィードバックSEゼミ2015 - OSS Hack 4 Beginners - フィードバック
SEゼミ2015 - OSS Hack 4 Beginners - フィードバック
 
fastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたfastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみた
 
.Netconf
.Netconf.Netconf
.Netconf
 
Vagrantでwindows仮想環境を構築しよう
Vagrantでwindows仮想環境を構築しようVagrantでwindows仮想環境を構築しよう
Vagrantでwindows仮想環境を構築しよう
 
入門!Jenkins
入門!Jenkins入門!Jenkins
入門!Jenkins
 
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリーjenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
脆弱性もバグ、だからテストしよう DevSummiFukuoka
脆弱性もバグ、だからテストしよう DevSummiFukuoka脆弱性もバグ、だからテストしよう DevSummiFukuoka
脆弱性もバグ、だからテストしよう DevSummiFukuoka
 
java-ja TDD 2nd
java-ja TDD 2ndjava-ja TDD 2nd
java-ja TDD 2nd
 

Similar a 組込みソフトウェアの品質の小噺

Small eigen collider ruby kaigi 2011
Small eigen collider ruby kaigi 2011Small eigen collider ruby kaigi 2011
Small eigen collider ruby kaigi 2011Andrew Grimm
 
はじめてAnsibleのバグ修正に協力してみた
はじめてAnsibleのバグ修正に協力してみたはじめてAnsibleのバグ修正に協力してみた
はじめてAnsibleのバグ修正に協力してみたakira6592
 
バージョン管理の断捨離
バージョン管理の断捨離バージョン管理の断捨離
バージョン管理の断捨離Kazushi Kamegawa
 
Small eigen collider ruby kaigi 2011
Small eigen collider ruby kaigi 2011Small eigen collider ruby kaigi 2011
Small eigen collider ruby kaigi 2011Andrew Grimm
 
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法João Orui
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方Hiroyuki Tanaka
 
テストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテストテストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテストOhishi Mikage
 
Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Kanako Kobayashi
 
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!智治 長沢
 
Finc microservice meetup_shigemura_lt
Finc microservice meetup_shigemura_ltFinc microservice meetup_shigemura_lt
Finc microservice meetup_shigemura_lt裕紀 重村
 
失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdf
失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdf失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdf
失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdfRakuten Commerce Tech (Rakuten Group, Inc.)
 
タイムボックス制約付きインクリメンタル開発
タイムボックス制約付きインクリメンタル開発タイムボックス制約付きインクリメンタル開発
タイムボックス制約付きインクリメンタル開発HIDEKAZU MATSUURA
 

Similar a 組込みソフトウェアの品質の小噺 (13)

Small eigen collider ruby kaigi 2011
Small eigen collider ruby kaigi 2011Small eigen collider ruby kaigi 2011
Small eigen collider ruby kaigi 2011
 
はじめてAnsibleのバグ修正に協力してみた
はじめてAnsibleのバグ修正に協力してみたはじめてAnsibleのバグ修正に協力してみた
はじめてAnsibleのバグ修正に協力してみた
 
バージョン管理の断捨離
バージョン管理の断捨離バージョン管理の断捨離
バージョン管理の断捨離
 
Small eigen collider ruby kaigi 2011
Small eigen collider ruby kaigi 2011Small eigen collider ruby kaigi 2011
Small eigen collider ruby kaigi 2011
 
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
 
テストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテストテストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテスト
 
DevOps、その前に
DevOps、その前にDevOps、その前に
DevOps、その前に
 
Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2
 
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
 
Finc microservice meetup_shigemura_lt
Finc microservice meetup_shigemura_ltFinc microservice meetup_shigemura_lt
Finc microservice meetup_shigemura_lt
 
失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdf
失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdf失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdf
失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdf
 
タイムボックス制約付きインクリメンタル開発
タイムボックス制約付きインクリメンタル開発タイムボックス制約付きインクリメンタル開発
タイムボックス制約付きインクリメンタル開発
 

組込みソフトウェアの品質の小噺