Давайте спочатку розберемо пріоритети ...
У вашій ролі замовника ваша головна проблема - не тестування одиниць
Якщо ви використовуєте постачальників, які виробляють програмне забезпечення для вас, то ви дійсно не повинні турбуватися, якщо вони використовують ту чи іншу методологію. Ваші ставки - придбати якесь рішення, яке допоможе досягти ваших цілей. Єдине, про що вам слід подбати - це зволоження чи ні, щоб рішення було прийнятним. Ось чому ми проходимо тестування приймання, оскільки ви несете відповідальність за те, щоб ви отримали те, що хочете. Саме у вирішальний момент прийняття клієнта гроші будуть перераховані з кишень вашої компанії в кишеню постачальника.
Ви можете вимагати одиничних тестів як виправданих вимог, але з ними є декілька проблем із спадщиною, найсерйознішою є те, що попередньо не існує безпечного способу визначення показників:
- Яка прийнятна кількість одиниць тестів?
Чи повинно бути 10 тестів? Як щодо 100 тестів? Як щодо 1000 тестів? Насправді на початку досить складно визначити, скільки тестів вам знадобиться. Дійсна кількість насправді невизначена ... як проблема зупинки ... але ми не вирішуємо цю проблему.
Вам просто потрібне програмне забезпечення, яке має тести для одиниць, щоб ви могли продовжувати розробку. Блок-тести не вказують, що ви вже зламали, але вони надзвичайно добре підходять, щоб повідомити, коли в коді є помилка регресії.
- Який прийнятний рівень покриття коду?
"100%, звичайно!" ви б подумали. На жаль, цей показник вводить в оману; навіть якщо ви мали 100% покриття коду, ви справді впевнені що все працює так, як очікувалося? Можна мати 100% покриття, але цього не робити.
Те, що вам справді потрібно робити, - це дослідницьке тестування, тобто знайти когось, хто справді добре розбиває речі, і дозвольте їм зробити тестування. Щоб знайти помилки, про які жоден розробник навіть не думав.
Крім того, на 100% іноді неможливо досягти чистих тестових одиниць, якщо у вас є якісь необхідні хакерські показники та використовуєте шаблони дизайну, які важко перевірити (пошукайте "однократний" і "tdd" у вашій улюбленій пошуковій системі, і ви знайдете кілька прикладів).
Ви хочете, щоб доставлене програмне забезпечення працювало а документ із специфікацією - це ваша єдина гарантія.
Вам знадобиться більш високий рівень тестування
Ваш документ із специфікацією повинен якось перевірити. Кожен пункт повинен бути пройдений, якщо ваші постачальники мають чіткі цілі та критерії прийняття. Добре функціонуюча організація з забезпечення якості (або дивовижний тестер, якщо ви маєте бюджет і обмежений обсяг) забезпечить тестові випадки, щоб перевірити ці критерії прийняття. Вам також потрібен хтось для підтвердження цих критеріїв прийняття.
Існує кілька способів перевірити свої цілі, і якщо хтось скаже мені, що ви не можете встановити жодних здорових цілей щодо якості, продуктивності та ефективності, я вдарить їх по голові великими та важкими книгами відповідно до тестування, ефективності та зручності використання. Перевищення цілей може бути легко, але знання та спілкування допоможуть вам поставити реалістичні цілі.
Я не юрист, але більшість контрактів на проект (які в основному є матір'ю всіх специфікацій проекту), які я читав, зазвичай мають критерії співвідношення дефектів, які визначають кількість помилок, які вважаються прийнятними. Зазвичай помилки визначаються через ступінь тяжкості, помилки, що зупиняються, виявлені QA, мають низьку толерантність, тоді як незначні вади мають високу толерантність. У реальних проектах важко вимагати, щоб у програмного забезпечення було 0 дефектів. Терміни зазвичай зупиняють цю практику. Саме в цих ситуаціях вам потрібно почати торгувати сферою.
Більшість програм, які я бачив, зазвичай не постачаються разом з тестами. Ви можете стверджувати, що постачальники повинні бути достатньо професійними, щоб доставити це, однак головна причина, за якою ви хочете доставити одиничні тести, - це переконатися, що у вас немає помилок регресії, а також увімкнути рефакторинг. У реальному житті з проектами в строгі терміни і постачальник, і замовник знижують сферу застосування, а одиничні тести, як правило, виходять у вікно і вилучаються зі списку необхідних результатів.
Дещо сумно, що програмне забезпечення з відкритим кодом з відкритим кодом постачається разом з тестами, але професійний розробник програмного забезпечення не може, правда?
То коли я, як замовник, переймаюся тестуванням одиниць?
Я заперечую, що єдиний час, коли ви справді потурбуєтесь про тестування одиниць, це те, якщо програмне забезпечення, що постачається, є самодостатнім компонентом, який не виконується як автономна програма, для якої найгрубіше тестування, яке ви можете зробити, - це одиничне тестування. . Бібліотеки класів - це єдиний вид продукту, який можна доставити разом з одиничними тестами.