Показаны сообщения с ярлыком DummyCalculator. Показать все сообщения
Показаны сообщения с ярлыком DummyCalculator. Показать все сообщения

среда, 25 июня 2014 г.

Тестируем калькулятор №7. Сравнение чисел с плавающей запятой. Детальнее об архитектуре тестов

Оглавление всей серии постов о тестировании калькулятора.
Нарисовав диаграмму классов к прошлой главе, я заметил что у меня есть класс TRandomPlusTest который я не видел в GUI DUnit'a.

четверг, 19 июня 2014 г.

Тестируем калькулятор № 6.2.2. Обработка неверных данных и граничных условий

Стоило мне написать про ночи без звонков. Как это сразу и случилось. Заказчик прислал такую вот картинку:


В общем, я конечно же не учел деления на ноль.
На мой удивленный вопрос - "А Вы знаете что на 0 делить нельзя ?"
Клиент заявил что - "Необходимо что бы калькулятор писал "Деление на 0" в ответе".


среда, 11 июня 2014 г.

Тестируем калькулятор №6.2.1. Применяем "классическое TDD"


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


вторник, 10 июня 2014 г.

Тестирование калькулятора. Оглавление

Глава 6.1. Тестирование с использованием эталонов.
Глава 6.2.Тестирование с использованием псевдослучайных данных.
Глава 6.2.1. Применяем "классическое TDD".
Глава 6.2.2. Обработка неверных данных и граничных условий.
Глава 6.2.2. Приложение. UML диаграмма классов тестирования.
Глава 7. Сравнение чисел с плавающей запятой, детальнее об архитектуре тестов


План будущих статей.


Тезисы о тестах.

Пояснения о "непоказательности примера".
Тесты как "пример использования кода".

Ну и закольцуем - Как тестировать "нетестируемые" приложения.


Диаграмма класов UML.



Ну и Offtopic - Коротко. Нельзя никого насильно сделать счастливым.

Ну и НЕ Offtopic - Коротко. Про тесты.

Ну и ещё - Про пред- и пост-условия. "Другое" мнение.

вторник, 3 июня 2014 г.

Тестируем калькулятор №6.2.1. Применяем "классическое TDD" (анонс)

Предыдущая серия была тут - http://programmingmindstream.blogspot.ru/2014/06/62.html

Промежуточные итоги я постарался сформулировать вот тут - http://programmingmindstream.blogspot.ru/2014/06/62.html?showComment=1401745726422#c664156170645232329

Теперь мы поговорим о "классическом TDD", а именно - о его части - Test First.

В предыдущих главах мы сделали вот что:

1. Настроили ИНФРАСТРУКТУРУ тестирования.
2. Сделали GUI-тесты.
3. Сделали тесты бизнес-логики.
4. Сделали тесты бизнес-логики с использованием эталонов и ПРОТЕСТИРОВАЛИ (худо-бедно) работу эталонов.
5. Из тестов бизнес-логики и работы с эталонами при помощи псевдослучайных данных мы сделали РЕГРЕССИОННЫЕ тесты.

Теперь давайте попробуем применить "классическое TDD".

понедельник, 2 июня 2014 г.

Тестируем калькулятор № 6.2. Тестирование с использованием псевдослучайных данных

Имея в распоряжении 4 теста для 4 операций мы точно не проверяем "большой разброс" во входных данных. Для того чтобы расширить наше тестовое покрытие мы переходим к нашей новой главе - "Тестированию с использованием псевдослучайных данных". Как следует из названия, нам необходим какой-то случайный набор данных для тестирования. Результаты тестирования при этом будут записываться в выходной файл, так же как мы делали это в прошлой главе. 

Для начала проведем небольшой рефакторинг нашего класса TCalculatorOperationViaEtalonTest

четверг, 29 мая 2014 г.

Тестируем калькулятор № 6.1. Тестирование с использованием эталонов

Глава 0.
Глава 1.
Глава 2.
Глава 3.
Глава 4.
Глава 5.

В прошлой главе мы перешли от тестирования GUI формы, к тестированию бизнес-логики, выделив класс бизнес логики TCalculator.

В этой главе мы обсудим и внедрим “Тестирование с использованием эталонов”. Тестирование с использованием эталонов строится на базе тестов из прошлой главы. Однако выполняет более важную функцию, о чем будет рассказано далее. В двух словах -использование эталонов предполагает сохранение значений и результата теста в файл, который мы затем сравниваем с эталонным. Если файлы не совпадают то тест “провалился”. Тут возникает вопрос откуда мы возьмем эталонный файл? И здесь у нас 2 варианта: Либо мы его создадим руками, либо как поступил я - если эталона не существует, то мы создаем его автоматически на основе файла результата тестирования, так как допускаем что тесты у нас заведомо правильные.

Постараюсь более детально объяснить на примере написания эталонного теста к операции + или как она записана у нас в калькуляторе функция ADD.