|
|
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
Везде ли нужны тесты? Может, в виду того, что я не особо вижу целесообразность в создании тестов я так и не пишу их. Ну и в компании про тесты никто ни слухом, ни духом. Проекты корпоративные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 08:46 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
Тестировать в любом случае надо. Весь вопрос - как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 08:56 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
eNoseТестировать в любом случае надо. Весь вопрос - как. Бесспорно. Имелось в виду, к примеру, написание unit тестов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 08:58 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
SlivaeNoseТестировать в любом случае надо. Весь вопрос - как. Бесспорно. Имелось в виду, к примеру, написание unit тестов. если ПО не сильно критичное к ошибкам (не связано напрямую с деньгами, например), то вполне можно "тестировать" и наживую. естественно, надо смотреть на месте, универсальных рецептов нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 09:12 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
SlivaeNoseТестировать в любом случае надо. Весь вопрос - как. Бесспорно. Имелось в виду, к примеру, написание unit тестов.Unit-тесты пишутся разработчиком для того, чтобы убедиться в правильности реализации им некоего функционала. Если уверены в своей реализации, или предпочитаете другой способ проверки, то не пишите их :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 09:32 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
SlivaeNoseТестировать в любом случае надо. Весь вопрос - как. Бесспорно. Имелось в виду, к примеру, написание unit тестов. Пишем тесты уже 3 года. JUnit+Mockito. Необходимость определяем сами. Здравый смысл подсказывает что если есть "логика чёрного ящика" без сложного FSM то мы покрываем "краевые случаи" этого ящика тестами и 1-2 общих случая. Если аргумент черного ящика это String переменная - то надо хотя-бы раз дать ей на вход null и посмотреть что выход черного ящика хотя-бы детерминирован и адекватен. Если будете внедрять тестирование - то не забывайте про "условное" правило Парето. На 80% кодинга (по времени) не более 20% написания тестов. Здесь ничего доказывать не буду - просто эмпирически так выбрано. + Самое главное преимущество тестов. По ним можно тут-же писать документирование модулей. Прямо брать из кода утверждения и описывать в тексте. И оно будет самым достоверным. "Я гарантирую это". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 09:58 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
мне юнит-тесты помогают только быстро запустить и отладить некий "хороший" функционал, ну тупо что метод вызвался и что-то сделал, и возвратил не null потому как 100% покрытия не существует, точнее на него надо затратить адскую уйму времени, один метод с 5-параметрами, и проверка хотя бы null/not-null для каждой комбинации - это 2 в 5 степени = 32 варианта, а если там каждый параметр - объект с 10 полями? а тестирование, которое покрывает только "хорошие" ситуации - это не тестирование ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 10:46 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
17-77а тестирование, которое покрывает только "хорошие" ситуации - это не тестирование То есть вы не тестируете? Или перебираете комбинации вручную? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 11:31 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
17-77потому как 100% покрытия не существует, точнее на него надо затратить адскую уйму времени, один метод с 5-параметрами, и проверка хотя бы null/not-null для каждой комбинации - это 2 в 5 степени = 32 варианта, а если там каждый параметр - объект с 10 полями? Подпишусь по поводу 100% покрытия. Его действительно невозможно создать. Но данный пример с 5-параметрами - неудачен. Во первых 5 параметров это не причина чтобы не писать тест. Во вторых возможно требуется рефакторинг. Можно объявить 3 параметра одной сущностью и передавать как 1 параметр + еще 2. На каком основании объявить или сгруппировать сущность это вы сами должны решать исходя из специфики предметной области. Например две даты java.util.Date (dbegin, dend) можно сгруппировать в диапазон mayton.util.DateDiapason и передавать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 11:54 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
SlivaВезде ли нужны тесты? Не везде. Иногда это дорого. Может, в виду того, что я не особо вижу целесообразность в создании тестов я так и не пишу их. Ну и в компании про тесты никто ни слухом, ни духом. Проекты корпоративные. Прочитайте какую-нибудь книжку по тестам - как их правильно писать и как правильно рефакторить код по их подсказке. Некоторые считают, что основная задача тестов - помочь грамотно спроектировать модули (так чтобы они были независимы). Посмотрите скринкаст Найдите code cata и попробуйте его решить в стиле TDD (red -> green -> refactor) Попробуйте для начала тестировать там где легко Про те модули, которые тестировать трудно, подумайте почему (может, надо отрефакторить, может надо добавить утилит для создания или проверок) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 12:09 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
F#SlivaВезде ли нужны тесты? Не везде. Иногда это дорого. Может, в виду того, что я не особо вижу целесообразность в создании тестов я так и не пишу их. Ну и в компании про тесты никто ни слухом, ни духом. Проекты корпоративные. Прочитайте какую-нибудь книжку по тестам - как их правильно писать и как правильно рефакторить код по их подсказке. Некоторые считают, что основная задача тестов - помочь грамотно спроектировать модули (так чтобы они были независимы). Посмотрите скринкаст Найдите code cata и попробуйте его решить в стиле TDD (red -> green -> refactor) Попробуйте для начала тестировать там где легко Про те модули, которые тестировать трудно, подумайте почему (может, надо отрефакторить, может надо добавить утилит для создания или проверок) а это то, что надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 14:21 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
SlivaВезде ли нужны тесты? Правильнее спросить иначе: какие тесты нужны в конкретном случае. Тесты нужны, в общем, везде. Но при нехватке опыта к ним чаще всего подходят неправильно, и как результат - без тестов вышло бы лучше. SlivaМожет, в виду того, что я не особо вижу целесообразность в создании тестов я так и не пишу их. Ну и в компании про тесты никто ни слухом, ни духом. Проекты корпоративные. Я... не уверен, что Вам стоит это менять. Сдвигать глыбу "мы так привыкли работать" - тяжело, а когда Вы сами не уверены, не видите целесообразности итп - результат нетрудно предсказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 15:56 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
F#Не везде. Иногда это дорого. Не согласен. Дорого - это означает неправильную организацию тестов. Чаще всего - излишний спуск в детали реализации, вторая по распространённости причина - технологические бредни (скажем, попытка "по канонам" выстраивать для каждого независимое окружение). Это не значит, что тесты не нужны, это значит, что их нужно строить адекватно задаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 16:00 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
Всё сильно зависит от предметной области. Какова цена бага в It? Некорректно рисуется интерфейс? Пустяк. Поправят за 5 минут. Там дольше заявка по flow ходит чем сам фикс. БД упала... ? Ну... это уже интереснее. Админ посидит 10 минут. Починит. Архитектурный баг - на много недель всей группой посидеть на митингах. Выработать сценарий решения. Это уже серъезнее. Можно посчитать в деньгах. А теперь представте баг в медицине. Аппарат - "искусственная почка" или сердце. Цена бага это здоровье и жизнь 1 человека. Служебное расследование. Лишение сертификата. А теперь.... баг в аэрокосмонавтике. Цена этого бага - многие человеческие жизни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 16:45 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
softwarerДорого - это означает неправильную организацию тестов. Если речь идет о юнит тестах, то да. В других случаях может зависеть от окружения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 16:48 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
F#softwarerДорого - это означает неправильную организацию тестов. Если речь идет о юнит тестах, то да. В других случаях может зависеть от окружения. Скажу так: вопрос в том, с чем сравнивать это "дорого". Для оценки масштаба можно взять следующие вещи: стоимость ручного тестирования, стоимость проекта в целом, стоимость отсутствия тестирования (то есть проявившихся ошибок). Так вот, я бы сказал, адекватно выстроенные автоматические тесты в любом случае "не дороги" относительно этих показателей. Во всяком случае, исключений я не встречал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 17:17 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
За последние лет 20 производительность вычислений выросла на два порядка. (Грубо от 3.5Мгц до 3 Ггц). И это даже без учёта архитектур (разрядность, мульти-тредовость или мультипроцессность). А производительность труда человека осталась без изменений. Стоимость "ручного" вмешательства оператора, админа, VLP, саппорта, тестера и разработчика или аналитика по прежнему стоит очень дорого. Даже делая скидку на братьев наших китайскиз и индийских. Всё равно дорого. Поэтому при прочик равных условиях автоматизированный тест (когда он налажен) будет и стоить дешевле и работать надёжнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 17:30 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
softwarerЯ... не уверен, что Вам стоит это менять. Сдвигать глыбу "мы так привыкли работать" - тяжело, а когда Вы сами не уверены, не видите целесообразности итп - результат нетрудно предсказать. Сдвигать глыбу не придется. Не уверен, потому как тесты не писал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 18:04 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
Если нет времени на полное тестирование, я бы писал тесты только на основные бизнес-процессы Тесты определенно нужны Сам в них не верил, пока своим же тестом не откопал один недочет в собственном коде С тех пор стараюсь всегда писать тесты параллельно коду Писал лабу для универа, что-то там про количество гласных и согласных букв в словах было.. Написал красивый метод, был уверен в нем на все 100% Сделал для него простенький тест и откопал интересный момент, что я забыл учесть регистр, и из-за этого не совпадали суммы букв (прописные и заглавные) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 18:32 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
SlivaСдвигать глыбу не придется. Не уверен, потому как тесты не писал. Могу рассказать, как я сам начал их писать. Первый раз это было лет двадцать назад. Я тогда написал парсер SQL-запросов, предназначенный брать произвольный запрос, бить его на части и позволять в дальнейшем скомпоновать эти части с модификациями (скажем, добавить условия в where). И чтобы понять, правильно ли он работает, я написал для него штук тридцать ожидаемых комбинаций вход-выход и сделал подпрограмму, которая их проверяла. И обнаружил, что это удобно, особенно когда парсер начал дописываться и переписываться. Потом я долго занимался оптимизацией одного класса-контейнера. И написал для него несколько "проверочных испытаний", засекавших время выполнения той или иной кучи операций. Наконец, однажды заказчик потребовал от нас дать гарантии, что наше приложение будет способно выдержать работу одновременно кучи пользователей. Потребовалось нагрузочное тестирование, а у нас просто физически не было возможности задействовать такую кучу народа. Чтобы его сделать, я приписал к приложению небольшой модуль, который имитировал пользователя - то есть нажимал кнопки, вводил данные в поля ввода. По сути он прогонял один и тот же сценарий: создавал приходную накладную с кучей товара, потом кучу рандомных расходных, когда товар кончался - снова создавал приходную и так далее. И запустив это в сотне экземпляров, мы понаблюдали, как база живёт под нагрузкой и продемонстрировали результаты заказчику. Ну а дальше... дальше, собственно, я уже чувствовал, какую пользу извлекаю из этих тестов. Особенно при традиционном для наших контор отсутствии тестировщиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 18:43 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
Cpt. GrayСделал для него простенький тест и откопал интересный момент, что я забыл учесть регистр, и из-за этого не совпадали суммы букв (прописные и заглавные) Бывает веселее. Помнится, я на Яве написал некую вещь, использовавшую список. По всему надо было использовать ArrayList. Я подумал: а может ли случиться так, что в некоторых условиях LinkedList будет лучше? И чисто из пижонства написал тест, который сравнивал по времени оба варианта и ругался, если ArrayList оказывался медленнее. Так вот: этот тест сразу же сработал и сказал, что LL в 36 раз быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 18:45 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
softwarerТак вот: этот тест сразу же сработал и сказал, что LL в 36 раз быстрее Обычное дело в языках высокого уровня: разработчики затачивают на одно, а пользователи пользуют под совсем другое. Аналогичная история: считал одну конструкию самой супербыстрой, интуитивно так и должно быть, минимум лишних движений, но в реале самая тормозная оказалась даже в тестах. Впомнил потому что на днях переписывал, на реальных данных получил ускорение в 5 раз. Причем заменил на более тормозную по моим понятиям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 19:17 |
|
||
|
Как приучить себя к тестам
|
|||
|---|---|---|---|
|
#18+
Может кому интересно. Щас такой расколбас на проекте. Один кодер так любил String.replaceAll(...) что запилил его везде где только руки дотянулись. Там вобщем-то работа с Apache + XML. У него был реквест вида http://{url}/{path}/{arg1}.... и он реплейсил там OVER9000 аргументов. Самое интересное что и респонс он также разбирал. Реплейсил теги пока не останется полезное "мясо". Вобщем не в том суть. Он уже далеко в Израиле. А я рву и метаю. Но даже не втом суть. А в том что в Java replaceAll.... (!) использует механизм regexp-s для любых самых тривиальных замен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 19:26 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38905551&tid=1341052]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
164ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 478ms |

| 0 / 0 |
