Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

программист задрал тестера :)

18.02.10 13:16
Re: программист задрал тестера :)
 
Murr_0005 прохожий
в ответ AlexOtt 18.02.10 10:51
ты определяешь баги раньше, чем
-----
Ты не покажешь образец своего кода и соответствующие тесты? Желательно,
не самые тривиальные.
Вот моя ситуация с багами на последнем месте работы.
Происходит миграция с версии на версию. В результате миграции система
должна производить тот выход, что и в первой версии.
Одна из новинок - динамическое отслеживание навигации по объектам.
В первой версии (база) - отсутствовала, (таблица) - константа, (поле) - поле.
Т.е. пишем:
1) база.таблица1.поле
2) база.таблица2.поле
и имеем в свойствах поля именно то, что определено для конкретного
поля. Наборы свойств для 1) и 2) разные и частично определяют выход.
Система в целом - работает - т.е. нет необработанных прерываний
и процесс доходит до завершения.
Выход - тоже генерируется. По большей части - правильно. Но время
от времени - неправильно. Когда происходит сбой - непонятно - одни
и те же исходные данные приводят к обоим - правильному и неправильному
результатам.
Если брать тер. базис, то выход определяется перемножением двух языков
(читай - двух бесконечостей). Собственно, миграция на новую версию и
была процессом введения второго языка. Грамматики обоих языков определены
не полностью. Доопределить - не удается принципиально - система "открытая"
для языков.
Багов в системе было несколько - от архитектурных - не различались идентификаторы
объектов - в первой версии с этой проблемы не было вообще и задача различения
не ставилась, до неправильно определения контекста... но как-то с этим справился.
Написать полные тесты для подобной системы элементарно невозможно - пара
бесконечностей мешает.
Частичные - не выявляют всех проблем.
По-элементные или юнит тесты - не дают никаких ошибок - все элементы
отрабатывают как планировалось.
Я не говорю, что тесты - лишнее. Просто не всегда и не везде затраты на написание
тестов будут релевантны.
во всех написано, что обнаружение бага должно происходить как можно ближе
к процессу когда баг был внесен, иначе затраты возрастают многократно.
-----
Так это все понятно. Чем быстрее быстрее обнаружишь где спорол фигню, тем
меньше править. Мелкомягкие, правда, привыкли объявлять баги фичами, но это
не мое...
 

Перейти на