Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
テスト初心者Androiderのための  ソフトウェアテスト入門                 2012/09/08                  渡辺悟史             Androidテスト部
今日話したいこと• テストの入門として   • テストの種類について   • テスト技法について
自己紹介• 渡辺 悟史(わたなべさとし)• 仕事はAndroid版SNSアプリ開発• 過去には組み込みWebブラウザ開発• 得意 : C言語/Android• 興味: モバイル関連/Web関連/UX関連• twitter: @sassy_wat...
執筆記事Androidアプリを“超”魅力的にする3種類のUIテストhttp://www.atmarkit.co.jp/fsmart/articles/androidtest03/01.html
ソフトウェアテストについて
そのソフトウェア正しく動きますか?
正しく動くのを確かめるために、テストをしましょう
テストをしてバグを見つけて正しく動くように しましょう
ということで、今日はテストの基本  についてお話ししようと思い   ます
テストの種類
自分が何をテストしたいかをきちんと把握するためテストの種類を把握しておくことは重要
今回はV字モデルを 使って説明
V字モデル要件定義                 受け入れテスト  基本設計              システムテスト       詳細設計      統合テスト          実装   ユニットテスト
V字モデル要件定義                 受け入れテストお客様のやりたいことを明確にする  基本設計         システムテスト       詳細設計      統合テスト          実装   ユニットテスト
V字モデル要件定義                受け入れテスト  基本設計             システムテスト操作方法や画面など基本的な部分の設計    詳細設計     統合テスト         実装   ユニットテスト
V字モデル要件定義               受け入れテスト  基本設計            システムテスト       詳細設計    統合テスト実装に必要な細かい部分の設計     実装    ユニットテスト
V字モデル要件定義                 受け入れテスト  基本設計              システムテスト       詳細設計      統合テスト          実装   ユニットテスト   コードを書く
V字モデル要件定義                 受け入れテスト  基本設計              システムテスト       詳細設計      統合テスト          実装   ユニットテストそれぞれのフェーズに対応したテストがある
ざっくり分けると• プログラムで確認するテスト• 実機で確認するテスト
ざっくり分けると  要件定義      実機で確認する       受け入れテスト            テスト     基本設計                システムテスト         詳細設計         統合テスト       ...
プログラムで確認するテスト
プログラムで確認するテスト• JUnit等を使って、プログラムを書いて 確認するテスト
プログラムで確認するテスト• ユニットテスト• 統合テスト
ユニットテスト• メソッド単位で行うテスト• メソッドに値を入れて、期待した結果 が返ってくるか確かめる
ユニットテスト 入力              メソッド  出力この出力が正しいことを  チェックする
ユニットテストの重要性
ユニットテストをうまくやるには• できるかぎり他のクラスに依存させな いクラスにする• APIへの依存は最小限にする
詳しくはhttp://www.atmarkit.co.jp/fsmart/articles/androidtest02/01.html
他のモジュールに依存するユニットテストをするには?入力           入力      メソッド         メソッド出力            出力                   ここのメソッドが何を返     ここをテストした...
Mock入力           入力      メソッド             Mock                     オブジェクト出力             出力     ここをテストしたい!     ここは一定の値を返す! ...
Mock(Android)• android.test.mockパッケージのクラスを 使って、テストでmockを利用するよう にうまくテストを実装• android-mock というフレームワークも ある => http://code.goog...
AndroidでのMockについての詳細はhttp://www.atmarkit.co.jp/fsmart/articles/androidtest05/01.html
統合テスト• きちんとクラス同士が結合されている のを確認するテスト• Androidだと ActivityInstrumentationTestCase2等を使っ たテスト
統合テスト入力          入力          入力     メソッド        メソッド        OS出力          出力          出力
統合テスト• ユニットテストと統合テストの境界は 曖昧• Androidだと、ActivityやViewに強く依存 することが多いので、無理にユニット テストするのではなく、統合テストで がんばった方がよいケースも多い
Activityを含めた統合テストについてはhttp://www.atmarkit.co.jp/fsmart/articles/androidtest03/01.html
実機で確認するテスト
実機で確認するテスト• 仕様通りにソフトウェアが動くかどう か、実機で確認してみるテスト
実機で確認するテスト• システムテスト• 受け入れテスト
システムテスト• 仕様通りにきちんと動くかどうかのテ スト• 確認する項目(テストケース)を挙げてお き、確認する
テストケース    テスト項目          期待結果EditTextに何も入力しな                   送信不可       い EditTextに1文字入力    送信可能EditTextに256文字入力   送信不可
テストケース• 仕様書からきちんとテストケースを挙 げる必要がある• 機能だけでなく、パフォーマンスやセ キュリティといった非機能要件と呼ば れる項目も考える必要がある
システムテストの詳細はhttp://www.atmarkit.co.jp/fsmart/articles/androidtest07/01.html
受け入れテスト• 主にお客様が自分たちの要求を満たし ているかを確認するテスト• 今回は省略
テスト技法
テスト技法• 今まであげたそれぞれのテストを効率 的にするにはどうすればいいか• やみくもにテストするのではなく効率 的にテストする• テスト技法を用いてきちんとテストす る
よりよいテストとは • 多くのバグを見つけられる • 少ない時間で見つけられる • 範囲を漏れなくテストする上記をきちんと行うためにテスト技法は重要
代表的なテスト技法• 同値分割• 境界値分析• デシジョンテーブルテスト
同値分割と境界値分析
同値分割似ている値(同じ結果になる値)でグルーピングする
同値分割• 同じ処理が行われる値をグルーピング する方法• グループの代表値だけをテストすれ ば、テストの数を減らせる
境界値分析グループの間・端の値を狙ってテストする
境界値分析• 同値分割した境界値に注目してテスト する方法• 境界値はバグが出やすいため
255文字まで入力できるEditTextの場合         最大255文字入力できる         EditTextを考える
255文字まで入力できるEditTextの場合           同じ処理をする値をクラスとしてグルーピング無効同値クラス    有効同値クラス       無効同値クラス     0 1               255 256
255文字まで入力できるEditTextの場合無効同値クラス      有効同値クラス     無効同値クラス       0 1             255 256  0と1が境界値なので、     255と256が境界値なので、  0と...
デシジョンテーブルテスト
デシジョンテーブルテスト• 入力データや入力の組み合わせに対す る結果を表にまとめたもの• 複数の条件が重なったときの結果を把 握するのに効果的
デジジョンテーブル       ルール1 ルール2 ルール3 条件1    T    T    F 条件2    T    F    T 条件3    F    T    T 結果     T    F    F
デジジョンテーブル             ルール1 ルール2 ルール3入力条件・入力データ         条件の組み合わせ      条件1      T        T   F      条件2      T        F   T ...
例            ルール1 ルール2 ルール3 ルール4 名前を入力       T       T   F   Fメールアドレス入力    T       F   T   F  送信可能       T       F   F   F
他のテスト技法• 状態遷移テスト• 原因結果グラフ• etc...
テスト技法ポジショニングマップhttp://www.hayst.com/Pages/positioning.aspx
テストを勉強するのにおすすめ書籍・記事
テスト駆動開発入門•   TDDの名著•   ユニットテストを書く    上で参考になりそう
マインドマップから始めるソフトウェアテスト•   テスト行程すべてを網    羅的に書いてある本•   テスト設計の参考にな    りそう
ソフトウェアテスト技法ドリル•   テスト技法の使い方が    学べる本•   テスト設計に参考にな    るかも
Androidアプリ開発テスト入門•   Androidアプリ開発に    おけるテストの解説•   Androidでテストをや    りたい人、必読!
最後に•   テストはあくまでもバグを出すための手段•   テストをすることが目的になってはいけない•   品質/コスト/納期のバランスを考えて
ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

テスト初心者Androiderのためのソフトウェアテスト入門

10,408 views

Published on

  • Have you ever used the help of ⇒ HelpWriting.net ⇐? They can help you with any type of writing - from personal statement to research paper. Due to this service you'll save your time and get an essay without plagiarism.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • You might get some help from ⇒ HelpWriting.net ⇐ Success and best regards!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ♥♥♥ http://bit.ly/2F7hN3u ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

テスト初心者Androiderのためのソフトウェアテスト入門

  1. 1. テスト初心者Androiderのための ソフトウェアテスト入門 2012/09/08 渡辺悟史 Androidテスト部
  2. 2. 今日話したいこと• テストの入門として • テストの種類について • テスト技法について
  3. 3. 自己紹介• 渡辺 悟史(わたなべさとし)• 仕事はAndroid版SNSアプリ開発• 過去には組み込みWebブラウザ開発• 得意 : C言語/Android• 興味: モバイル関連/Web関連/UX関連• twitter: @sassy_watson
  4. 4. 執筆記事Androidアプリを“超”魅力的にする3種類のUIテストhttp://www.atmarkit.co.jp/fsmart/articles/androidtest03/01.html
  5. 5. ソフトウェアテストについて
  6. 6. そのソフトウェア正しく動きますか?
  7. 7. 正しく動くのを確かめるために、テストをしましょう
  8. 8. テストをしてバグを見つけて正しく動くように しましょう
  9. 9. ということで、今日はテストの基本 についてお話ししようと思い ます
  10. 10. テストの種類
  11. 11. 自分が何をテストしたいかをきちんと把握するためテストの種類を把握しておくことは重要
  12. 12. 今回はV字モデルを 使って説明
  13. 13. V字モデル要件定義 受け入れテスト 基本設計 システムテスト 詳細設計 統合テスト 実装 ユニットテスト
  14. 14. V字モデル要件定義 受け入れテストお客様のやりたいことを明確にする 基本設計 システムテスト 詳細設計 統合テスト 実装 ユニットテスト
  15. 15. V字モデル要件定義 受け入れテスト 基本設計 システムテスト操作方法や画面など基本的な部分の設計 詳細設計 統合テスト 実装 ユニットテスト
  16. 16. V字モデル要件定義 受け入れテスト 基本設計 システムテスト 詳細設計 統合テスト実装に必要な細かい部分の設計 実装 ユニットテスト
  17. 17. V字モデル要件定義 受け入れテスト 基本設計 システムテスト 詳細設計 統合テスト 実装 ユニットテスト コードを書く
  18. 18. V字モデル要件定義 受け入れテスト 基本設計 システムテスト 詳細設計 統合テスト 実装 ユニットテストそれぞれのフェーズに対応したテストがある
  19. 19. ざっくり分けると• プログラムで確認するテスト• 実機で確認するテスト
  20. 20. ざっくり分けると 要件定義 実機で確認する 受け入れテスト テスト 基本設計 システムテスト 詳細設計 統合テスト 実装 ユニットテスト プログラムで確認するテストあくまでもざっくりと・・・
  21. 21. プログラムで確認するテスト
  22. 22. プログラムで確認するテスト• JUnit等を使って、プログラムを書いて 確認するテスト
  23. 23. プログラムで確認するテスト• ユニットテスト• 統合テスト
  24. 24. ユニットテスト• メソッド単位で行うテスト• メソッドに値を入れて、期待した結果 が返ってくるか確かめる
  25. 25. ユニットテスト 入力 メソッド 出力この出力が正しいことを チェックする
  26. 26. ユニットテストの重要性
  27. 27. ユニットテストをうまくやるには• できるかぎり他のクラスに依存させな いクラスにする• APIへの依存は最小限にする
  28. 28. 詳しくはhttp://www.atmarkit.co.jp/fsmart/articles/androidtest02/01.html
  29. 29. 他のモジュールに依存するユニットテストをするには?入力 入力 メソッド メソッド出力 出力 ここのメソッドが何を返 ここをテストしたい! すかわからない!
  30. 30. Mock入力 入力 メソッド Mock オブジェクト出力 出力 ここをテストしたい! ここは一定の値を返す! Androidだとandroid.test.mockパッケージにある (必ず例外を投げる/Overrideして使う)
  31. 31. Mock(Android)• android.test.mockパッケージのクラスを 使って、テストでmockを利用するよう にうまくテストを実装• android-mock というフレームワークも ある => http://code.google.com/p/android- mock/
  32. 32. AndroidでのMockについての詳細はhttp://www.atmarkit.co.jp/fsmart/articles/androidtest05/01.html
  33. 33. 統合テスト• きちんとクラス同士が結合されている のを確認するテスト• Androidだと ActivityInstrumentationTestCase2等を使っ たテスト
  34. 34. 統合テスト入力 入力 入力 メソッド メソッド OS出力 出力 出力
  35. 35. 統合テスト• ユニットテストと統合テストの境界は 曖昧• Androidだと、ActivityやViewに強く依存 することが多いので、無理にユニット テストするのではなく、統合テストで がんばった方がよいケースも多い
  36. 36. Activityを含めた統合テストについてはhttp://www.atmarkit.co.jp/fsmart/articles/androidtest03/01.html
  37. 37. 実機で確認するテスト
  38. 38. 実機で確認するテスト• 仕様通りにソフトウェアが動くかどう か、実機で確認してみるテスト
  39. 39. 実機で確認するテスト• システムテスト• 受け入れテスト
  40. 40. システムテスト• 仕様通りにきちんと動くかどうかのテ スト• 確認する項目(テストケース)を挙げてお き、確認する
  41. 41. テストケース テスト項目 期待結果EditTextに何も入力しな 送信不可 い EditTextに1文字入力 送信可能EditTextに256文字入力 送信不可
  42. 42. テストケース• 仕様書からきちんとテストケースを挙 げる必要がある• 機能だけでなく、パフォーマンスやセ キュリティといった非機能要件と呼ば れる項目も考える必要がある
  43. 43. システムテストの詳細はhttp://www.atmarkit.co.jp/fsmart/articles/androidtest07/01.html
  44. 44. 受け入れテスト• 主にお客様が自分たちの要求を満たし ているかを確認するテスト• 今回は省略
  45. 45. テスト技法
  46. 46. テスト技法• 今まであげたそれぞれのテストを効率 的にするにはどうすればいいか• やみくもにテストするのではなく効率 的にテストする• テスト技法を用いてきちんとテストす る
  47. 47. よりよいテストとは • 多くのバグを見つけられる • 少ない時間で見つけられる • 範囲を漏れなくテストする上記をきちんと行うためにテスト技法は重要
  48. 48. 代表的なテスト技法• 同値分割• 境界値分析• デシジョンテーブルテスト
  49. 49. 同値分割と境界値分析
  50. 50. 同値分割似ている値(同じ結果になる値)でグルーピングする
  51. 51. 同値分割• 同じ処理が行われる値をグルーピング する方法• グループの代表値だけをテストすれ ば、テストの数を減らせる
  52. 52. 境界値分析グループの間・端の値を狙ってテストする
  53. 53. 境界値分析• 同値分割した境界値に注目してテスト する方法• 境界値はバグが出やすいため
  54. 54. 255文字まで入力できるEditTextの場合 最大255文字入力できる EditTextを考える
  55. 55. 255文字まで入力できるEditTextの場合 同じ処理をする値をクラスとしてグルーピング無効同値クラス 有効同値クラス 無効同値クラス 0 1 255 256
  56. 56. 255文字まで入力できるEditTextの場合無効同値クラス 有効同値クラス 無効同値クラス 0 1 255 256 0と1が境界値なので、 255と256が境界値なので、 0と1に対してテストする 255と256に対してテストする
  57. 57. デシジョンテーブルテスト
  58. 58. デシジョンテーブルテスト• 入力データや入力の組み合わせに対す る結果を表にまとめたもの• 複数の条件が重なったときの結果を把 握するのに効果的
  59. 59. デジジョンテーブル ルール1 ルール2 ルール3 条件1 T T F 条件2 T F T 条件3 F T T 結果 T F F
  60. 60. デジジョンテーブル ルール1 ルール2 ルール3入力条件・入力データ 条件の組み合わせ 条件1 T T F 条件2 T F T 条件3 F T T 結果 T F F条件に合わせて実行する動 組み合わせに対する作結果 結果
  61. 61. 例 ルール1 ルール2 ルール3 ルール4 名前を入力 T T F Fメールアドレス入力 T F T F 送信可能 T F F F
  62. 62. 他のテスト技法• 状態遷移テスト• 原因結果グラフ• etc...
  63. 63. テスト技法ポジショニングマップhttp://www.hayst.com/Pages/positioning.aspx
  64. 64. テストを勉強するのにおすすめ書籍・記事
  65. 65. テスト駆動開発入門• TDDの名著• ユニットテストを書く 上で参考になりそう
  66. 66. マインドマップから始めるソフトウェアテスト• テスト行程すべてを網 羅的に書いてある本• テスト設計の参考にな りそう
  67. 67. ソフトウェアテスト技法ドリル• テスト技法の使い方が 学べる本• テスト設計に参考にな るかも
  68. 68. Androidアプリ開発テスト入門• Androidアプリ開発に おけるテストの解説• Androidでテストをや りたい人、必読!
  69. 69. 最後に• テストはあくまでもバグを出すための手段• テストをすることが目的になってはいけない• 品質/コスト/納期のバランスを考えて
  70. 70. ご清聴ありがとうございました

×