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

テストを書かない言い訳をさせてくれ

takasek
March 13, 2017

 テストを書かない言い訳をさせてくれ

iOS Test Night #3 - connpass
https://testnight.connpass.com/event/49561/
での発表資料です。

👉続き https://speakerdeck.com/takasek/tesutowoshu-kanaiyan-iyi-wositajie-guo-wwwwwww

参考リンク:

レガシーコード改善ガイド(ウルシステムズ株式会社 平澤章 マイケル・C・フェザーズ 越智典子 稲葉信之 田村友彦 小堀真義) | 翔泳社の本
http://www.shoeisha.co.jp/book/detail/9784798116839

Stable Dependencies Principle
http://wiki.c2.com/?StableDependenciesPrinciple%60

PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016 // Speaker Deck
https://speakerdeck.com/twada/php-conference-2016

Swift実践入門 ──直感的な文法と安全性を兼ね備えた言語:書籍案内|技術評論社
http://gihyo.jp/book/2017/978-4-7741-8730-3

開発を効率化するテストのデザインパターン // Speaker Deck
https://speakerdeck.com/orgachem/kai-fa-woxiao-lu-hua-surutesutofalsedezainpatan

UIをSwiftyに書く | try! Swift Tokyo 2017 #tryswiftconf Day1-10 聞き起こし - niwatakoのはてなブログ
http://niwatako.hatenablog.jp/entry/2017/03/02/160620

takasek

March 13, 2017
Tweet

More Decks by takasek

Other Decks in Programming

Transcript

  1. ςετΛॻ͔ͳ͍
    ݴ͍༁Λͤͯ͘͞Ε
    by takasek
    2017/3/13 iOS Test Night #3
    1

    View Slide

  2. Unit Test
    ॻ͖ͨ͘ͳ͍
    Ͱ͟͝Δ…ʂ
    2

    View Slide

  3. ςετॻ͖ͨ͘ͳ͍ཧ༝ᶃ
    ςετϑΝΠϧ΁ͷڑ཭͕ԕ͍
    ։͚ͩ͘Ͱ΋ΊΜͲ͍
    ԟ෮͢Δͷ͸΋ͬͱΊΜͲ͍
    3

    View Slide

  4. 4

    View Slide

  5. ਖ਼ؾ͔!?
    5

    View Slide

  6. " ຊ൪ίʔυͱςετίʔυΛߦͬͨΓདྷͨΓ͢
    ΔͨΊʹɺσΟϨΫτϦߏ଄Λ্͕ͬͨΓԼ͕ͬ
    ͨΓ͠ͳ͚Ε͹ͳΒͳ͍ͱͨ͠Βɺ࡞ۀͷͨͼʹ
    ·ΔͰ੫ۚΛ෷͍ͬͯΔ͔ͷΑ͏ʹࢥ͑ͯ͠·͏
    ͜ͱͰ͠ΐ͏ɻ"
    ɹɹɹɹɹɹ- ϨΨγʔίʔυվળΨΠυ P243
    6

    View Slide

  7. ɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹ- ϨΨγʔίʔυվળΨΠυ P242
    7

    View Slide

  8. ଓʑͱಧ͘ɺ೤͍ڞײͷ੠ʂ
    8

    View Slide

  9. Ͱ΋
    ݱ࣮͸
    ͜ΕͰ͢
    9

    View Slide

  10. ͜͏͍͏ϓϩδΣΫτͳΜͯɺݟͨ͜ͱͳ͍
    10

    View Slide

  11. ͜͏͍͏ϓϩδΣΫτͳΜͯɺݟͨ͜ͱͳ͍
    ɹɹɹɹɹɹɹɹɹ…΍ͬͯΔਓɺ͍·͔͢ʁ
    11

    View Slide

  12. !௥ه!
    ձ৔ʹ͍ͨ100ਓ௒ͷࢀՃऀதɺ
    ڍखͨ͠ͷ͸0ਓͰͨ͠ɻ
    12

    View Slide

  13. !
    13

    View Slide

  14. ςετॻ͖ͨ͘ͳ͍ཧ༝ᶄ
    ςετ͸ෛ࠴ʹͳΓ͏Δ
    ࢓༷΍ΠϯλϑΣʔε͝ͱ
    ίϩίϩมΘΔίʔυʹରͯ͠ͷςετ
    ͱͯ΋ͭΒ͍
    14

    View Slide

  15. ҆ఆґଘͷݪଇʢSDPʣ
    "The dependencies between packages should
    be in the direction of the stability of the
    packages. A package should only depend upon
    packages that are more stable than it is. " 1
    ύοέʔδͷґଘؔ܎͸ɺ҆ఆੑͷํ޲ʹґΒͳ͚Ε͹ͳΒͳ͍ɻ
    ύοέʔδ͸ɺΑΓ҆ఆͨ͠ύοέʔδʹͷΈґଘ͢΂͖ͩɻ
    ɹɹɹɹɹɹɹɹɹɹɹɹɹɹ- Robert C. Martin
    1
    Stable Dependencies Principle
    http://wiki.c2.com/?StableDependenciesPrinciple
    15

    View Slide

  16. ͳΜͰςετίʔυ͸
    ෆ҆ఆͳϓϩμΫτίʔυʹ
    ੵۃతʹґଘ͠ʹ͍ͬͯΔͷ…ʁ
    16

    View Slide

  17. ࣗಈςετͷಈػ

    ಈ࡞৚݅ΛਓͷखͰ؅ཧɾ೺Ѳ͠ɺ
    ෆਖ਼ಈ࡞͸ϏϧυޙʹखಈͰ஄͘
    17

    View Slide

  18. ࣗಈςετͷಈػ

    ಈ࡞৚݅ΛਓͷखͰ؅ཧɾ೺Ѳ͠ɺ
    ෆਖ਼ಈ࡞͸ϏϧυޙʹखಈͰ஄͘

    ಈ࡞৚݅Λςετίʔυʹॻ͖ɺ
    ෆਖ਼ಈ࡞͸ϏϧυϑΣʔζͰࣗಈͰ஄͘
    18

    View Slide

  19. ࣗಈςετͷಈػɺͦͷઌ

    ಈ࡞৚݅ΛਓͷखͰ؅ཧɾ೺Ѳ͠ɺ
    ෆਖ਼ಈ࡞͸ϏϧυޙʹखಈͰ஄͘

    ಈ࡞৚݅Λςετίʔυʹॻ͖ɺ
    ෆਖ਼ಈ࡞͸ϏϧυϑΣʔζͰࣗಈͰ஄͘
    #
    ಈ࡞৚݅ΛϓϩμΫτίʔυʹॻ͖ɺ
    ෆਖ਼ಈ࡞͸ϏϧυલʹࣗಈͰ஄͘
    19

    View Slide

  20. 20

    View Slide

  21. ςετͰಈ࡞อূ͠ͳ͚Ε͹
    ҆৺Ͱ͖ͳ͍ίʔυΛ
    ॻ͍ͯΔͷ͕
    ѱ͍ɻ
    21

    View Slide

  22. TDD
    Red-Green-Refactor
    !→✅→#
    22

    View Slide

  23. ίϯύΠϧΤϥʔ͸
    ΋ͬͱ΋ଈϨεͳ
    !Red
    23

    View Slide

  24. ͦͷςετ
    ୅ΘΓʹܕઃܭͰ
    ͳΜͱ͔Ͱ͖ͳ͍ʁ
    24

    View Slide

  25. 4 ڍಈ͕มԽ͢ΔͳΒ
    ɹϙϦϞʔϑΟζϜͰந৅Խ͢Δͱ͔
    4 ਖ਼͘͠ͳ͍஋͕ೖΓ͏ΔͳΒ
    ɹܕʹแΜͰfailable initializerΛ࢖͏ͱ͔
    4 ࿈ಈͯ͠มԽ͢ΔϓϩύςΟ͸
    ɹtupleʹవΊΔͱ͔
    ɹenumͷassociated valueʹدͤΔͱ͔
    4 cf. Result ܕ
    25

    View Slide

  26. ۩ମྫ͸লུ
    ੴ઒༸ࢿ (@_ishkawa) ͞Μͷ
    ஶॻʮSwift࣮ફೖ໳ʯͱ͔
    kuniwak͞Μͷຊ೔ͷൃද
    ʮ։ൃΛޮ཰Խ͢Δςετͷ
    ɹσβΠϯύλʔϯʯͱ͔
    try! Swiftͷൃද
    ʮUIΛSwiftyʹॻ͘ʯͱ͔2
    2
    UIΛSwiftyʹॻ͘ | try! Swift Tokyo 2017
    #tryswiftconf Day1-10 ฉ͖ى͜͠
    - niwatakoͷ͸ͯͳϒϩά
    http://niwatako.hatenablog.jp/entry/
    2017/03/02/160620
    26

    View Slide

  27. ͔ͤͬ͘ͷܕ҆શݴޠͳΒ
    ಈ࡞ͷࣄલ৚݅Λ
    ܕઃܭʹدͤͯ
    ΑΓϩʔίετʹ
    ҆શΛखʹೖΕΑ͏Α
    27

    View Slide

  28. ͦΕͰ΋
    ςετ͡Όͳ͖ΌอূͰ͖ͳ͍
    ϩδοΫ͸ଟ͍…!
    ͦΜͳͱ͖ɺϓϩμΫτίʔυͱςετίʔυͱ
    ڑ཭ͷԕ͞͸΍͸ΓωοΫ
    → ஌ݟ͕ཉ͍͠ʂʂʂʂʂʂ
    28

    View Slide

  29. ࠓ೔ͷ݁࿦
    iOS Test Night #4 Ͱ͸
    ςετࣗମͷํ๏࿦͚ͩͰͳ͘
    ςετͷίετͷԼ͛ํ
    ٻΉ!
    29

    View Slide