Тестування в java - stack overflow російською

Почнемо з того, що я новачок, користуюся IDEA. Цікавлюся, як розробкою оффлайн додатків, так і web-, навіть про Android був би не проти, що-небудь почути, хоча і менше, ніж про перші два варіанти. Напишу спочатку, що я знаю про тестування:

1) У деяких книгах (і не тільки) рекомендується такий підхід до програмування, при якому перед тим, як писати безпосередньо код, пишуться тести. Якщо я правильно зрозумів, тести пишуться до ВСІХ класів, які будуть в коді. Але по-перше, написання тесту до класу вимагає такого ж часу, що і написання самого класу, а іноді і набагато більшого. По-друге, в тих ситуація, які я врахував, клас буде функціонувати справно (за винятком помилок), а в тих ситуаціях, які я не врахував, тест буде проходиться успішно (тому що вони не закладені в тест). І по-третє, іноді не знаєш як буде виглядати якийсь клас, до тих пір, поки його не реалізуєш, більш того, і після реалізації буде багато раз видозміняться, іноді кардинально - наприклад: спробував один підхід - швидкість відпрацювання низька, спробував зовсім інший (з іншим набором класів і інтерфейсів) - вище.

  • Так от чи варто вдаватися до такого підходу? І як бути з урахуванням всього, вище написаного? Мене якось панічний страх бере писати тести все геттери / сеттери.

2) Чув про автотестування. навіть бачив обривок записи, де записувався макрос миші, як для автоматичної прокачування персонажа в іграх. Але знаю вкрай мало, то, що мені траплялося виглядає складно і незрозуміло, а найголовніше не ясно, чи потрібно це вобще.

  • Проясніть, як новачкові скористатися автотестування в різних ситуація (офф, web)? Які програмні інструменти для цього використовувати? Який російськомовною літературою можна керуватися?

3) Може я ще щось упустив в області тестування. Буду радий будь-яким повчанням;)

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

в тих ситуація, які я врахував, клас буде функціонувати справно

не факт. У вас же немає ніякої гарантії, що ви правильно реалізували "то, що врахували". Перевірити це якраз допоможуть тести

в тих ситуаціях, які я не врахував, тест буде проходиться успішно (тому що вони не закладені в тест)

розробник зобов'язаний знати, що повинен робити той чи інший його клас, відповідно, тестувати свої класи він повинен на предмет відповідності цього "призначенню". Отже, описана вами ситуація не має сенсу

іноді не знаєш як буде виглядати якийсь клас, до тих пір, поки його не реалізуєш

см. вище - розробник повинен знати, що буде робити створюваний ним клас, і тестувати його саме з цієї точки зору. Отже, тестування не особливо цікаві деталі реалізації цього класу (і можливі зміни в цій реалізації)

І нарешті, не вважайте за занудство, але виглядає жахливо:

не «координально", а кардинальним. і не "просвяти", а просветите

Важлива міра у всьому. Тестуються зазвичай складні випадки. А так взагалі все тестувати ніяких сил не вистачить. Потім адже треба буде писати тести тестів (я серйозно).

До того ж тестування буває різним: юніт тести, тестування навантаження, функціональне тестування і т.д. Не дарма серед прогерской братії є спеціальність тестувальник / тестер.

Прогерія повинен тестувати кінцевий результат своєї праці. Скажімо написали якийсь клас / ієрархію виконує допустимо скачування контенту з мережі. Логічним було б написати юніт тест перевіряє ідентичність завантаженого зі викачуваним. Загалом ідея проста:

  1. Вам мудре керівництво поставило якусь задачу;
  2. Ви її вирішили;
  3. Тепер треба довести, що рішення працює. Для цього пишете юніт тест (серію юніт тестів) доводять працездатність вашого рішення;
  4. Показуєте керівнику;
  5. Профіт.

P.S. Відносно бінов. Якщо вам поставили завдання написати біни - значить доведеться писати юніт тести на ваші біни. Така се ля ві :)

Схожі статті