テストエンジニアが教える JUnitを書き始める前に考えるべきテスト/JJUG_CCC_2019_Spring

テストエンジニアが教える JUnitを書き始める前に考えるべきテスト/JJUG_CCC_2019_Spring

以下のイベントの投影資料です。
http://www.java-users.jp/ccc2019spring/#/

以下、スライド内記載のURL一覧

P13 テストの目的
http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2011.J02.pdf#page=14

P18 パスワードの例題
https://www.slideshare.net/takashiyamasaki378/ss-55384920/25

P59 Testing and Checking Refined
http://www.satisfice.com/blog/archives/856

P60 あなたがやっているのはテスティングかチェッキングか?
https://www.infoq.com/jp/news/2009/12/testing-or-checking

P62 開発工程と不良摘出
http://www.jasst.jp/symposium/jasst17tokyo/pdf/A7.pdf#page=29

P64 Checking is not Testing
https://www.thoughtworks.com/insights/blog/qa-dead

P67 最初に行うべき自動テストの内容
http://jasst.jp/symposium/jasst16tokyo/pdf/D4.pdf#page=5

P69 入門者向けオススメ書籍
マインドマップから始めるソフトウェアテスト https://www.amazon.co.jp/dp/4297105063
ソフトウェアテスト技法ドリル https://www.amazon.co.jp/dp/4817193603

P70 初めての自動テスト
https://www.amazon.co.jp/dp/4873118166/

P71 ソフトウェアテスト教科書 JSTQB Foundation
https://www.amazon.co.jp/dp/4798124699

P72 WACATE
https://wacate.jp/

P73 JaSST
http://www.jasst.jp/

P76 ソフトウェアテストの7原則
http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2011.J02.pdf#page=15

P77 テスト自動化の8原則
https://sites.google.com/site/testautomationresearch/test_automation_principle

706ff501573a736401aa4de5adc88e05?s=128

nihonbuson

May 18, 2019
Tweet

Transcript

  1. 2.

    自己紹介 • ブロッコリー • @nihonbuson • 株式会社ビズリーチ • JaSST Review

    実行委員長 • WACATE 実行委員 • テストエンジニアによる 合同誌『Crabink』著者
  2. 5.

    この発表は… • テストの話にかける時間数 – 社内の新人研修…丸2日 – 社外の勉強会…2時間弱 – JJUG…45分 •

    本来話したい内容の1/15程度しかありません! • もっと詳しく話を聞きたい方、 今日参加してない人にも伝えたい方、 講演後、気軽に話しかけてください!
  3. 6.

    この発表は… • 話さない内容 – JUnitの書き方 – TDDのやり方 – 自動テストの設計方法 •

    話す内容 – テストの目的とは何か – テストファーストで行うことの本当の良さ – 何をテストすれば良いのか
  4. 13.

    テストの目的は何か? 以下のような目的があります。 • 欠陥の検出 • 対象ソフトウェアの品質レベルが十分であることの確認 • 意思決定のための情報の提示 • 欠陥の作りこみの防止

    JSTQBシラバスより http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2011.J02.pdf#page=14 実装前に行うこともある テストの7原則①テストは「欠陥がある」ことしか示せない
  5. 14.

    なぜ早期のテスト・レビューをするのか 要求仕様 設計 コーディング テスト リリース後 1倍 5倍 10倍 20倍

    200倍! 出典:『ソフトウェア開発201の鉄則(日経BP社)』 仕様誤りの修正コスト
  6. 15.

    なぜ早期のテスト・レビューをするのか 要求仕様 設計 コーディング テスト リリース後 1倍 5倍 10倍 20倍

    200倍! 出典:『ソフトウェア開発201の鉄則(日経BP社)』 仕様誤りの修正コスト 修正コストを下げるには…(1) 素早くリリースしてフィードバックをもらい、 すぐに修正できる体制にする
  7. 16.

    なぜ早期のテスト・レビューをするのか 要求仕様 設計 コーディング テスト リリース後 1倍 5倍 10倍 20倍

    200倍! 出典:『ソフトウェア開発201の鉄則(日経BP社)』 仕様誤りの修正コスト 修正コストを下げるには…(2) 早い段階で不具合を発見する
  8. 29.

    再掲:テストの目的は何か? 以下のような目的があります。 • 欠陥の検出 • 対象ソフトウェアの品質レベルが十分であることの確認 • 意思決定のための情報の提示 • 欠陥の作りこみの防止

    JSTQBシラバスより http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2011.J02.pdf#page=14 実装前に行うこともある テストの7原則①テストは「欠陥がある」ことしか示せない
  9. 30.

    再掲:なぜ早期のテスト・レビューをするのか 要求仕様 設計 コーディング テスト リリース後 1倍 5倍 10倍 20倍

    200倍! 出典:『ソフトウェア開発201の鉄則(日経BP社)』 仕様誤りの修正コスト 修正コストを下げるには…(2) 早い段階で不具合を発見する
  10. 44.

    テストケースはいくつ? • テストケースは時間があれば無限にできる。 • サンプリング方法としてテスト設計技法がある。 – テストケースを合理的に少なくするための技法 • 同値分割法、AllPair法 –

    多くの欠陥が見つかるようにするための技法 • 境界値分析、エラー推測、探索的テスト – テスト対象をある観点で漏れなくテストするための技法 • カバレッジ、デシジョンテーブル、状態遷移、ユースケーステスト
  11. 47.

    テスト設計技法 ~境界値分析~ • 「パスワードが4文字以上12文字以下」で なぜ3,4,12,13をテストするのか? if( x < 3 ){ return

    “入力したパスワードが短いです”; } … • 上記の例で、不等号のミスによる不具合を 発見できるのは、3の時だけ!
  12. 48.

    テスト設計技法 ~境界値分析~ public boolean judge (int x) { if( x <

    3 ){ return false; } else if( x > 13 ){ return false; } return true; } @Test public void test_1{ assertThat( judge(2), is(false)); } @Test public void test_2{ assertThat( judge(15), is(false)); } @Test public void test_3{ assertThat( judge(7), is(true)); } カバレッジは100%だけど…
  13. 56.

    1. QAチームは システムテストレベルを見たい! • 単体テスト(モジュールテスト) – 商品の個数欄にマイナスの数値を入力できない。 • 結合テスト –

    カートに3個入っていて、2個追加したら、 確認ページで5個になった。 • システムテスト – 会員登録→商品購入→商品キャンセル→退会の 一連の流れ。
  14. 57.

    1. QAチームは システムテストレベルを見たい! • 単体テスト(モジュールテスト) – 商品の個数欄にマイナスの数値を入力できない。 • 結合テスト –

    カートに3個入っていて、2個追加したら、 確認ページで5個になった。 • システムテスト – 会員登録→商品購入→商品キャンセル→退会の 一連の流れ。 QAチームは ここをやりたい!
  15. 58.

    1. QAチームは システムテストレベルを見たい! • 単体テスト(モジュールテスト) – 商品の個数欄にマイナスの数値を入力できない。 • 結合テスト –

    カートに3個入っていて、2個追加したら、 確認ページで5個になった。 • システムテスト – 会員登録→商品購入→商品キャンセル→退会の 一連の流れ。 開発者は ここをやりきれ!
  16. 73.