Перевод книги The Art of Unit Testing

    Всем привет!
    Недавно я участвовал в попытке организации модульного тестирования в команде разработчиков. Как оказалось, для этого мне очень не хватает знаний и опыта. Т.к. у всех моих знакомых опыта примерно столько же, я решил начать восполнять пробел с прочтения книги The Art of Unit Testing (тыц тыц) — сложилось впечатление, что это «классика жанра» (ну, если даже php программисты ее рекомендуют).



    Как ни странно, эта книга до сих пор не была переведена на русский язык (и, вероятно, не будет переведена). По мере чтения книги появилась идея сделать ее коллективный перевод. Мне кажется, перевод будет существенным вкладом развитие этой интересной и нужной темы.

    Все отменяется. Я плохо искал, есть русская версия: www.ozon.ru/context/detail/id/26230428
    Извините за беспокойство.

    Я только-что залил книгу на notabenoid.com (это сервис коллективного перевода) и предлагаю всем желающим присоединиться к переводу. На хабре много людей, думаю, получится клево и относительно быстро.
    Welcome!


    Пусть пост повисит немного (вдруг кто-то из него узнает об отличной книге), потом скрою.

    ЗЫ. Когда-то давно я участвовал в коллективном переводе Black Mesa (ремейке Half Life на движке Source). Когда после этого проходил ее — испытал офигенные ощущения! Особенно, когда встречал знакомые куски текста.

    UPD. Знаете, я, наверно, не буду удалять коллективный перевод и в свободное время продолжу переводить книгу. Во-первых, это интересно и клево, во-вторых, судя по переводу названия, качество перевода в русской версии не очень хорошее. Лично я никогда бы не додумался искать книгу по фразе «искусство автономного тестирования».

    UPD2. Судя по доступным фрагментам русской версии, качество перевода оставляет желать лучшего.

    UPD3. Английская версия в PDF 1drv.ms/1ggFMuR. Если Вам понравится, купите ее. На мой взгляд, книжка более полезна, чем деньги, за которые она продается.
    Метки:
    Поделиться публикацией
    Комментарии 23
    • 0
      В течение нескольких часов выложу куда-нибудь оригинал в PDF, чтобы было легче ориентироваться в тексте и не нужно было искать его в гугле.
      • 0
        Электронная версия этой книги распространяется свободно?
    • +7
      Здесь находится стандартный комментарий о необходимости знания английского языка для работы в сфере IT.

      И комментарий о спорной правовой основе для осуществления данного перевода.
      • +5
        Очевидно, в первой части своего комментария Вы имели в виду, что перевод на русский язык будет бесполезным. Не могу согласиться. Многие читают русский текст значительно быстрее, чем английский и они хотели бы иметь книгу на русском языке. Возможно, я ошибаюсь, и идея загнется. Ну что же, в любом случае, попробовать стоило.

        На счет спорной правовой основы, к сожалению, Вы правы. Пока сам не знаю, что из этого получится.
        Если честно, я думаю, что никому до этого нет дела, по большому счету. Также я надеюсь, что некотрые люди купят эту отличную книгу (возможно, в других обстоятельствах они этого не сделали бы).
      • –1
        Основная проблема с введением тестирование — кажущаяся сложность. Это же жуть 360 страниц о том, что можно вместить на одной, а для практики можно открыть любой популярный проект на гитхабе, а лучше тесты к компоненту используемому в проекте.

        Со стажёром за пол часа разобрали теорию и написали первый тест на phpunit. Ещё час потратили на моки, они зашли сложнее. На следующий день он уже самостоятельно два своих класса обложил тестами, при этом зарефакторил нетестируемые участки.

        Осилив же 360 страниц воды и лучших практик, человек только запутается прежде, чем напишет первый тест. Особенно, когда примерами служат абстрактные калькуляторы, вместо компонентов используемых в реальных проектах.
        • +1
          А у нас на большом проекте написано много тестов, только пользы от них — никакой. Очень надеюсь, когда дочитаю книжку, у меня будут какие-то представления, позволяющие принять решения в условиях конкретного проекта (что тестировать, а что — нет, как организовать тесты, какой должна быть инфраструктура для тестов и т.д.)
        • +2
          Вы неверно имеете ввиду не введение тестирования — а введение модульных тестов. Думаю разницу вы из такой книги легко почерпнете.

          Просто элементарный модульный тест написать справиться и ребенок. Для этого действительно подойдет простая статья.

          Но в жизни такие элементарные вещи встречаются редко. Как правило модульные тесты очень сильно отличаются от того, что есть в простейших туториалах (работа на языке моков, подготовка внешнего окружения, анализ кавереджа, изменение архитектуры системы для тестирования нетестируемых классов, методов, например изоляция блоков кода для тестирования). И с такими вещами приходится иметь дело постоянно. Редко так бывает, что можно на проекте сразу начать с какого то очень простого теста.

          И очень быстро при написании тестов возникает очень много других серьезных проблем — как называть тестовые методы, что покрывать, а что нет, какого они должны быть размера и как реюзать в них функционал и т.д. Глупо самому все это проходить на своей шкуре. Если есть методики.

          То есть уметь написать элементарный тест — это по сути понимание что такое модульный тест в принципе. И все. До умения писать эффективные модульные тесты в реальной боевой обстановке отсюда ой как далеко. А неэффективные могут и не окупится на проекте.

          Хоть сам книжки не часто читаю — но в принципе — это хороший путь разобраться во всем этом.
          • 0
            Я читал эту книгу, правда первое издание. Нет там никаких откровений. Вы действительно знаете книгу где написано что покрывать, а что нет? Теоретически нужно покрывать всё на 100%, а на практике нужно отталкиваться от проекта и бизнес валуе. Книги как раз-то зачастую только воду мутят, так как там теория превыше практики.

            • 0
              Многим людям кажется, что то, что они читают они и так знают и понимают. Мало книг, которые рассказывают что то совершенно новое. Большинство просто систематизируют знания и определения. И это не менее важно. Потому что часто кажется, что вы понимаете какую то тему, хотя на самом деле — это не так.

              Вот например вы говорите, что покрывать надо на 100% или меньше отталкиваясь от проекта и бизнес валью. Я вам скажу — что это совершенно втростепенные вещи. Важно как именно вы считаете эти проценты. Что вообще включается в кавередж, а что нет. Что является изолированной бизнес логикой, а что простым маппингом или чем то еще. И дело тут не в бизнес валью, а именно в самой концепции модульных тестов. Сам по себе бизнес в приличных проектах и без модульных тестов должен быть покрыт QA процедурами (системными тестами например) — ручными или автоматизированными — вот для них ваше высказывание по настоящему актуально. Модульные тесты же служат для иных целей и там важны другие вещи.

              Большинство людей в разработке начинают с практики, но набравшись практики — понимают — что нужно систематизировать свой опыт — вот тут и нужна теория. Немного скучная, кажущаяся такой знакомой (за счет встречаемых знакомых фраз), но позволяющая все еще раз переосмыслить и понять — насколько вы все поверхностно понимали.
              • 0
                Вот, собственно сабж то о начале, из-за того что люди сразу накачиваются теорией, они боятся приступать к практике, либо слишком всё усложняют. У нас на стажёрство приходят молодые преподователи, они прекрасно знают теорию, а как доходит до практики, так караул, избыточные знания сильно мешают.

                Шлифовать знания книгами, конечно нужно обязательно, но для начала хватает доки в юнит тест фреймворку.
                • 0
                  Я думаю, если начинать с доки по юнит тест Фреймворку есть шанс сделать хрупкие тесты, которые трудно менять, и полностью разочароваться в TDD
        • 0
          Хорошая книжка. Даже я с моим плохим знанием великого и могучего довольно легко смог прочитать её.
          • 0
            Согласен, интересная и читается довольно легко.
          • 0
            Коллеги кто читал русский перевод www.ozon.ru/context/detail/id/26230428/
            поделитесь впечатлениями о качестве перевода.
            • 0
              • –1
                Мм…
                «В главе 1 я определю, что такое автономная единица и что понимается под «хорошим» автономным тестированием, „
                оригинал:
                “In chapter 1, I’ll define what a unit is and what “good” unit testing means»
            • 0
              Спасибо за работу! Книга на озоне доступна только в бумажной версии, а хочется электронной.
            • 0
              Вот тут много информации использовано из книги, правда я очень ужал материал до «самой сути»: habrahabr.ru/company/etnasoft/blog/169381/
              • 0
                Где найти коллективный перевод. Сейчас по этой (http://notabenoid.com/book/50563/) ссылке ничего не достпно
                • 0
                  Коллективный перевод не был закончен, все забили. Вот на русском языке: yadi.sk/i/kYcsqaoymfjCZ

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.