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

変更容易性と理解容易性を支える自動テスト(2024/02版) / Automated Test Knowledge from Savanna 202402 YAPC::Hiroshima edition

Takuto Wada
February 10, 2024

変更容易性と理解容易性を支える自動テスト(2024/02版) / Automated Test Knowledge from Savanna 202402 YAPC::Hiroshima edition

YAPC::Hiroshima 2024

Takuto Wada

February 10, 2024
Tweet

More Decks by Takuto Wada

Other Decks in Programming

Transcript

  1. ςετͷग़ྗͱૂ͍ w ςετ݁Ռͷग़ྗͱૂ͍ w γάφϧͱͯ͠ w ܽؕͷߜΓࠐΈͱͯ͠ w υΩϡϝϯτͱͯ͠ w

    σʔλͱͯ͠ w ੒ޭ࣌ͷ৘ใྔΛίϯτϩʔϧ͢Δٕज़ w ςετ໊ͱߏ଄ w SFQPSUFS w ࣦഊ࣌ͷ৘ใྔΛίϯτϩʔϧ͢Δٕज़ w ςετ໊ͱߏ଄ w ςεταΠζʢޙड़ʣ w BTTFSUJPO FYQFDUBUJPO NBUDIFS % FN P
  2. Ϣχοτ ΠϯςάϨʔγϣϯ && ίετ ஧࣮ੑ ଎౓ ςετέʔε਺ ߴ ௿ ௿

    ߴ ܾఆੑ ϒϨͷগͳ͍ςετͷ෼ྨج४͸ʜʜʁ
  3. ςετμϒϧͷར఺ͱ஫ҙ఺ w ར఺ w ͦ΋ͦ΋ςετ͠ʹ͍͘΋ͷΛςετՄೳʹ͢Δ w ςετͷ଎౓ͱܾఆੑΛ޲্ͤ͞Δ w ஫ҙ఺ w

    ςετର৅ͷ࣮૷ͱͷߏ଄త݁߹͕ߴ·Γɺςετ͕੬͘ͳΓɺِ ཅੑΛট͘ w ࣗ࡞ࣗԋςετͷϦεΫ͕͋ΓɺِӄੑΛট͘
  4. 4NBMM .FEJVN -BSHF ίετ ஧࣮ੑ ଎౓ ςετέʔε਺ ߴ ௿ ௿

    ߴ ܾఆੑ ςετμϒϧͰαΠζμ΢ϯͯ͠ɺ֤αΠζΛϐϥϛουܕʹ഑ஔ͠ɺςετશମͷ৴པੑΛҡ࣋͢Δ ςετμϒϧ ςετμϒϧ ςετ༰қੑઃܭ υϝΠϯઃܭ
  5. ِཅੑͱِӄੑͷύλʔϯ w ِཅੑ w ੬͍ςετ CSJUUMFUFTU GSBHJMFUFTU  w ৴པෆೳςετ

    fl BLZUFTU  w ِӄੑ w ۭৼΓ w ΧόϨοδෆ଍ɺςετෆ଍ w ࣗ࡞ࣗԋ
  6. ِཅੑͱِӄੑͷύλʔϯ w ِཅੑ w ੬͍ςετ CSJUUMFUFTU GSBHJMFUFTU  w ৴པෆೳςετ

    fl BLZUFTU  w ِӄੑ w ۭৼΓ w ΧόϨοδෆ଍ɺςετෆ଍ w ࣗ࡞ࣗԋ
  7. 4NBMM ʢ୯Ұϓϩηεʣ .FEJVN ʢ୯ҰϚγϯʣ -BSHF ʢ੍໿ͳ͠ʣ 6OJU େ͍ʹਪ঑ ආ͚͍͕ͨ ͔ͨ͠ͳ͍ͱ͖΋

    ࠷ѱ͕ͩ Α͘ݟ͔͚Δ *OUFHSBUJPO ॻ͚ΔͳΒ ίεύྑ͠ ී௨ Ͱ͖Ε͹ ආ͚͍ͨ && ݪཧ্ෆՄೳʹ͍͕ۙ খ͍͞γεςϜͳΒՄೳʁ খ͍͞γεςϜ ͳΒՄೳ ී௨͔ͭ $6+ʹߜΓ͍ͨ 5FTU4DPQFͱ5FTU4J[F ߏ଄త ݁߹౓ ௿ ߴ 5FTU4J[F 5FTU4DPQF ೉ қ ໰୊Օॴಛఆͷ༰қ͞
  8. 4NBMM ʢ୯Ұϓϩηεʣ .FEJVN ʢ୯ҰϚγϯʣ -BSHF ʢ੍໿ͳ͠ʣ 6OJU େ͍ʹਪ঑ ආ͚͍͕ͨ ͔ͨ͠ͳ͍ͱ͖΋

    ࠷ѱ͕ͩ Α͘ݟ͔͚Δ *OUFHSBUJPO ॻ͚ΔͳΒ ίεύྑ͠ ී௨ Ͱ͖Ε͹ ආ͚͍ͨ && ݪཧ্ෆՄೳʹ͍͕ۙ খ͍͞γεςϜͳΒՄೳʁ খ͍͞γεςϜ ͳΒՄೳ ී௨͔ͭ $6+ʹߜΓ͍ͨ 5FTU4DPQFͱ5FTU4J[F ߏ଄త ݁߹౓ ௿ ߴ 5FTU4J[F 5FTU4DPQF ೉ қ ໰୊Օॴಛఆͷ༰қ͞ ίεύྑ͠ ίεύѱ͠
  9. ِཅੑͱِӄੑͷύλʔϯ w ِཅੑ w ੬͍ςετ CSJUUMFUFTU GSBHJMFUFTU  w ৴པෆೳςετ

    fl BLZUFTU  w ِӄੑ w ۭৼΓ w ΧόϨοδෆ଍ɺςετෆ଍ w ࣗ࡞ࣗԋ
  10. // プロダクトコード class Item { // コンストラクタ割愛 tax_amount() { const

    rate = (this.tax_rate / 100); return (this.price / (1 + rate)) * rate; } } // テストコード it('税込価格から税額を返す', () => { const item = new Item('技評茶', 130, 8); const expected = (130 / (1 + (8 / 100))) * (8 / 100); assert.equal(item.tax_amount(), expected); }); ࣗ࡞ࣗԋͷྫςετର৅ϩδοΫͷςετίʔυ΁ͷ࿙Εग़͠ ԁະຬͷ୺਺͕ൃੜ͢Δ όά͕͋Δ ςετίʔυͷํ΋ಉ͡ϩδοΫͰ ظ଴஋Λܭࢉ͍ͯ͠ΔͷͰ ςετ͕੒ޭͯ͠͠·͏
  11. 4NBMM .FEJVN -BSHF ίετ ஧࣮ੑ ଎౓ ςετέʔε਺ ߴ ௿ ௿

    ߴ ܾఆੑ ·ͱΊςετμϒϧͰαΠζμ΢ϯͯ͠ɺ֤αΠζΛϐϥϛουܕʹ഑ஔ͠ɺςετશମͷ৴པੑΛҡ࣋͢Δ ςετμϒϧ ςετμϒϧ ςετ༰қੑઃܭ υϝΠϯઃܭ