Як ефективно усунути проблеми або протестувати новий код, коли налаштування обладнання для відтворення помилок отримати важко або неможливо?


30

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

Приклад 1: Налаштування, коли 10-20 процесів «вигорання» запускаються незалежно за допомогою датчика верхнього типу, - я зміг отримати один такий датчик для тестування і міг час від часу вкрасти другий для імітації всіх граней взаємозв'язку на декілька пристроїв (пошук, підключення, потокове передавання тощо).

Врешті-решт виявилася помилка (і врешті-решт опинилася у вбудованому програмному забезпеченні та драйверах), що дуже важко було точно відтворити лише один пристрій, але потрапив біля рівнів "показати пробку", коли 10-20 цих пристроїв одночасно використовувались. Це ще не вирішено і триває.

Приклад 2: Тест, що вимагає дорогого оптичного аналізатора спектра як його основного компонента. Цей пристрій досить старий, за даними виробника, який був придбаний більшою компанією і в основному розпущений, а його єдиною документацією був довго звитий (і малоінформативний) документ, який здається погано перекладеним. Під час початкової розробки я зміг тримати пристрій за своїм робочим столом, але тепер його підключили, як фізично, так і в розкладі під час його 24/7 багатотижневих тестів.

Коли помилки виявляються пов'язаними або не пов’язаними з пристроєм, мені часто доводиться стикатися з проблемою тестування коду, що знаходиться поза додатком, і його встановлення, або письмового коду всліпу і намагаються видавити в деякий час тестування між пробіжками, як багато Логіка програми вимагає наявності ОСА та решти тестового обладнання.

Я здогадуюсь, моє запитання - як я повинен підходити до цього? Я потенційно міг би витратити час на розробку тренажерів пристроїв, але, вважаючи, що в оцінці розвитку буде розміщено його більше, ніж більшість, напевно, оцінить. Він також не може точно відтворити всі проблеми, і тут досить рідко можна побачити одне і те ж обладнання, яке використовується тут двічі. Я міг би стати кращим в тестуванні одиниць ... і т. Д. ... Я також міг би бути голосним щодо цього питання і дати зрозуміти іншим, що потрібні будуть тимчасові затримки, не набагато більше, ніж головний біль для досліджень і розробок, але зазвичай сприймаються як жарт при розміщенні на виробництві.


5
тренажер пристрою (або інтерфейс, який можна змінити) оплатить себе лише зручністю
храповик виродка

21
@ratchetfreak - як той, хто витрачає свої дні на імітацію пристроїв (я працюю на тренажері медичних пристроїв повний час), дозвольте запевнити, що навіть низькоякісне моделювання чужої частини обладнання може бути ДУЖЕ складним завданням, в залежності від пов'язані з'єднання, протоколи та типи даних. Якщо випробувальне обладнання, яке використовує ОП, є що-небудь схоже на передачу, з якою я маю справу, це може зайняти кілька днів або тижнів, щоб просто зрозуміти, що справді робить кривава річ (на відміну від того, що говорить специфікація). Тому ВСЕ не прострочений висновок, що симулятор того вартий.
Майкл Коне

Відповіді:


35

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

Раніше я писав програмне забезпечення для літаків на $ 60 млн. Очевидно, що потрібен високий ступінь надійності, і вони неохоче дають кожному розробнику по одному за свій стіл. У нас в основному було 5 рівнів тестових середовищ, з більшою кількістю реального обладнання на кожному рівні, аж до повного літального апарату. Я вважаю, що 95% нашого програмного забезпечення можна було б розробити і налагодити лише за допомогою емуляторів та модульних тестів. 95% решти функцій можна буде працювати на наступному рівні вгору тощо.

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

Вам також потрібно дещо змінити свою думку, якщо у вас обмежений доступ до обладнання. Замість того, щоб намагатися налагодити додаток у звичайному серійному порядку, вам часто потрібно писати код спеціально для того, щоб зібрати інформацію якомога швидше.

Наприклад, можливо, у вас є помилка, і ви можете придумати 10 можливих причин. Якщо на машині можна дістатись лише 15 хвилин, поки оператор перерється , напишіть короткий, самодостатній, правильний (компільований), приклад, який запускає помилку, і напишіть 10 автоматизованих тестів, використовуючи цей SSCCE для перевірки своїх теорій і ввести в журнал купу даних. Після цього назад ви можете зайняти стільки, скільки вам потрібно для просіювання даних для наступної спроби. Ідея полягає в тому, щоб максимально корисно використовувати ваш обмежений час за допомогою обладнання.


Прийняв цю відповідь як найповнішу - і я вважаю, що хороший баланс "дайте керівництву знати" та "змінити свою практику". Я думаю, що витратити певні зусилля на покращення рівня розв’язки та деякий рівень апаратних тренажерів варто доцільно, і я можу це показати у своїх оцінках. Також мені особливо подобаються поради щодо певного видалення у деяких швидких повнофункціональних тестах, які збирають багато даних під час налагодження - дякую.
plast1k

14
Я перестав читати після "Менеджмент розуміє"
PlasmaHH

1
"Не бажаю дарувати кожному розробнику по одному за свій стіл". За іронією долі, ви, напевно, могли зігнути кількість, щоб довести, що надання кожному розробнику свого власного літака в розмірі 60 мільйонів доларів буде дешевше, ніж загальна сукупна вартість катастрофи авіакомпанії!
Містер JavaScript

15

Ви намагаєтеся вирішити проблему, яку не вирішити.

Керівництву необхідно визначити пріоритет доступу до обладнання. Це може означати, що ви отримуєте більший доступ, але це може означати і менший результат.

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

Звідси компанія (керівництво) має визначити, хто отримує доступ та коли. Це потрібно прийняти бізнес-рішення, оскільки (відсутність) ресурсів впливає на розвиток бізнесу.


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

4

Ви ефективно кодуєте сліпих.

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

Вартість пристроїв не повинна повністю розподілятися на цикл "розробки". Можливо, їх можна перетворити на виробництво або використовувати як резервне копіювання. Чи можна їх навіть перепродати в іншому місці?

Спробуйте і витратити фази виправлення помилок як часу, так і грошей, і покажіть загальну вартість своїй команді / компанії.


4

Сперечатися зі своїми начальниками набагато простіше, коли у вас є якісь цифри або хоча б якісь плюси та мінуси, тому моя пропозиція намагається зробити аналіз витрат порівняно з benfit. Приблизна ідея виглядає так:

  • скільки зусиль на розробку ви очікуєте для написання тренажера пристрою? (Зверніть увагу, що тренажер пристрою не може замінити оригінальне обладнання на 100%, особливо коли апаратне забезпечення має деякі несподівані химерності).

  • скільки зусиль для тестування / налагодження ви очікуєте без такого інструменту? Включіть витрати для своїх лабораторій, оскільки вам доведеться блокувати обладнання для проведення тестування. Включіть також витрати на час, через який система не може бути використана через помилки, і у вас є проблеми знайти першопричину.

  • скільки коштуватиме додаткове обладнання для тестування?

  • скільки часу, на вашу думку, вам знадобиться блокувати обладнання для тестування?

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

Представити результати керівництву, обговорити альтернативи, а потім дати їм рішення.


Я думаю, ви тут мали на увазі не можна зауважити, що симулятор пристрою може рідко замінити оригінальне обладнання на 100%, особливо коли в апараті є деякі несподівані химерності
Ремі

@ Rémi: можливо, "може рідко" це не звичайний порядок слів простою англійською? FWIW, я змінив свою відповідь, щоб зробити це однозначним, дякую за відповідь.
Док Браун

Я не розмовляю англійською рідно, але це читається дивно. спасибі
Ремі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.