1-1 品質問題の原因とユニットテストの関係
約6割がソフトウェア
の不具合
約6割がソフトウェア
の不具合
不具合の原因の割合
引用:2010年版組込みソフトウェア産業実態調査報告書-事業責任者向け調査-(経済産業省)
品質の悪い製品を作り出す原因の一部は、ユニットテストにある。
ユニットテストは製品不具合の原因に
直接的
直接的
または
または
間接的
間接的
に
に
関与する。
関与する。
ユニットテスト工程に不備があり、その後のテスト工程で行う
はずであった機能テストなどが十分に実施できなかった。
必要なテストが不十分なまま出荷されたため欠陥が発生し、
品質問題による損失を発生させた
1-1 品質問題の原因とユニットテストの関係
ユニットテスト
統合テスト
・・・
・・・
予定
・・・
実績
・・・
検出できなかった
統合テストが十分にできず、統合テストで検出すべき欠陥を流出させてしまった。
統合テストが十分にできず、統合テストで検出すべき欠陥を流出させてしまった。
製品欠陥に対して間接的に関与する場合
ユニットテスト以降のテストが不十分
直接の原因が統合テストであるため、そもそもの原因である
ユニットテストに改善の意識が向きにくい。
ここで検出
ユニットテスト
欠陥の対応
関数func()は外部変数flagを参照している。(更新はしない)
例)参照のみ行う領域を更新していないことを確認する場合
flagが更新されていないことを確認
→func()を呼び出す前と後でflagの値が同じであればよい。
Q.flagの初期値に何の値を指定するか?
Q.flagの初期値に何の値を指定するか?
A.
例えば1を指定
したとする。
1では欠陥が検出できない
可能性がある。
しかし・・・
2-2 [事例2] 参照のみ行う領域の確認
外部変数flag
外部変数flag
関数func()
関数func()
参照
flagがxxなら、
更新していない
flagがxxなら、
更新していない
func()呼び出し
flagにxxを設定
flagがxxか?
long func(unsigned char arg1)
{
:
a = (b / (unsigned char)(arg1 + 5));
:
}
long func(unsigned char arg1)
{
:
a = (b / (unsigned char)(arg1 + 5));
:
}
例)演算後に除算している場合
A.
例えば
0、10、255 を
指定したとする。
代表値、最小値、最大値だけ
では欠陥が検出できない可能
性がある。
しかし・・・
arg1を「+5」しているため、ゼロ割
が発生しないと判断を誤りやすい。
Q.arg1に何の値を指定するか?
Q.arg1に何の値を指定するか?
3-2 [事例2] オーバーフローに誘発されたゼロ割処理
long func()
{
:
}
long func()
{
:
}
arg1 = 0
単体テスト関連サービスについて
ご質問・ご相談・資料請求はこちらまで
:
単体テストはどの開発プロジェクトでも実施しますが、明確に実施方法が定まっていません。
そんな開発現場で活用してもらうために単体テストに特化した教育コンテンツを揃えています。
※【C言語版】【C++言語版】のコンテンツがあります。
本コンテンツを使用したセミナーを定期的に開催しています。
【主催】ガイオ・テクノロジー株式会社 URL : http://www.gaio.co.jp/event/event.html
単体テストはどの開発プロジェクトでも実施しますが、明確に実施方法が定まっていません。
そんな開発現場で活用してもらうために単体テストに特化した教育コンテンツを揃えています。
※【C言語版】【C++言語版】のコンテンツがあります。
本コンテンツを使用したセミナーを定期的に開催しています。
【主催】ガイオ・テクノロジー株式会社 URL : http://www.gaio.co.jp/event/event.html
単体テスト教育
単体テスト代行サービス
テスト導入支援
ソフトウェア品質を確保するために重要な工程である「単体テスト」を代行します。
ブラックボックス、ホワイトボックス、ロバスト性の観点から、高品質な単体テストを実施します。
単体テスト代行サービスの効果に不安がある場合、試験的に数関数に対して単体テスト代行サービスを実施することも
可能です。
※ガイオ・テクノロジー株式会社の単体テスト代行サービスを支援しております。
ソフトウェア品質を確保するために重要な工程である「単体テスト」を代行します。
ブラックボックス、ホワイトボックス、ロバスト性の観点から、高品質な単体テストを実施します。
単体テスト代行サービスの効果に不安がある場合、試験的に数関数に対して単体テスト代行サービスを実施することも
可能です。
※ガイオ・テクノロジー株式会社の単体テスト代行サービスを支援しております。
テスト導入支援は単体テスト以外の内容もカバーしたサービスです。
単体テスト以外(設計や結合テスト)の工程も改善しなければソフトウェア品質が向上しない場合、お客様の現場に合った
方法をご提案します。
【例】テストガイドライン策定、テスト設計レビュー、設計書確認
※ガイオ・テクノロジー株式会社のテスト導入支援を支援しております。
テスト導入支援は単体テスト以外の内容もカバーしたサービスです。
単体テスト以外(設計や結合テスト)の工程も改善しなければソフトウェア品質が向上しない場合、お客様の現場に合った
方法をご提案します。
【例】テストガイドライン策定、テスト設計レビュー、設計書確認
※ガイオ・テクノロジー株式会社のテスト導入支援を支援しております。
単体テスト以外(Android)のサービスについて
ご質問・ご相談・資料請求はこちらまで
:
Android OSの基礎知識を学ぶとともに、Androidアプリケーション開発の基本となるプログラミングモデルを講義と実習
から習得します。
Android OSの基礎知識を学ぶとともに、Androidアプリケーション開発の基本となるプログラミングモデルを講義と実習
から習得します。
Androidアプリケーション開発
初級編
Androidアプリケーション開発
応用編
Android開発
ポーティング編
Androidの中枢であるアプリケーションフレームワークの仕組みを理解するとともに、実際のAndroidアプリケーション開発
でよく発生する問題点の事例・解決策などを理解することで、より高度なAndroidアプリケーション開発のスキルを習得し
ます。
Androidの中枢であるアプリケーションフレームワークの仕組みを理解するとともに、実際のAndroidアプリケーション開発
でよく発生する問題点の事例・解決策などを理解することで、より高度なAndroidアプリケーション開発のスキルを習得し
ます。
ターゲットボード上のLinuxシステム上に、Android特有のドライバの構築と、ミドルウェア、Androidアプリケーション等の
搭載を行います。
またAndroidのチューニング技術なども習得する事により、実践的なAndroid技術者の育成が可能になります。
(企画:株式会社エンベデッド・システム 開発:日本システム開発株式会社)
ターゲットボード上のLinuxシステム上に、Android特有のドライバの構築と、ミドルウェア、Androidアプリケーション等の
搭載を行います。
またAndroidのチューニング技術なども習得する事により、実践的なAndroid技術者の育成が可能になります。
(企画:株式会社エンベデッド・システム 開発:日本システム開発株式会社)
その他
必要スキル教育(Java,デザインパターン等)
株式会社豆蔵との連携により、Android開発に必要なその他技術要素の習得も可能です。
(Java, デザインパターン, UML等)
株式会社豆蔵との連携により、Android開発に必要なその他技術要素の習得も可能です。
(Java, デザインパターン, UML等)