Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу Для чего нужны юнит-тесты и как с ними работать
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Rocky Rocky вне форума
Member
 
Сообщений: 1,405
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.10.2004
По умолчанию Для чего нужны юнит-тесты и как с ними работать - 03.03.2011, 17:51

Всем привет!

Скажите пожалуйста, в чем преимущество использования unit-тестов? В частности сейчас вот разбираюсь с CppUnit. Почему нельзя итак проверять все значения, которые возвращают или приходят в функции, и выводить message boxes, делать вывод в std::cerr, std::clog, qDebug (в случае Qt), писать в таблицы ошибок БД? В смысле этим ограничиться. Т.е. интересует, юнит-тестирование это атрибут XP-программирования или все-таки дает что-то такое, чего другими средствами не добиться?

Спасибо!
Ответить с цитированием
  (#2 (permalink)) Старый
Angel5a Angel5a вне форума
Member
 
Сообщений: 1,213
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.02.2005
По умолчанию 03.03.2011, 20:56

Это в первую очередь составная XP. Но отдельно её тоже можно применить.
Ответить с цитированием
  (#3 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,281
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 04.03.2011, 01:32

Мое личное мнение - все "серебряные пули" в программировании можно достичь другими средствами. Как правило, все "технологии программирования" начинаются с изложения реального опыта работы. Затем набегают многочисленные адепты и популяризаторы, и их потуги обычно сводятся к переливанию воды из пустого в порожнее. А при дальнейшей профанации эти технологии из полезного средства превращаются в оковы. Так в одном проекте от нас требовали RUP, а зачастую все делалось по-старинке и уж потом, задним числом, дополнительно обвешивалось артефактами RUP.
Ответить с цитированием
  (#4 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 07.03.2011, 12:47

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

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


"Почему нельзя итак проверять все значения, которые возвращают или приходят в функции, и выводить message boxes, делать вывод в std::cerr, std::clog, qDebug (в случае Qt), ......" - а представь себе, если этих значений тысячи и миллионы? Да еще и приходят в непредсказуемый момент времени - например, приходят по сети? Тысячи мессаджбоксов выводить? :-) Миллионы строк в cerr/clog писать? Так разработчик быстро "утонет" в них....


The difference between theory and practice is that in theory, there is no difference between theory and practice, but in practice, there is.
Ответить с цитированием
  (#5 (permalink)) Старый
Rocky Rocky вне форума
Member
 
Сообщений: 1,405
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.10.2004
По умолчанию 17.03.2011, 13:45

Вроде понял... пасиб! Автоматизация + как мне еще сказали так заказчик проверяет, все ли ок. Единственное неясно, что по правилам вроде как сначала пишутся юнит-тесты, а потом сам функционал.. Мне кажется логично наоборот, хотя фиг знает...

>> покрытие кода тестами

Угу, coverage. Даже программы специальные существуют, которые проверяют покрытие кода... Мдя, я как-будто из анабиоза проснулся))) А всего-то нормальную работу нашел.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Angel5a Angel5a вне форума
Member
 
Сообщений: 1,213
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.02.2005
По умолчанию 17.03.2011, 22:34

Rocky, поздравляю с новой работой.
Я сам с прежнего места полгода отходил, хорошо ещё слинял оттуда "вовремя".
Ответить с цитированием
  (#7 (permalink)) Старый
Gun-Down Gun-Down вне форума
;)
 
Сообщений: 306
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.07.2010
По умолчанию 20.03.2011, 01:24

Цитата:
Сообщение от Rocky Посмотреть сообщение
Единственное неясно, что по правилам вроде как сначала пишутся юнит-тесты, а потом сам функционал.. Мне кажется логично наоборот, хотя фиг знает...
это только кажется логичным. на самом деле должно быть именно так: сначала юнит тесты, потом -- функционал; это помогает лучше спроектировать интерфейсы классов и сделать сами тесты более простыми
Ответить с цитированием
  (#8 (permalink)) Старый
Rocky Rocky вне форума
Member
 
Сообщений: 1,405
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.10.2004
По умолчанию 28.03.2011, 16:22

Цитата:
Сообщение от Angel5a Посмотреть сообщение
Rocky, поздравляю с новой работой.
Я сам с прежнего места полгода отходил, хорошо ещё слинял оттуда "вовремя".
Спасибо! Да, главное вовремя.
Ответить с цитированием
  (#9 (permalink)) Старый
Rocky Rocky вне форума
Member
 
Сообщений: 1,405
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.10.2004
По умолчанию 29.03.2011, 00:15

Вообще прикольная все-таки это штука... Тока что дома поставил jenkins... Можно настроить чтоб он автоматом брал из svn исоходники, гонял юнит-тесты, показывал всякие графики, coverage тот же... Генерил документацию из исходников. Еще всякие полезные штуки типа cppcheck... Блин, как же я жил раньше без этого ))
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стеки для чего они нужны BAM_9 Delphi 1 20.05.2011 20:31
Для чего нужны указатели и как их использовать hafman С/С++ 1 08.04.2011 01:17
Жесткие ссылки для чего они нужны Alex_cs_gsp Общие вопросы программирования 0 23.02.2011 10:28
Массив в СИ для чего они нужны misha-_- С/С++ 2 02.05.2009 02:40
Сокеты на C# для чего они нужны HackersOpht .NET 3 16.09.2007 18:31
Для чего нужны Lock и Unlock julie Вопросы начинающих программистов 2 15.11.2005 22:01
Для чего нужны виртуальные функции sunrize С/С++ 8 02.11.2005 11:35
GIF Кнопки для чего они нужны Apmypuk DHTML, JavaScript, VBScript 1 20.07.2005 20:22
Для чего нужны строки и как с ними работать Sleem Общие вопросы программирования 5 12.07.2005 23:29
Тесты на BrainBench как с ними рботать wolf676 С/С++ 5 16.07.2004 13:11
Сокеты для чего они нужны Anonymous WinAPI 2 07.02.2004 12:20
Таблицы pga для чего они нужны XKiller PostgreSQL 1 02.10.2002 18:04



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов