Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Agile開発に入り込むQAの方法 #D3QA / Agile QA Night

nihonbuson
March 14, 2019

Agile開発に入り込むQAの方法 #D3QA / Agile QA Night

2019年3月14日開催のD3QAイベント「Agile QA Night」での発表資料です。
https://d-cube.connpass.com/event/121450/

スライド内で紹介した参考資料
◆P34
テスト駆動開発から品質保証へと橋を架ける
https://speakerdeck.com/twada/jasst-18-kansai-from-tdd-to-qa?slide=20

◆P38
テストエンジニアはどのような思考でペアプロ・モブプロに参加しているのか #WACATE
http://nihonbuson.hatenadiary.jp/entry/2018/12/24/000000

テストエンジニアの観点を持ってテスト書いていくぞな話
https://kariaduu.hatenablog.com/entry/2018/12/18/232511

nihonbuson

March 14, 2019
Tweet

More Decks by nihonbuson

Other Decks in Technology

Transcript

  1. 1ͭ໨ͷςετγφϦΦ Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ public

    class VendingMachine { int currentMoney ; public void insertCoin(int money) { currentMoney = money ; } public int getCurrentMoney() { return currentMoney ; } }
  2. 2ͭ໨ͷςετγφϦΦ PO͔Βͷཁ๬ Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ

    public class VendingMachine { int currentMoney ; public void insertCoin(int money) { currentMoney = money ; } public int getCurrentMoney() { return currentMoney ; } } 10ʮ͓ۚΛԁೖΕͨޙʹɺԁΛೖΕͨΒɺ 
 ͪΌΜͱԁʹͳΔΑ͏ʹͯ͠΄͍͠ͳʯ
  3. 2ͭ໨ͷςετγφϦΦ ςετγφϦΦͷ࡞੒ Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ

    Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ public class VendingMachine { int currentMoney ; public void insertCoin(int money) { currentMoney = money ; } public int getCurrentMoney() { return currentMoney ; } }
  4. 2ͭ໨ͷςετγφϦΦ ࣮૷ίʔυͷमਖ਼ Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ

    Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ public class VendingMachine { int currentMoney = 0 ; public void insertCoin(int money) { currentMoney += money ; } public int getCurrentMoney() { return currentMoney ; } }
  5. 3ͭ໨ͷςετγφϦΦ PO͔Βͷཁ๬ Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ

    Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ public class VendingMachine { int currentMoney = 0 ; public void insertCoin(int money) { currentMoney += money ; } public int getCurrentMoney() { return currentMoney ; } } 10ʮ̍ԁߗ՟͸ରԠͨ͘͠ͳ͍ͳʯ
  6. 3ͭ໨ͷςετγφϦΦ ςετγφϦΦͷ࡞੒ Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ

    Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ Scenario:ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 1ԁΛೖۚ Then 0ԁ͕ೖۚ͞Ε͍ͯΔ public class VendingMachine { int currentMoney = 0 ; public void insertCoin(int money) { currentMoney += money ; } public int getCurrentMoney() { return currentMoney ; } }
  7. 3ͭ໨ͷςετγφϦΦ ࣮૷ίʔυͷमਖ਼ Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ

    Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 1ԁΛೖۚ Then 0ԁ͕ೖۚ͞Ε͍ͯΔ public class VendingMachine { int currentMoney = 0 ; public void insertCoin(int money) { if (money == 50 || money==100) { currentMoney += money ; } } public int getCurrentMoney() { return currentMoney ; } }
  8. ։ൃऀͱͷձ࿩(1) Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ Scenario:

    ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 1ԁΛೖۚ Then 0ԁ͕ೖۚ͞Ε͍ͯΔ ͢΂ͯγφϦΦ໊͕ 
 ʰೖֹۚ֬ೝʱʹͳͬͯ·͢ΑͶɻ 
 ಉ໊͡લ͸Ͳ͏͔ͱࢥ͏ͷͰ 
 ม͑ͨ΄͏͕ྑ͍ؾ͕ͯ͠·͢ɻ ͳΔ΄Ͳɻ 
 ͦͨ͠Β͜Μͳײ͡Ͱ͔͢Ͷɻ 
 ʢςετγφϦΦΛฤू͢Δʣ ࢲ ։ൃऀ
  9. Scenario: 1ճͷίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: 2ճͷίΠϯ౤ೖ

    Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: ࢖͍ͨ͘ͳ͍ίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 1ԁΛೖۚ Then 0ԁ͕ೖۚ͞Ε͍ͯΔ ͢΂ͯγφϦΦ໊͕ 
 ʰೖֹۚ֬ೝʱʹͳͬͯ·͢ΑͶɻ 
 ಉ໊͡લ͸Ͳ͏͔ͱࢥ͏ͷͰ 
 ม͑ͨ΄͏͕ྑ͍ؾ͕ͯ͠·͢ɻ ͳΔ΄Ͳɻ 
 ͦͨ͠Β͜Μͳײ͡Ͱ͔͢Ͷɻ 
 ʢςετγφϦΦΛฤू͢Δʣ ։ൃऀͱͷձ࿩(1) ࢲ ։ൃऀ
  10. ։ൃऀͱͷձ࿩(2) ͳΔ΄Ͳɻ 
 ͪͳΈʹɺͭ໨ͷςετͷҙਤͬͯ 
 ͳΜͰ͔͢Ͷʁ ίΠϯΛճ͚ͩͰ͸ͳ͘ɺ 
 ճ౤ೖͨ࣌͠ʹ΋ͪΌΜͱಈ͔͘ 


    ֬ೝ͍ͨ͠ͱ͍͏ҙਤͰ͢ɻ Scenario: 1ճͷίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: 2ճͷίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: ࢖͍ͨ͘ͳ͍ίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 1ԁΛೖۚ Then 0ԁ͕ೖۚ͞Ε͍ͯΔ ࢲ ։ൃऀ
  11. ։ൃऀͱͷձ࿩(3) ͳΔ΄Ͳʔɻ 
 ͦͨ͠ΒʰճͷίΠϯ౤ೖʱͱ 
 ॻ͍͍ͯ·͕͢ɺ 
 ճ໨͸Ͳ͏ͳΔͷͰ͠ΐ͏͔ʁ ճ໨͸ճ໨ͱಉ͘͡ɺ 


    Ճࢉ͞Ε͍ͯ͘࢓૊ΈͳͷͰɺ 
 ϩδοΫ্͸େৎ෉Ͱ͢ɻ Scenario: 1ճͷίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: 2ճͷίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: ࢖͍ͨ͘ͳ͍ίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 1ԁΛೖۚ Then 0ԁ͕ೖۚ͞Ε͍ͯΔ ࢲ ։ൃऀ
  12. ։ൃऀͱͷձ࿩(4) ͱ͍͏͜ͱ͸ɺؾʹ͍ͯ͠Δͷ͸ 
 ճͷίΠϯ౤ೖͰ͸ͳ͘ɺ 
 ෳ਺ճͷίΠϯ౤ೖͳΜͰ͢Ͷɻ ͋ʔɺ͔֬ʹͦ͏Ͱ͢Ͷɻ 
 ʢςετγφϦΦΛฤू͢Δʣ Scenario:

    1ճͷίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: 2ճͷίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: ࢖͍ͨ͘ͳ͍ίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 1ԁΛೖۚ Then 0ԁ͕ೖۚ͞Ε͍ͯΔ ࢲ ։ൃऀ
  13. ։ൃऀͱͷձ࿩(4) ͱ͍͏͜ͱ͸ɺؾʹ͍ͯ͠Δͷ͸ 
 ճͷίΠϯ౤ೖͰ͸ͳ͘ɺ 
 ෳ਺ճͷίΠϯ౤ೖͳΜͰ͢Ͷɻ ͋ʔɺ͔֬ʹͦ͏Ͱ͢Ͷɻ 
 ʢςετγφϦΦΛฤू͢Δʣ Scenario:

    1ճͷίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: ෳ਺ճͷίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: ࢖͍ͨ͘ͳ͍ίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 1ԁΛೖۚ Then 0ԁ͕ೖۚ͞Ε͍ͯΔ ࢲ ։ൃऀ
  14. ൃݴͷڧऑͷҧ͍ • ಉ໊͡લ͸Ͳ͏͔ͱࢥ͏ͷͰ 
 ɹม͑ͨ΄͏͕ྑ͍ؾ͕ͯ͠·͢ɻ • ςετͷҙਤͬͯͳΜͰ͔͢Ͷʁ • 3ճ໨͸Ͳ͏ͳΔͷͰ͠ΐ͏͔ʁ •

    ؾʹ͍ͯ͠Δͷ͸2ճͷίΠϯ౤ೖͰ͸ͳ͘ɺ 
 ɹෳ਺ճͷίΠϯ౤ೖͳΜͰ͢Ͷɻ ڧ ऑ ऑ த ௚͢΂͖ͳͷ͸ࣗ໌ͱײͨͨ͡Ί
  15. த • ಉ໊͡લ͸Ͳ͏͔ͱࢥ͏ͷͰ 
 ɹม͑ͨ΄͏͕ྑ͍ؾ͕ͯ͠·͢ɻ • ςετͷҙਤͬͯͳΜͰ͔͢Ͷʁ • 3ճ໨͸Ͳ͏ͳΔͷͰ͠ΐ͏͔ʁ •

    ؾʹ͍ͯ͠Δͷ͸2ճͷίΠϯ౤ೖͰ͸ͳ͘ɺ 
 ɹෳ਺ճͷίΠϯ౤ೖͳΜͰ͢Ͷɻ ൃݴͷڧऑͷҧ͍ ڧ ऑ ऑ ։ൃऀͷߟ͑ํΛҾ͖ग़͍ͨͨ͠Ί
  16. ൃݴͷڧऑͷҧ͍ • ಉ໊͡લ͸Ͳ͏͔ͱࢥ͏ͷͰ 
 ɹม͑ͨ΄͏͕ྑ͍ؾ͕ͯ͠·͢ɻ • ςετͷҙਤͬͯͳΜͰ͔͢Ͷʁ • 3ճ໨͸Ͳ͏ͳΔͷͰ͠ΐ͏͔ʁ •

    ؾʹ͍ͯ͠Δͷ͸2ճͷίΠϯ౤ೖͰ͸ͳ͘ɺ 
 ɹෳ਺ճͷίΠϯ౤ೖͳΜͰ͢Ͷɻ ڧ ऑ ऑ த ݸਓతओு͕গ͚ͩ͋͠ΔఏҊ
  17. ձ࿩ͷ݁Ռ Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ Scenario:

    ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 1ԁΛೖۚ Then 0ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: 1ճͷίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: 2ճͷίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: ࢖͍ͨ͘ͳ͍ίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 1ԁΛೖۚ Then 0ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: 1ճͷίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: ෳ਺ճͷίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ And 50ԁΛೖۚ Then 150ԁ͕ೖۚ͞Ε͍ͯΔ Scenario: ࢖͍ͨ͘ͳ͍ίΠϯ౤ೖ Given ࣗಈൢചػ͕͋Δ When 1ԁΛೖۚ Then 0ԁ͕ೖۚ͞Ε͍ͯΔ ਺೥ޙɺݟ௚ͨ࣌͠ʹ ςετͷҙਤ͕ΑΓ఻ΘΔͷ͸ͲΕʁ