Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/78: Рейтинг темы: голосов - 78, средняя оценка - 4.87
278 / 174 / 21
Регистрация: 10.07.2011
Сообщений: 441

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

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

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

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

Буду честен... у меня конкретный мозг оверфлоу.... я топчусь на месте. Буду благодарен за помощь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.02.2012, 22:42
Ответы с готовыми решениями:

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

В Buider работает DUnit - модульное тестирование?
Добрый день. Кто-нибудь использует DUnit(или аналог для C++)? Пожалуйста, поделитесь опытом. В частности интересует: 1) На...

Unit-test для простого консольного приложения
Делаю лабу, но никак не могу разобраться и сделать юнит тест для консольного приложения, которое меняет условные буквы на условные знаки ...

48
278 / 174 / 21
Регистрация: 10.07.2011
Сообщений: 441
07.02.2012, 20:59  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Evg Посмотреть сообщение
Не могу, у тебя допуска соответсвующего уровня нет
Спасибо.... оценил.
Цитата Сообщение от Evg Посмотреть сообщение
Каждая софтина требует индивидуального подхода к тестированию.
Я предположил что вы тестируете методы которые пишите. вот и думал что если маленький экзампл простого теста.. ну раз нет так нет. ce n'est pas mortelle.
За ссылку спасибо. почитаю на досуге.
Цитата Сообщение от ForEveR Посмотреть сообщение
greeezz, Советую таки присмотреться к бусту. Пример минимального использования я показал. Но там много фич.
Я поставлю Boost снова т.к. снес его благополучно после неудачных попыток настроить eclipse на работу с ним. И если вы не против попозже задам пару вопросов по ошибкам которые возникнут.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.02.2012, 21:04
Цитата Сообщение от greeezz Посмотреть сообщение
Я предположил что вы тестируете методы которые пишите
Я влез в тему именно с того, что данный момент мне не понятен. Что значит тестирование метода или функции. Как оно хотя бы приблизительно выглядит?
0
278 / 174 / 21
Регистрация: 10.07.2011
Сообщений: 441
07.02.2012, 21:51  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Я влез в тему именно с того, что данный момент мне не понятен. Что значит тестирование метода или функции. Как оно хотя бы приблизительно выглядит?
Ну нупример (очень банальный пример) вы пишите функцию sum(int a, int b) которая должна вернуть результат сложения двух чисел. Вы должны быть уверены что она работает нормально. Вы пишите тест который дергает вашу функцию подсовывает на вход значения и ожидает какой-то результат от функции. Сравнивает полученный результат от функции с результатом который ожидается и если результат не корректный то сигналит об ошибке.

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

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

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

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

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

Добавлено через 1 минуту
Цитата Сообщение от greeezz Посмотреть сообщение
приведу фразу из википедии которая по моему мнению достаточно четко покахзывает о чем идет реч
Не люблю википедию в данных вопросах, потому что там всё слишком абстрактно. За таким словесным описанием может крыться что угодно. Я, например, после сказанного всё равно не понимаю, зачем для этого нужно что-то откуда-то скачивать и устанавливать. Потому что толком не понимаю, о чём конкретно ведётся речь
0
278 / 174 / 21
Регистрация: 10.07.2011
Сообщений: 441
07.02.2012, 22:13  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
А есть пример из жизни, что вот именно этим способом можно оттестировать?
Оттестировать можно все что угодно я думаю. Плюс сейчас (тут где я живу) говрят так : все что нельзя протестировать - удаляем.
Я к сожалению пока не могу привести конкретных примеров потому как сам сейчас изучаю эту сторону. Посему прошу людей непосредственно практикующих ответить на данный вопрос. Я же могу пока ссылаться на вики и статьи в интернете.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
07.02.2012, 22:13
Цитата Сообщение от Evg Посмотреть сообщение
Для меня тестирование оно и в африке тестирование. А тут умные названия типа "юнит-тестирование", всякие хрени, которые нужно скачивать, устанавливать и т.п.
ну вообще понимаются же разные тестирования
юнит тестирование производит программист (white box), остальные виды тестирования обычно производятся тестировщиками
ну и вообще юнит тестирование название оттого, что тест пишется для покрытия одного модуля, в отрыве остальных (с написанием заглушек, мок-объектов итд)
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.02.2012, 22:17
В общем, я всё равно обсуждаемого предмета не понял
Ссылку на организацию одного из вариантов run-time тестирования давал выше.
Вариант статической отладки (именно отладки, а не тестирования) можешь посмотреть тут Статическая отладка программ. Правда высказывались претензии по поводу того, что "статическая отладка" - не совсем корректный термин
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.02.2012, 22:23
Evg, ко всему что тут уже сказали, могу добавить лишь то, что системы тестирования имеют стандартизированный ими и для их проекта формат результатов тестов. некоторые умеют только на консоль выводить. другие сохранять в файл. третьи умеют форматировать отчеты множеством способов. четвертые умеют сравнивать свои же отчеты с другими отчетами и отображать прогресс/регресс.

зы
знаю что в большинстве контор юнит-тестирование не используют, но контора в которой работою я, никогда не позволит в проект втянуть чужой код без покрытия его всего тестами. по этому, иногда времязатраты на написание тестов настолько велики, что втягивать код запрещают. иногда принимают решение самим реализовать необходимый функционал. зависит от множества факторов...
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.02.2012, 22:26
А если с другой стороны подойти? Что за программу ты пишешь (к которой хочешь организовать тестирование)?

Добавлено через 2 минуты
Цитата Сообщение от niXman Посмотреть сообщение
системы тестирования
Грубо говоря, это то, что делает вот этот скрипт Создание системы тестирования ПО.?
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.02.2012, 22:34
грубо говоря - да.

Добавлено через 4 минуты
ну ооочень грубо...
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.02.2012, 22:41
Цитата Сообщение от niXman Посмотреть сообщение
ну ооочень грубо...
Наверное вопрос нужно было поставить как "делает, грубо говоря, то же самое"

В своё время мне стало интересно, как гуёвые программы люди тестируют Тестирование gui'ёвых программ, но понимания так и не появилось. Вот при помощи указанных выше нанотехнологий (cppunit, boost.test и т.п.) можно как-то оттетировать, к примеру, браузер. Т.е. возможно ли в автоматическом режиме оттестировать ситуацию типа того, что java-applet работает корректно?
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.02.2012, 23:00
Цитата Сообщение от Evg Посмотреть сообщение
Вот при помощи указанных выше нанотехнологий (cppunit, boost.test и т.п.) можно как-то оттетировать, к примеру, браузер. Т.е. возможно ли в автоматическом режиме оттестировать ситуацию типа того, что java-applet работает корректно?
нет. ГУЙ тестируется совсем другими технологиями/способами.

cppunit, boost.test - для тестирования примитивов (классы/функции). и чем мельче эти примитивы - тем точнее/проще и предсказуемее (хз как склоняется это слово) результаты.

Добавлено через 3 минуты
сталкивался с QtTest. не понравилось. но это наверное из-за моей предвзятости к Qt. кутешники же, восхищаются этим)
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.02.2012, 23:06
Цитата Сообщение от niXman Посмотреть сообщение
cppunit, boost.test - для тестирования примитивов (классы/функции). и чем мельче эти примитивы - тем точнее/проще и предсказуемее
Понятно. Т.е. оно используется только для отдельных узлов программы (как я уже писал выше, на мой взгляд таких узлов в среднестатистической программе не так уж и много)
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.02.2012, 23:09
Цитата Сообщение от Evg Посмотреть сообщение
Т.е. оно используется только для отдельных узлов программы
да.

Цитата Сообщение от Evg Посмотреть сообщение
на мой взгляд таких узлов в среднестатистической программе не так уж и много
а по моему, на оборот..
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.02.2012, 23:21
Тогда ТС'у хотелось бы ответить на его вопрос следующим образом. Не столь важно какую конкретную технологию для этих дел использовать, сколько важен выбор того, что и как тестировать
0
278 / 174 / 21
Регистрация: 10.07.2011
Сообщений: 441
08.02.2012, 01:04  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Тогда ТС'у хотелось бы ответить на его вопрос следующим образом. Не столь важно какую конкретную технологию для этих дел использовать, сколько важен выбор того, что и как тестировать
Я это понимаю и собираюсь как раз писать тесты для классов и в частности их методов. ГуЁвые приложения пока тестировать не собираюсь. Выбор технологии, для меня, важен хотя бы потому что она должна быть актуальна и должна поддерживаться производителем. Я например не уверен что CxxTest в состоянии поддерживать в полной мере новый стандарт С++. Просто потому что его вроде как уже не развивают.
Цитата Сообщение от Evg Посмотреть сообщение
на мой взгляд таких узлов в среднестатистической программе не так уж и много
если не брать программы студентов с этого форума то на мой взгляд их там туева хуча.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
08.02.2012, 01:11
Цитата Сообщение от greeezz Посмотреть сообщение
если не брать программы студентов с этого форума то на мой взгляд их там туева хуча.
вообщемто говоря, при хорошем процессе - это покрытие юнит-тестами большей части проекта
0
278 / 174 / 21
Регистрация: 10.07.2011
Сообщений: 441
08.02.2012, 01:22  [ТС]
Цитата Сообщение от alex_x_x Посмотреть сообщение
вообщемто говоря, при хорошем процессе - это покрытие юнит-тестами большей части проекта
Покрытие кода проекта тестами, на мой взгляд должно быть обоснованным и резонным. Уверен что все зависит от проекта и что пословица “Кашу маслом не испортишь” применима к модульному тестированию.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2012, 01:22
Помогаю со студенческими работами здесь

Модульное тестирование c++
Здравствуйте. Подскажите, пожалуйста, документацию или пример по написанию таких тестов. Сам нагуглил только сторонние библиотеки для...

Модульное тестирование
недавно понял, что сложно делать программу без тестирования её модулей. При изменении кода через большое время может вылазить ошибка, и на...

Написать мини Unit Test к программе
Не удается написать юнит тест без ошибок. Помогите написать хотя бы самый простой юнит тест. Кидаю код самого простого класса (но если что...

Unit - тестирование
Есть ли на C03++ стандарте что-то, помогающее в этом? И как это самое использовать? Ну или подкиньте хорошую статейку?

unit-тестирование функции
Заполнить массив n´m нулями и единицами «цепочкой квадратов». Размер квадрата задается. Тест: K = 4 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru