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

組織にテストを書く文化を根付かせる戦略と戦術(2020秋版) / Strategy and T...

Takuto Wada
September 28, 2020

組織にテストを書く文化を根付かせる戦略と戦術(2020秋版) / Strategy and Tactics of Building Automated Testing Culture into Organization 2020 Autumn Edition

ソフトウェアテストシンポジウム 2020 新潟 JaSST'20 Niigata 基調講演
2020年9月28日(月)
http://www.jasst.jp/symposium/jasst20niigata.html

Takuto Wada

September 28, 2020
Tweet

More Decks by Takuto Wada

Other Decks in Programming

Transcript

  1. ΤϦʔτ ϋΠύϑΥʔϚʔ ϛσΟΞϜ ύϑΥʔϚʔ ϩʔύϑΥʔϚʔ ϦʔυλΠϜ ೔ະຬ ೔͔Βिؒ ि͔ؒΒϱ݄ ϱ݄͔Βϱ݄

    σϓϩΠස౓ ΦϯσϚϯυ ೔ෳ਺ճ ೔ճ͔Βिճ िճ͔Β݄ճ ϱ݄͔Βϱ݄ .553 ࣌ؒະຬ ೔ະຬ ೔ະຬ ि͔ؒΒϱ݄ มߋࣦഊ཰     ͭͷΩʔϝτϦΫε೥ͷௐࠪ IUUQTXXXTMJEFTIBSFOFU%FW0QT8FCJOBSTBDDFMFSBUFTUBUFPGEFWPQTTVSWFZSFTVMUTBSFJO w։ൃ଎౓ͱ඼࣭͸τϨʔυΦϑͷؔ܎Ͱ͸ͳ͍ w૊৫ؒͷࠩ͸͔ͳΓେ͖͘ɺ͞Βʹ։͍͍ͯΔʢʣ wѹ౗తͳࠩ͸ܧଓతσϦόϦ΍%FW0QT΁ͷ૊৫తͳ౤ࢿͷࠩ
  2. w ϩʔύϑΥʔϚʔͱͳΔ܏޲͕ڧ͍ͷ͸ɺ࣍ͷΑ͏ʹ ճ౴ͨ͠νʔϜͰ͋ͬͨ w ʮߏஙதͷιϑτ΢ΣΞ ͋Δ͍͸ར༻͢Δඞཁ ͷ͋ΔҰ܈ͷαʔϏε ͸ɺଞࣾ ֎஫ઌͳͲ ͕։

    ൃͨ͠ΧελϜιϑτ΢ΣΞͰ͋Δʯ ͭͷΩʔϝτϦΫεݫ͍͠ݱ࣮ IUUQTXXXBNB[PODPKQEQ ʰ-FBOͱ%FW0QTͷՊֶʱQ
  3. © Towersquest, Inc. 2010. all rights reserved. N. Nagappan, M.

    E. Maximilien, T. Bhat and L. Williams: Realizing quality improvement through test driven development: results and experiences of four industrial teams, Journal of Empirical Software Engineering, vol. 13, pp. 289-302 (2008) 5%%ಋೖޮՌ .4 *#. 41 IBM Driver MS Windows MS MSN MS Visual Studio ιʔείʔυαΠζ (KLOC) 41 6 26 155.2 ςετίʔυαΠζ (KLOC) 28.5 4 23.2 60.3 TDDΛ࠾༻͍ͯ͠ͳ͍ྨࣅϓϩδ ΣΫτͰͷܽؕີ౓Λ̍ͱͨ͠ͱ ͖ͷܽؕີ౓ 0.61 0.38 0.24 0.09 TDD࠾༻ʹΑΓ૿Ճͨ͠ίʔυ࣮ ૷࣌ؒ(؅ཧऀͷݟੵʹΑΔ) 15ʙ20% 25ʙ35% 15% 20ʙ25%
  4. © Towersquest, Inc. 2010. all rights reserved. 5%%ಋೖޮՌ ΤϦΫιϯଞ w

    5%%Λ࣮ࢪͨ͠৔߹ʹใࠂ͞Ε͍ͯΔ஌ݟ ‣ ػೳςετͰͷෆ۩߹ݕग़਺͕࡟ݮ͞Εͨ ‣ ίʔσΟϯά ࣮૷ ͷ͕࣌ؒˋ૿͑ͨ ‣ ςετͷΧόϨοδ͕େ͖͘ͳͬͨ w ඃݧऀΛର৅ͱͨ͠Ξϯέʔτ ‣ ͷඃݧऀ͕σόοάͷ޻਺ΛݮΒ͢ͱײͨ͡ ‣ ͷඃݧऀ͕ཁٻ͕ચ࿅͞ΕΔͱײͨ͡ ‣ ͷඃݧऀ͕ίʔυͷ඼࣭Λ্͛Δͱײͨ͡ ‣ ͷඃݧऀ͕։ൃ޻਺ΛݮΒ͢ͱײͨ͡ 42 Boby George, a and Laurie Williams: A structured experiment of test-driven development, Journal of Information and Software Technology Vol. 46, No. 5, p. 337-342(2004)
  5. ςετέʔε ϦεΫ खಈςετͷ ίετ ࣗಈԽίετ σβΠϯมߋ ηΩϡϦςΟΞϥʔτ औҾཤྺ ޱ࠲ͷౚ݁ ৽نϢʔβొ࿥

    ݕࡧ݁Ռͷฒͼସ͑ ͓ۚͷೖۚ ৼΓࠐΈͷ֬ೝ ςετέʔεΛҰཡʹ·ͱΊΔ IUUQTXXXBNB[PODPKQEQ9
  6. ςετέʔε ϦεΫ खಈςετͷ ίετ ࣗಈԽίετ σβΠϯมߋ ηΩϡϦςΟΞϥʔτ औҾཤྺ ޱ࠲ͷౚ݁ ৽نϢʔβొ࿥

    ݕࡧ݁Ռͷฒͼସ͑ ͓ۚͷೖۚ ৼΓࠐΈͷ֬ೝ ϦεΫΛݟੵ΋Δʢͬ͘͟Γߴ௿ʣ IUUQTXXXBNB[PODPKQEQ9
  7. ςετέʔε ϦεΫ खಈςετͷ ίετ ࣗಈԽίετ σβΠϯมߋ ηΩϡϦςΟΞϥʔτ औҾཤྺ ޱ࠲ͷౚ݁ ৽نϢʔβొ࿥

    ݕࡧ݁Ռͷฒͼସ͑ ͓ۚͷೖۚ ৼΓࠐΈͷ֬ೝ खಈςετͷίετΛݟੵ΋Δʢͬ͘͟Γߴ௿ʣ IUUQTXXXBNB[PODPKQEQ9
  8. ࣗಈԽίετΛݟੵ΋Δʢͬ͘͟Γߴ௿ʣ ςετέʔε ϦεΫ खಈςετͷ ίετ ࣗಈԽίετ σβΠϯมߋ ηΩϡϦςΟΞϥʔτ औҾཤྺ ޱ࠲ͷౚ݁

    ৽نϢʔβొ࿥ ݕࡧ݁Ռͷฒͼସ͑ ͓ۚͷೖۚ ৼΓࠐΈͷ֬ೝ IUUQTXXXBNB[PODPKQEQ9
  9. ༏ઌॱҐΛ෇͚ͯฒ΂ସ͑Δ ςετέʔε ϦεΫ खಈςετͷ ίετ ࣗಈԽίετ ޱ࠲ͷౚ݁ ৼΓࠐΈͷ֬ೝ औҾཤྺ ݕࡧ݁Ռͷฒͼସ͑

    ͓ۚͷೖۚ ηΩϡϦςΟΞϥʔτ ৽نϢʔβొ࿥ σβΠϯมߋ IUUQTXXXBNB[PODPKQEQ9
  10. w ࣮ߦԁ׈ੑʢ0QFSBCJMJUZʣ w ࣗಈ࣮ߦ͕༰қͰ͔ͭߴ଎ w ؍ଌ༰қੑʢ0CTFSWBCJMJUZʣ w ςετ݁Ռͷऔಘɾظ଴஋ൺֱΛࣗಈԽ͠΍͍͢ w ੍ޚ༰қੑʢ$POUSPMMBCJMJUZʣ

    w ࣄલঢ়ଶΛ੍ޚ͠ɺςετର৅Λࣗಈૢ࡞͠΍͍͢ w ෼ղՄೳੑʢ%FDPNQPTBCJMJUZʣ w ςετର৅ͷ੾Γग़͠ɺςετ؀ڥ΁ͷ෦෼ஔ׵͕༰қ IUUQTTQFBLFSEFDLDPNHPZPLJUFTUBCJMJUZJOFNCFEEFETPGUXBSF ࣗಈςετʹ͓͚ΔςελϏϦςΟ
  11. w ઀߹෦ͷݕ౼ͱۛຯ w ߜΓࠐΈ఺ͷൃݟͱґଘͷ෼཭ w ࠶ݱੑ͋Δςετϋʔωεͷ੔උ w ௒ूதฤू )ZQFSBXBSF&EJUJOH 

    w ίϯύΠϥ*%&·͔ͤ w ࢓༷Խςετ w ࢼߦϦϑΝΫλϦϯά ϨΨγʔίʔυվળͷٕ๏ IUUQTXXXBNB[PODPKQEQ
  12. var createHandler = function (getNextItemIndex) { return function (event, context,

    callback) { var alexa = Alexa.handler(event, context); alexa.registerHandlers(createHandlers(getNextItemIndex)); alexa.execute(); }; }; exports.createHandler = createHandler; exports.handler = function () { var getNextItemIndex = () => Math.floor(Math.random() * questions.length); return createHandler(getNextItemIndex); }(); exports.handler = function (event, context, callback) { var alexa = Alexa.handler(event, context); alexa.registerHandlers(handlers); alexa.execute(); }; ྫϥϯμϜੑΛ൐͏ؔ਺Λ֎͔Βࠩ͠ࠐΊΔΑ͏ʹ͢Δ 変更前 変更後