Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Agile開発に入り込むQAの方法 #fuku_mori / Agile QA Night i...

nihonbuson
April 23, 2019

Agile開発に入り込むQAの方法 #fuku_mori / Agile QA Night in FUKUOKA

2019年4月23日開催のイベント「Agile QA Night in FUKUOKA」での発表資料です。
https://connpass.com/event/126565/

nihonbuson

April 23, 2019
Tweet

More Decks by nihonbuson

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ • ϒϩοίϦʔ • @nihonbuson • גࣜձࣾϏζϦʔν • JaSST Review

    ࣮ߦҕһ௕ • WACATE ࣮ߦҕһ • ςετΤϯδχΞʹΑΔ 
 ߹ಉࢽʰCrabinkʱஶऀ
  2. ϞϒϓϩͰͲ͜·Ͱ΍Δͷʁ • ϞϒϓϩΛ࠷ॳʹ΍ͬͨձࣾͰ͸ɺ 
 ͓٬༷ͱͷϝʔϧฦ৴΋ 
 ϞϒϓϩʢϞϒϫʔΫʣͰߦ͍ͬͯΔΒ͍͠ • ϞϒϓϩΛߦ͏͜ͱͰ 


    QA͕ςετதʹؾʹ͍ͯ͠Δ͜ͱ΍ 
 ࠓޙϦεΫʹͳΓ͏Δ͜ͱΛ࿩ͤΔͷͰ͸ʁ 
 ɹɹˠ͜ͷ͋ͱɺ۩ମతͳྫͰࣔͯ͠ΈΔ
  3. 1ͭ໨ͷςετγφϦΦ Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ public

    class VendingMachine { int currentMoney ; public void insertCoin(int money) { currentMoney = money ; } public int getCurrentMoney() { return currentMoney ; } }
  4. 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ʮ͓ۚΛԁೖΕͨޙʹɺԁΛೖΕͨΒɺ 
 ͪΌΜͱԁʹͳΔΑ͏ʹͯ͠΄͍͠ͳʯ
  5. 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 ; } }
  6. 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 ; } }
  7. 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ʮ̍ԁߗ՟͸ରԠͨ͘͠ͳ͍ͳʯ
  8. 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 ; } }
  9. 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 ; } }
  10. ։ൃऀͱͷձ࿩(1) Scenario: ೖֹۚ֬ೝ Given ࣗಈൢചػ͕͋Δ When 100ԁΛೖۚ Then 100ԁ͕ೖۚ͞Ε͍ͯΔ Scenario:

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

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


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


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

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

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

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

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

    ؾʹ͍ͯ͠Δͷ͸2ճͷίΠϯ౤ೖͰ͸ͳ͘ɺ 
 ɹෳ਺ճͷίΠϯ౤ೖͳΜͰ͢Ͷɻ ڧ ऑ ऑ த ݸਓతओு͕গ͚ͩ͋͠ΔఏҊ
  19. ձ࿩ͷ݁Ռ 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ԁ͕ೖۚ͞Ε͍ͯΔ ਺೥ޙɺݟ௚ͨ࣌͠ʹ ςετͷҙਤ͕ΑΓ఻ΘΔͷ͸ͲΕʁ