megavegetables

тестирование

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

однако, с другой стороны, автоматическое тестирование имеет огромный плюс в случае отладки системы черных ящиков /* читай - модульного / многоуровневого / и т.д. приложения */, когда каждый из ящиков можно при помощи этих фреймворков легко протестировать и отладить отдельно от других, подставляя заглушки куда надо.

с третьей стороны, есть test-driven development, когда сначала пишутся тесты, а потом уже делается софт под них. это правильно, но, как я уже говорил, "это как секс - все о нем говорят, но мало кто им на самом деле занимается" ©.

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

ЗЫ. ну это так, для тех кто в теме :).
  • place: Prevessin, France
  • feel: cold cold
  • noise: Tristania - Lost / World of Glass [2001]
Tags: ,
бля потому что не девелоперы долэжны это писать ;).
Я этим на деле занимаюсь (пишу тесты _до_написания кода и т.п.) - не потому, что начальство модную книгу прочитало, а для себя. Честно говоря, работу без тестов не представляю.
ну я тоже этим занимаюсь. но исключительно для интеграционного тестирования. писать тесты для тестирования функций и вычислять покрытие тестами кода - это бред :)
Не понял мысли поста. по пунктам:
1) Тест-фреймворки и тесты бесполезны, так как логику проверить нельзя
2) Но тесты полезны для тестирования чёрных ящиков
3) А еще есть тест-дривен-девелопмент, но это сложно - так как нужно понимать, что тестируем.
Так?

имхо без хороших тестов любое приложение через очень быстро становится неуправляемым.

1) То, что такои фреймворки как Junit и spring test support полезны, ты надеюсь спорить не будешь? :-) Еще TestNG, Selenium хорошие, но они не такие универсальные ;)
2) Логику проверять можно и нужно. Если проверять её сложно и приходится подготавливать много зависимых модулей/данных - что-то плохо с модульностью в приложении и есть повод задуматься.
3) Тестирование чёрного ящика - оченно размытое понятие, так как вообще говоря любая функция - чёрный ящик.;) Опять-таки заглушки можно вешать и на модули и на систему в целом. Так что твой пункт два в общем-то говорит о том, что тестирование полезно ;)
4) Если тесты проверяют неправильную логику - значит что-то не то с требованиями, под которые тесты написаны ;) Проверка требований - это несколько другая задача, нежели тестирование, и как правило делается другими ответсвенными людьми ;) А если требования отсутвуют вообще - то вообще о каком тестировании можно говорить? ;)
гы я кстати даже не подумал об этом... надо будет развить мысль