Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тестирование и рефакторинг классов, Unit тесты мешают рефакторингу ? 
:(
    Опции темы
sir_nuf_nuf
Дата 6.8.2008, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



Никто не сталкивался с такой ситуацией:
Написание тестов мешает потом изменять структуру кода.

Т.е. мы пишем unit тест который проверяет работу одного класса, тем самым фиксируя его интерфейс.
Если же мы хотим произвести рефакторинг, переместить какие либо методы, поменять структуру,

то существующие Unit тесты нужно будет менять.. это _сильно_ напрягает.

Может быть я что-то не правильно понимаю или делаю не так ?

P.S. Модераторам: Не нашел раздела ООП на нашем форуме, поэтому пишу в наш родной perl форум. Если есть более подходящий раздел - переместите.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
ginnie
Дата 6.8.2008, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Уважаемый sir_nuf_nuf,
Цитата

Может быть я что-то не правильно понимаю или делаю не так ?

Проблема в том, что Вы пишите обычные модульные тесты, а надо писать самомодифицирующиеся интеллектуальные модульные тесты, которые покрывают текущий и все будующие функционалы модуля  smile

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


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
KSURi
Дата 6.8.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Цитата(ginnie @  6.8.2008,  11:30 Найти цитируемый пост)
а надо писать самомодифицирующиеся интеллектуальные модульные тесты

Ого, а подробнее можно?


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
shamber
Дата 6.8.2008, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



KSURi, мож юмор? (смайлик, как никак)
PM MAIL Jabber   Вверх
sir_nuf_nuf
Дата 6.8.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



не, все серьезно.. пора писать модуль на CPAN  smile 

А если все таки серьезно, как смотрите на такие идею как:

тестировать не каждый класс, а фасад к модулю.. так сказать public интерфейс =)
вообще это противоречит идеям Unit тестирования, зато очень ловко делать рефакторинг.
Фактически можно менять внутренности модуля как угодно, главное что бы снаружи все работало.
 

Это сообщение отредактировал(а) sir_nuf_nuf - 6.8.2008, 14:01


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
ginnie
Дата 6.8.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Цитата

А если все таки серьезно, как смотрите на такие идею как:
тестировать не каждый класс, а фасад к модулю.. так сказать public интерфейс =)


Ответ на этот вопрос является продолжением ответа на вопрос: "зачем Вы используете unit testing".


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
gcc
Дата 6.8.2008, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



а что за модуль ради интереса qt/gkt/openql?
PM WWW ICQ Skype GTalk Jabber   Вверх
xoma
Дата 7.8.2008, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



мне всегда казалось что ООП как и предназначено для "сокрытия реализации" - т.е. вы меняеете внутреннюю работу класса а его внешний интерфейс (или public методы) остаются неизменными....Если вы меняете и public интерфейс - тогда придется менять и все вызовы методов данного класса....По мне так это ошибка проектирования изначального класса и его public методов....

p.s. Если меняется только внутренняя страктура класса (а она в свою очередь тоже покрыта тестами), я бы рекомендовал тестировать только public методы данного класса, так как они по сути должны оставаться неизменными....
PM MAIL WWW   Вверх
tishaishii
Дата 13.8.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: 4
Всего: 8



Для чего тебе нужны тесты: получить оценку работоспособности методов класса. Для этого необходимо получить оценку работоспособности каждого метода и сделать выводы по понравившемуся тебе правилу. Чтобы оценить работоспособность метода необходимо иметь информацию о способе вызова этого метода, наборы входных и выходных параметров, а так же взаимосвязь между входными и выходными параметрами. Эту информацию можно поместить в классе в унифицированном виде.

Не зная чего-то одного из перечисленного смысл тестирования теряется.
И выходит, что для каждого класса разработчику необходимо составлять собственный набор тестов. Т. к. одна и та же работа в разном контексте может давать различный результат.

Это сообщение отредактировал(а) tishaishii - 13.8.2008, 15:20
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.