Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 74, средняя оценка - 4.92
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
#1

С++ Unit Test (модульное тестирование) - C++

06.02.2012, 22:42. Просмотров 9688. Ответов 48
Метки нет (Все метки)

Вопроса по сути два.
1. что используете для модульного тестирования и почему отдаете этому предпочтение.
2. если используете eclipse, то очень интересует процесс конфигурирования eclipse для работы с фрэймворком тестирования.

Почему задаю вопрос... Гуглю неделю на предмет поиска данной инфорации. И прихожу в недоумение от того что 90% статей которые удалось найти не моложе 2010 года.. Как результат не могу найти нормального объяснения процесса конфигурирования IDE и фреймворка.
Я читал про : googletest, cpptest, boost.test.
к сожалению ни одну из них не удалось по человечески настроить. вроде что-то работает.. но как-то частично.. то на библиотеки ругань... то якобы не подключены пути...

Буду честен... у меня конкретный мозг оверфлоу.... я топчусь на месте. Буду благодарен за помощь.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2012, 22:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С++ Unit Test (модульное тестирование) (C++):

Нагрузочное, модульное, интеграционное тестирование - C++
Здравствуйте, в рамках практики нужно сделать нагрузочное, модульное, интеграционное тестирование своего проекта в C++, но опыта ни...

Написать функцию TEST(A,k) - C++
Написать функцию TEST(A,k), принимающую значение True, если се элементы k-й строки четные и положительные.

Unit - C++ Builder
У мя такой вопрос: Можно ли прасмотреть весь код приложения в одном файле, приложение написано на С++ Builder 6, если да, то как он...

Unit - C++ Builder
Плиз помогите подключить модуль Delphi 7 в С++ Builder 6 и как его обьявить в проекте т.е. у мя есть модуль Delphi который шифрует...

Проблемы с использованием 2-х Unit - C++ Builder
Есть 1 форма и 2 юнита. Unit1 основной, а Unit2 добавлен. К переменным Unit1 могу обратиться только так RJW->Xback, а на прямую не...

Вызов Unit'a по кнопке - C++ Builder
Привет, есть два unit'a один с формой другой нет. 1)Unit #include <vcl.h> #include <Winsock2.h> #include <Windows.h> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
07.02.2012, 19:13 #16
Evg, Да обычный framework же, не более того. Некоторые пишут сами, некоторые юзают юниксовские. Но логичнее юзать уже готовый кроссплатформенный фреймворк ИМХО.
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
07.02.2012, 19:15 #17
Evg, с ними это проще делать
кроме того есть возможность автоматизации
у меня на работе система автоматически вычекивает из системы контроля версий код, компилирует его и запускает. Фреймворк юнит-тестирования генерит xml-ки по которым система определяет какие юнит тесты прошли, а какие зафейлились, и собственно на чем
кроме того проще, когда команда использует один фреймворк юнит-тестирования, а не каждый разработчик придумывает свои велосипеды
1
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
07.02.2012, 19:34  [ТС] #18
Цитата Сообщение от Evg Посмотреть сообщение
Да собственно, последние лет 13-14 я именно так и работаю. Только без всяких наносистем типа cppunit, истинное назначение которого я так и не смог понять
А можете дать пример того как вы это делаете? Я так понимаю сами пишете. Буду очень благодарен за пример!
Я вообще сейчас и ищу для себя вопрос какой способ тестирвоания выбрать. Поэтому пытаюсь попробовать то что есть и потом остановиться на том что понравится.
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
07.02.2012, 19:41 #19
greeezz, Советую таки присмотреться к бусту. Пример минимального использования я показал. Но там много фич.
0
Evg
Эксперт CАвтор FAQ
17816 / 6026 / 388
Регистрация: 30.03.2009
Сообщений: 16,555
Записей в блоге: 26
07.02.2012, 20:30 #20
Цитата Сообщение от alex_x_x Посмотреть сообщение
когда команда использует один фреймворк юнит-тестирования, а не каждый разработчик придумывает свои велосипеды
Да проблема-то обычно не в системе тестирования, а в самих тестах.

Цитата Сообщение от greeezz Посмотреть сообщение
А можете дать пример того как вы это делаете?
Не могу, у тебя допуска соответсвующего уровня нет Да и смысла бы не было. Каждая софтина требует индивидуального подхода к тестированию. Для тестирования интерпретатора простенькая система разбиралась тут: Создание системы тестирования ПО.
0
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
07.02.2012, 20:59  [ТС] #21
Цитата Сообщение от Evg Посмотреть сообщение
Не могу, у тебя допуска соответсвующего уровня нет
Спасибо.... оценил.
Цитата Сообщение от Evg Посмотреть сообщение
Каждая софтина требует индивидуального подхода к тестированию.
Я предположил что вы тестируете методы которые пишите. вот и думал что если маленький экзампл простого теста.. ну раз нет так нет. ce n'est pas mortelle.
За ссылку спасибо. почитаю на досуге.
Цитата Сообщение от ForEveR Посмотреть сообщение
greeezz, Советую таки присмотреться к бусту. Пример минимального использования я показал. Но там много фич.
Я поставлю Boost снова т.к. снес его благополучно после неудачных попыток настроить eclipse на работу с ним. И если вы не против попозже задам пару вопросов по ошибкам которые возникнут.
0
Evg
Эксперт CАвтор FAQ
17816 / 6026 / 388
Регистрация: 30.03.2009
Сообщений: 16,555
Записей в блоге: 26
07.02.2012, 21:04 #22
Цитата Сообщение от greeezz Посмотреть сообщение
Я предположил что вы тестируете методы которые пишите
Я влез в тему именно с того, что данный момент мне не понятен. Что значит тестирование метода или функции. Как оно хотя бы приблизительно выглядит?
0
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
07.02.2012, 21:51  [ТС] #23
Цитата Сообщение от Evg Посмотреть сообщение
Я влез в тему именно с того, что данный момент мне не понятен. Что значит тестирование метода или функции. Как оно хотя бы приблизительно выглядит?
Ну нупример (очень банальный пример) вы пишите функцию sum(int a, int b) которая должна вернуть результат сложения двух чисел. Вы должны быть уверены что она работает нормально. Вы пишите тест который дергает вашу функцию подсовывает на вход значения и ожидает какой-то результат от функции. Сравнивает полученный результат от функции с результатом который ожидается и если результат не корректный то сигналит об ошибке.

Evg, вы меня простите Бога-ради... но я, отвечая на этот вопрос не могу понять его смысл из ваших уст. Это вам в пору мне разъяснять что такое модульное тестирования.. а не мне вам... Посему кроме как мысли что я не понял ваш вопрос... другого ничего не возникает.
0
Evg
Эксперт CАвтор FAQ
17816 / 6026 / 388
Регистрация: 30.03.2009
Сообщений: 16,555
Записей в блоге: 26
07.02.2012, 22:03 #24
У меня вопрос возник потому, что мне не совсем понятно, зачем для тестирования всякие нанотехнологии, библиотеки, ещё всякую хрень распознавать. Ну и вообще не понимаю смысл термина. Для меня тестирование оно и в африке тестирование. А тут умные названия типа "юнит-тестирование", всякие хрени, которые нужно скачивать, устанавливать и т.п.

Применительно к твоему примеру, если я напишу в коде своей программы что-то типа:

C
1
2
ASSERT (sum(2,3) == 5);
ASSERT (sum(10,15) == 25);
то это и будет то, о чём тут идёт речь?
0
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
07.02.2012, 22:08  [ТС] #25
Цитата Сообщение от Evg Посмотреть сообщение
то это и будет то, о чём тут идёт речь?
применительно к моему примеру да.

Добавлено через 2 минуты
а вообще.. приведу фразу из википедии которая по моему мнению достаточно четко покахзывает о чем идет речь:
Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода. Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к регрессии, то есть к появлению ошибок в уже оттестированных местах программы, а также облегчает обнаружение и устранение таких ошибок.
статья в ВИКИ
0
Evg
Эксперт CАвтор FAQ
17816 / 6026 / 388
Регистрация: 30.03.2009
Сообщений: 16,555
Записей в блоге: 26
07.02.2012, 22:10 #26
Цитата Сообщение от greeezz Посмотреть сообщение
Это вам в пору мне разъяснять что такое модульное тестирования
Да я бы объяснил, если бы понимал, что конкретно кроется за этими умными терминами

Цитата Сообщение от greeezz Посмотреть сообщение
применительно к моему примеру да
Ну очевидно, что пример очень и очень искусственный. А что реально можно таким способом оттестировать? Потому как дико подозреваю, что в реальном софте таких автономных и однозначных функций (т.е. каждой поданной на вход комбинации параметров однозначно есть правильный результат для сравнения) крайне мало. А есть пример из жизни, что вот именно этим способом можно оттестировать?

Добавлено через 1 минуту
Цитата Сообщение от greeezz Посмотреть сообщение
приведу фразу из википедии которая по моему мнению достаточно четко покахзывает о чем идет реч
Не люблю википедию в данных вопросах, потому что там всё слишком абстрактно. За таким словесным описанием может крыться что угодно. Я, например, после сказанного всё равно не понимаю, зачем для этого нужно что-то откуда-то скачивать и устанавливать. Потому что толком не понимаю, о чём конкретно ведётся речь
0
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
07.02.2012, 22:13  [ТС] #27
Цитата Сообщение от Evg Посмотреть сообщение
А есть пример из жизни, что вот именно этим способом можно оттестировать?
Оттестировать можно все что угодно я думаю. Плюс сейчас (тут где я живу) говрят так : все что нельзя протестировать - удаляем.
Я к сожалению пока не могу привести конкретных примеров потому как сам сейчас изучаю эту сторону. Посему прошу людей непосредственно практикующих ответить на данный вопрос. Я же могу пока ссылаться на вики и статьи в интернете.
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
07.02.2012, 22:13 #28
Цитата Сообщение от Evg Посмотреть сообщение
Для меня тестирование оно и в африке тестирование. А тут умные названия типа "юнит-тестирование", всякие хрени, которые нужно скачивать, устанавливать и т.п.
ну вообще понимаются же разные тестирования
юнит тестирование производит программист (white box), остальные виды тестирования обычно производятся тестировщиками
ну и вообще юнит тестирование название оттого, что тест пишется для покрытия одного модуля, в отрыве остальных (с написанием заглушек, мок-объектов итд)
0
Evg
Эксперт CАвтор FAQ
17816 / 6026 / 388
Регистрация: 30.03.2009
Сообщений: 16,555
Записей в блоге: 26
07.02.2012, 22:17 #29
В общем, я всё равно обсуждаемого предмета не понял
Ссылку на организацию одного из вариантов run-time тестирования давал выше.
Вариант статической отладки (именно отладки, а не тестирования) можешь посмотреть тут Статическая отладка программ. Правда высказывались претензии по поводу того, что "статическая отладка" - не совсем корректный термин
0
niXman
Эксперт C++
3135 / 1447 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.02.2012, 22:23 #30
Evg, ко всему что тут уже сказали, могу добавить лишь то, что системы тестирования имеют стандартизированный ими и для их проекта формат результатов тестов. некоторые умеют только на консоль выводить. другие сохранять в файл. третьи умеют форматировать отчеты множеством способов. четвертые умеют сравнивать свои же отчеты с другими отчетами и отображать прогресс/регресс.

зы
знаю что в большинстве контор юнит-тестирование не используют, но контора в которой работою я, никогда не позволит в проект втянуть чужой код без покрытия его всего тестами. по этому, иногда времязатраты на написание тестов настолько велики, что втягивать код запрещают. иногда принимают решение самим реализовать необходимый функционал. зависит от множества факторов...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2012, 22:23
Привет! Вот еще темы с ответами:

включить один unit к другому - C++ Builder
блин сижу туплю...никак не найду! как это сделать, есть два unit: unit1.cpp, unit1.h unit2.cpp, unit2.h один главный, в другом функции ,...

Включение в проект нового Unit - C++ Builder
Всем привет! Проблемма состоит в том, что при подключении в проект новой Unit, с именем "Unit2", в которой создан ноывй класс...

Обозначить функцию в пустом Unit - C++ Builder
Создал новый юнит (отдельно для сетевых функций), создал динамически сокет, объявляю функции , а он ... E2034 Cannot convert...

Unit -тестирование или автоматизированное тестирование - Программирование Android
Доброго времени суток. Я программирую «для себя» второй год, на выходе получаются разного рода приложения от постоянно подающих с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.02.2012, 22:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru