Відповідальність за відтворення помилок


25

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

  1. Він прав?
  2. Що я можу зробити в цій ситуації? Створення одиничного тесту неможливо, оскільки це залежить від деяких випадкових тимчасових мереж.

26
Якщо ви збираєтеся написати тест на одиницю, ви можете виправити помилку і взяти кредит за всю справу.
JeffO

3
@JeffO, він керує цією бібліотекою і не приймає виправлення. Тому що "він не переконаний, що помилка колись існувала"
користувач626528


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

Відповіді:


30

Він правий - це, мабуть, питання, на яке не можна відповісти, не знаючи вашої компанії. Однак він, звичайно, не дуже корисний.

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

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


48

Він на 100% має рацію, що ви повинні надати достатньо інформації, щоб зробити помилку відтворюваною - інакше немає шансів дізнатися, чи справді виправить будь-яке виправлення.

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


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

20
@Heinzi: якщо я отримую звіт про помилку "додаток час від часу виходить з ладу", я б дав цій проблемі дуже низький пріоритет, над яким також потрібно працювати. Мінімальна річ, яку я сподіваюсь, що користувач записує, як часто це робиться "час від часу", що саме він робив із програмою в той момент, коли додаток розбився в останній раз, і точне повідомлення про помилку.
Док Браун

3
@ user626528: IMHO власник бібліотеки повинен спробувати пройти кроки, які ви кажете йому, щоб відтворити помилку - він не повинен спробувати 500 трохи інших сценаріїв, коли в вашому описі не з’являється жодна помилка.
Док Браун

6
Репортеру не слід надавати етапи відтворення; досить часто ми просто приєднуємо дамп від процесу, що розбився, особливо якщо це відбувається під час автоматизованого запуску. Відповідач зобов'язаний знайти кроки відтворення, щоб підтвердити виправлення.
avakar

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

9

Обидві сторони повинні докласти певних зусиль.

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

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


5

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

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

На щастя, це не обов'язково катастрофа - хоча в ідеальному світі все програмне забезпечення буде відмовлено від помилок, це не так, і тому нам потрібно розставити пріоритети на основі проблем, які він викликає у США.

Це означає, що справді ви несете відповідальність за розробку відтворюваної тестової справи, ЯКЩО ВИ ХОЧЕТЕ ФІКСУВАТИ. Вам може бути байдуже, чи виправляється це, і в цьому випадку ви зробили все, що від вас може і слід очікувати. Можливо, ви хочете, щоб це було зафіксовано, але недостатньо, щоб присвятити час, щоб зробити його відтворюваним у цей час. Це цілком прийнятно.

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


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

1
Оскільки ВИ - це той, хто хоче це виправити зараз, Ви відповідальні переконати його, що варто його ВІДКРИТИ час, а не через 10 чи 12 років, коли у нього немає нічого іншого більш важливого для виправлення. theregister.co.uk/2013/01/21/kde_bug_quashed . З огляду на невідтворювану помилку, що має значення X, та відтворювану помилку однакового значення, я буду працювати над відтворюваною помилкою щоразу.
jmoreno

занадто багато его. Йому платять за роботу над цією вигадливою бібліотекою.
користувач626528

1
@ user626528: справа не в его, це в пріоритетах - неможливість відтворити помилку нижче, її пріоритет. Враховуючи дві помилки EOI (Execute Operator негайно), одну, яку можна відтворити, а іншу ні, я би працював над тим, який можна відтворити першим, і я б сказав будь-якому іншому розробнику зробити те саме. І якщо бібліотека використовується не так багато, я можу повністю працювати над іншим проектом - навіть якщо помилки в ній не такі значні. Якщо він працює / працює виключно над цією бібліотекою І немає жодних непогашених запитів на функції або помилок, окрім цього, то так, він просто повинен це зробити.
jmoreno

2

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

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

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


2

Ви знайшли помилку, ви повідомили про це, і він обдурює це.

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

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

Увійдіть якомога більше інформації в трекер помилок і рухайтеся далі.

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


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

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

0

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

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

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

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


1
У мене є симпатія, що хтось вважає вашу відповідь (що є практичною можливістю) погано і вниз проголосує за неї. Те саме сталося і з моєю відповіддю.
isntn

-3

Ви вже згадували, що "я подав помилку з описом умов, щоб зробити цю витік".

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

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

Якщо це не працює, наведені нижче варіанти:

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

3
Відповідальність за оперативні програми не полягає у створенні одиничного тесту для технічного обслуговування бібліотеки.
Енді

6
Якщо інший розробник ігнорує повідомлення про помилки у когось, практично немає нульового шансу, що він відповість позитивно на запит про капітальний рефакторинг. Крім того, не всі типи проблем легко відтворюються за допомогою тестування одиниць: programmers.stackexchange.com/questions/196105/…
Dan Neely

1
@DanNeely: Він не ігнорує, він стверджує, що репортер повинен зробити щось більше - чого неможливо зробити для репортера. І репортер повинен спілкуватися назад! Я також запропонував залучити повноваження, оскільки це може звестись до цього.
isntn

1
@Andy У деяких позиціях корпоративна політика помилок не приймається без автоматизованого тесту.
Джошуа Дрейк

5
Ви виглядаєте розгубленими щодо правильного використання голосування, і бажання цього навряд чи допоможе вашій справі. Новини - це прийнятий спосіб сказати "Я думаю, що це погана відповідь". Ображаючу мову слід вирішувати не (виключно) шляхом голосування, що не проводиться, а шляхом її редагування чи позначення, залежно від того, чи корисна решта відповіді. Поза контекстом відповідь можна було б обробляти будь-яким способом залежно від того, наскільки вона жахлива.
Dan Neely
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.