Скажем так. Реферат (от словосочетания "набор ссылок") на тему:
Ещё раз - архитектура "хорошая" тогда, когда она хорошо тестируется.
Если к "классу" СЛОЖНО написать тест, то почему можно думать, что этот класс ЛЕГКО могут использовать ваши коллеги?
Об этом Тепляков писал вот тут - Идеальная архитектура (статьи Теплякова вообще рекомендую - ВСЕ).
На эту же тему немного порассуждал Роман Янковский вот тут - Тестируемая архитектура
О том как я сам пришёл к необходимости тестирования и к, тому что "хорошая архитектура это та, которая хорошо тестируется" и "начал спать спокойно" я написал вот тут - http://18delphi.blogspot.ru/2013/03/blog-post.html
Однако, я давно задумываюсь вот на какую тему - хорошо если мы ИЗНАЧАЛЬНО думали о тестировании и "хорошей архитектуре", и применяли различные практики (TDD в частности), но что делать если у нас есть ОГРОМНОЕ количество кода, который написан так, что о тестируемости никто не задумывался.
Что же делать?
Как сделать приложение "тестируемым"?
И как "выправить" его архитектуру?
С тех пор я попытался написать множество "статей".
Из "доисторического":
В думах о тестировании №5
GUI-тестирование "по-русски". Back to the basics. Пример нажатия на кнопку формы из скрипта
- там я пытался рассказать про GUI-тестирование так как "я его вижу". Так как я сам развивал тестирование почти пять лет.
И о ТОМ, что GUI-тестирование это - ОТ БЕДНОСТИ, т.е. от "плохой архитектуры".
Но оказалось, что "люди не понимают".
Тогда была предпринята ещё одна попытка:
Как тестировать "вообще нетестируемое"
- там я ЕЩЁ раз попытался рассказать, как тестировать приложения, которые ИЗНАЧАЛЬНО не предполагались для ТЕСТИРОВАНИЯ.
Но ОПЯТЬ оказалось, что "люди не понимают".
И тут появился Всеволод Леонов и "бросил вызов".
Вот тут:
http://programmingmindstream.blogspot.ru/2014/02/anemicdomainmodel.html?showComment=1392717297690#c4055365633171954826
За что ему - ОТДЕЛЬНО СПАСИБО!
И появился "современный" цикл "Тестирование калькулятора":
http://programmingmindstream.blogspot.ru/2014/05/61.html
По ссылке перечислены все семь статей, которые мы пока написали.
Эти статьи "навскидку" кажутся "банальными", но по-моему они тянут за собой МНОЖЕСТВО принципиальных вопросов касающихся разработки, тестирования и написания ТЗ.
- этот цикл это "открытый проект". Мы с моим коллегой из Украины будем развивать его. И планируем множество статей. И сейчас вплотную работаем над ними.
В частности есть план - http://programmingmindstream.blogspot.ru/2014/03/blog-post_5.html
Хотя жизнь уже опередила этот план и у нас есть ГОРАЗДО БОЛЬШИЕ задумки (с интересующимися - могу поделиться).
Кроме того мы РАДЫ принять "конструктивных критиков" и СОАВТОРОВ.
И есть ещё одна "хотелка" - перевести цикл про "Тестирование калькулятора" на английский.
Может быть кому-нибудь это интересно и кто-нибудь возьмётся это сделать?
Можно на "добровольных началах", а можно и "о цене попробовать договориться".
Вот собственно пока всё "что я знаю о тестировании".
P.S. Ну и есть репозитарий в котором мы сейчас ведём разработку - https://bitbucket.org/ingword/lulinproject/src/9674200a1892ab5e2682f740632c9513b3cf9e1e/DummyCalculator/?at=Release
P.P.S. Появилась следующая часть, посвящённая использованию "Тестов с эталонами" - http://programmingmindstream.blogspot.ru/2014/06/62.html
Как тестировать "нетестируемые" приложения. Или как сделать приложения тестируемыми.
Скажем так - ОСНОВОПОЛАГАЮЩЕЙ для меня является точка зрения Сергея Теплякова, который не раз уже писал, что тестируемость приложения является ИНДИКАТОРОМ (лакмусовой бумажкой) того, что архитектура приложения является "ХОРОШЕЙ".Ещё раз - архитектура "хорошая" тогда, когда она хорошо тестируется.
Если к "классу" СЛОЖНО написать тест, то почему можно думать, что этот класс ЛЕГКО могут использовать ваши коллеги?
Об этом Тепляков писал вот тут - Идеальная архитектура (статьи Теплякова вообще рекомендую - ВСЕ).
На эту же тему немного порассуждал Роман Янковский вот тут - Тестируемая архитектура
О том как я сам пришёл к необходимости тестирования и к, тому что "хорошая архитектура это та, которая хорошо тестируется" и "начал спать спокойно" я написал вот тут - http://18delphi.blogspot.ru/2013/03/blog-post.html
Однако, я давно задумываюсь вот на какую тему - хорошо если мы ИЗНАЧАЛЬНО думали о тестировании и "хорошей архитектуре", и применяли различные практики (TDD в частности), но что делать если у нас есть ОГРОМНОЕ количество кода, который написан так, что о тестируемости никто не задумывался.
Что же делать?
Как сделать приложение "тестируемым"?
И как "выправить" его архитектуру?
С тех пор я попытался написать множество "статей".
Из "доисторического":
В думах о тестировании №5
GUI-тестирование "по-русски". Back to the basics. Пример нажатия на кнопку формы из скрипта
- там я пытался рассказать про GUI-тестирование так как "я его вижу". Так как я сам развивал тестирование почти пять лет.
И о ТОМ, что GUI-тестирование это - ОТ БЕДНОСТИ, т.е. от "плохой архитектуры".
Но оказалось, что "люди не понимают".
Тогда была предпринята ещё одна попытка:
Как тестировать "вообще нетестируемое"
- там я ЕЩЁ раз попытался рассказать, как тестировать приложения, которые ИЗНАЧАЛЬНО не предполагались для ТЕСТИРОВАНИЯ.
Но ОПЯТЬ оказалось, что "люди не понимают".
И тут появился Всеволод Леонов и "бросил вызов".
Вот тут:
http://programmingmindstream.blogspot.ru/2014/02/anemicdomainmodel.html?showComment=1392717297690#c4055365633171954826
За что ему - ОТДЕЛЬНО СПАСИБО!
И появился "современный" цикл "Тестирование калькулятора":
http://programmingmindstream.blogspot.ru/2014/05/61.html
По ссылке перечислены все семь статей, которые мы пока написали.
Эти статьи "навскидку" кажутся "банальными", но по-моему они тянут за собой МНОЖЕСТВО принципиальных вопросов касающихся разработки, тестирования и написания ТЗ.
- этот цикл это "открытый проект". Мы с моим коллегой из Украины будем развивать его. И планируем множество статей. И сейчас вплотную работаем над ними.
В частности есть план - http://programmingmindstream.blogspot.ru/2014/03/blog-post_5.html
Хотя жизнь уже опередила этот план и у нас есть ГОРАЗДО БОЛЬШИЕ задумки (с интересующимися - могу поделиться).
Кроме того мы РАДЫ принять "конструктивных критиков" и СОАВТОРОВ.
И есть ещё одна "хотелка" - перевести цикл про "Тестирование калькулятора" на английский.
Может быть кому-нибудь это интересно и кто-нибудь возьмётся это сделать?
Можно на "добровольных началах", а можно и "о цене попробовать договориться".
Вот собственно пока всё "что я знаю о тестировании".
P.S. Ну и есть репозитарий в котором мы сейчас ведём разработку - https://bitbucket.org/ingword/lulinproject/src/9674200a1892ab5e2682f740632c9513b3cf9e1e/DummyCalculator/?at=Release
P.P.S. Появилась следующая часть, посвящённая использованию "Тестов с эталонами" - http://programmingmindstream.blogspot.ru/2014/06/62.html
Я бы мог помочь с переводами цикла заметок о тестировании :) Взамен на расширенную информацию о VCM - уж очень любопытно.
ОтветитьУдалитьСогласен :-)
УдалитьБудем сотрудничать? Пишите, "звоните".
УдалитьДавайте так - я вас приглашаю в соавторы блога. Вы переводите первую статью из цикла. Мы потом вместе её вычитываем. Когда "всё срастается", то я пишу статью про VCM. И мы её вместе вычитываем. Потом публикуем ОБЕ статьи ВМЕСТЕ. Ну и так "по индукции". Годится?
УдалитьСпасибо!!!
ОтветитьУдалить