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

протестировать методы класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дано вещественное число А http://www.cyberforum.ru/cpp-beginners/thread587160.html
Дано вещественное число А. Найти среди чисел 1, 1+1/2, 1+1/2+1/3+... первое число, большее А Плиз помогите катастрофически не успеваю...
C++ Организовать ввод трех чисел, первое из которых является наибольшим общим делителем двух последних 1)Организовать ввод трех чисел, первое из которых является наибольшим общим делителем двух последних. 2)У заданного натурального числа найти среднее арифметическое его цифр. В с++ Помогите пожалуйста :wall: http://www.cyberforum.ru/cpp-beginners/thread587148.html
C++ Дайте пожалуйста ссылку на сайт с командами
Помогите вспомнить на сайт с командами и функциями для С++, точно не помню на кажется эта страница была на сайте Microsoft, но что то не нашел её там
из паскаля в си++ C++
:( помогите пожалуйста перевести программку из паскаля в си++, (заранее благодарна) : Program matr; Uses Crt; Var a:array of integer; v:array of integer; i,j,n,k,i1,m,j1,s:integer; Begin
C++ Для треугольника известны три стороны. Найти его площадь, если этот треугольник прямоугольный http://www.cyberforum.ru/cpp-beginners/thread587088.html
Для треугольника известны три стороны. Найти его площадь, если этот треугольник прямоугольный. В с++
C++ Задача на нахождение среди символов последовательности требуемых букв Даны символы s1, s2, … Известно, что символ s1 отличен от восклицательного знака и что среди s2, s3,… есть по крайней мере один восклицательный знак. Пусть s1, …, sn – символы данной последовательности, предшествующие первому восклицательному знаку (n – заранее неизвестно). Выяснить, верно ли что среди символов последовательности имеются все буквы, входящие в слово шина. подробнее

Показать сообщение отдельно
Bers
Заблокирован
26.05.2012, 11:51     протестировать методы класса
создаешь отдельный проект. В котором создаешь объект твоего вектора.
И толкаешь все методы этого объекта, по следующей методике:

1. Сначала методы запускаются с заведомо некорректными аргументами.

Цель: определить поведение класса, как он справится с задачей в условиях программных ошибок вызывающей стороны.

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

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

Приемлемое состояние: определяется требованиями к проект-заданию класса.

Плохое состояние: класс мух не ловит, и по своей вине допустил неправомерное крушение приложения.

Отвратительное состояние: класс мух не ловит, и по своей вине допустил, что вызывающая сторона не подозревает о происшествии, и теперь оперирует заведомо некорректными данными. (Приложение сохранило работоспособность, хотя данные испорчены, и последствия не предсказуемы).

2. Далее запускаются пограничные методы класса (минимально возможно допустимые аргументы, и максимально возможно допустимые), а так же аргументы из середины допустимого диапазона.

Цель - убедится в работоспособности штатной работы класса.


Принципы проведения тестов:

1. Тест должен иллюстрировать "use_case" класса, или по другому: "иллюстрация того, как это работает"

То есть, если это класс vector, и мы проверяет работу метода operator=, то тест должен показать читателю: как вектору присвоить что-то.

После запуска метода, тестировочный код должен сверить полученный результат (состояние вектора) с ожидаемым (и гарантированно правильным). Если ожидаемое не соответствует факту - значит метод отработал не так, как должен был. Значит тест провалился, и нужно искать причину ошибки.

Каждый отдельный тест должен быть независимым от других тестов, в "новой", "чистой" среде.
Результаты тестов не должны влиять друг на друга, и как то друг от друга зависеть.

Особое внимание следует уделить краш-тестам. Это тесты на выносливость класса, или тесты "как класс поведёт себя в критической ситуации". Если класс в критической ситуации обязан обрушить приложение - нужно убедиться, что он действительно это сделает.


В качестве фрейморка для быстрого и удобного создания серий тестов рекомендую google test.
Их вреймворк прост, удобен, и предоставляет достаточно мощный инструментарий для тестирования всего и вся.
 
Текущее время: 07:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru