Your SlideShare is downloading. ×
  • Like
テスト初心者Androiderのためのソフトウェアテスト入門
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

  • 7,979 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
7,979
On SlideShare
0
From Embeds
0
Number of Embeds
6

Actions

Shares
Downloads
34
Comments
0
Likes
19

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

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