{"id":29641,"date":"2022-03-23T11:58:14","date_gmt":"2022-03-23T10:58:14","guid":{"rendered":"https:\/\/nearshore-it.eu\/artykuly\/raportowanie-bledow\/"},"modified":"2024-09-30T06:23:30","modified_gmt":"2024-09-30T04:23:30","slug":"raportowanie-bledow","status":"publish","type":"post","link":"https:\/\/nearshore-it.eu\/pl\/artykuly\/raportowanie-bledow\/","title":{"rendered":"Zg\u0142aszanie i raportowanie b\u0142\u0119d\u00f3w \u2013 najlepsze praktyki<a><\/a>"},"content":{"rendered":"\n<div class=\"table-of-contents\">\n    <p class=\"title\">Przejd\u017a do:<\/p>\n    <ol>\n                    <li><a href=\"#Identyfikator\">1.  Identyfikator<\/a><\/li>\n                    <li><a href=\" #Opis-defektu\">2.   Opis defektu<\/a><\/li>\n                    <li><a href=\"#Tytu\u0142\">3.  Tytu\u0142<\/a><\/li>\n                    <li><a href=\"#Kroki-prowadz\u0105ce-do-odtworzenia-b\u0142\u0119du\">4.  Kroki prowadz\u0105ce do odtworzenia b\u0142\u0119du<\/a><\/li>\n                    <li><a href=\"#Rezultat-aktualny-i-oczekiwany\">5.  Rezultat aktualny i oczekiwany<\/a><\/li>\n                    <li><a href=\"#\u015arodowisko\">6.  \u015arodowisko<\/a><\/li>\n                    <li><a href=\"#Informacje-na-temat-zg\u0142aszaj\u0105cego\">7.  Informacje na temat zg\u0142aszaj\u0105cego<\/a><\/li>\n                    <li><a href=\"#Priorytet\">8.  Priorytet<\/a><\/li>\n                    <li><a href=\"#Wa\u017cno\u015b\u0107\">9.  Wa\u017cno\u015b\u0107<\/a><\/li>\n                    <li><a href=\"#Przypisanie-do-konkretnej-osoby\">10.  Przypisanie do konkretnej osoby<\/a><\/li>\n                    <li><a href=\"#Opcje-nieobowi\u0105zkowe\">11.  Opcje nieobowi\u0105zkowe<\/a><\/li>\n                    <li><a href=\"#Informacje-dodatkowe\">12.  Informacje dodatkowe<\/a><\/li>\n                    <li><a href=\"#Podsumowanie\">13.  Podsumowanie<\/a><\/li>\n            <\/ol>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"Identyfikator\">1. Identyfikator<\/h2>\n\n\n\n<p>Identyfikator defektu to po prostu unikatowy ci\u0105g znak\u00f3w maj\u0105cy na celu poprawne zidentyfikowanie zadania w systemie i szybkie odwo\u0142ywanie si\u0119 do niego w razie potrzeby.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Je\u015bli mamy system zg\u0142aszania b\u0142\u0119d\u00f3w<\/h3>\n\n\n\n<p>Je\u015bli wykorzystujemy system zg\u0142aszania b\u0142\u0119d\u00f3w, to narz\u0119dzia te przypisuj\u0105 identyfikator automatycznie, wi\u0119c nie musimy si\u0119 o to martwi\u0107.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Je\u015bli zg\u0142osze\u0144 defekt\u00f3w dokonujemy bez systemu<\/h3>\n\n\n\n<p>Jednak w przypadku pracy bez takiego systemu musimy bezwzgl\u0119dnie pami\u0119ta\u0107 o odpowiednim inkrementowaniu identyfikator\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Opis-defektu\">2. Opis defektu<\/h2>\n\n\n\n<p>Opis zg\u0142aszanego defektu powinien zawiera\u0107 informacje s\u0142u\u017c\u0105ce jako kr\u00f3tki opis zaistnia\u0142ej sytuacji \u2013 jego zadaniem jest nakierowanie programisty na dany kontekst, obszar aplikacji, dzi\u0119ki czemu b\u0119dzie mia\u0142 ju\u017c na wst\u0119pie mo\u017cliwo\u015b\u0107 zastanowienia si\u0119, z&nbsp; czego dany b\u0142\u0105d mo\u017ce wynika\u0107. Powinien by\u0107 kr\u00f3tki \u2013 nie wi\u0119cej ni\u017c kilka zda\u0144. <strong>Zg\u0142aszaj\u0105cy powinien zawrze\u0107 w nim informacje w spos\u00f3b og\u00f3lny<\/strong> \u2013 nie skupia\u0107 si\u0119 na szczeg\u00f3\u0142ach, kt\u00f3re powinny zosta\u0107 podane na etapie opisu krok\u00f3w prowadz\u0105cych do odtworzenia b\u0142\u0119du. Sekcja ta ma by\u0107 niczym \u201et\u0142o\u201d, kt\u00f3re stanowi fundament dalszej analizy zg\u0142oszonego b\u0142\u0119du.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Tytu\u0142\">3. Tytu\u0142<\/h2>\n\n\n\n<p>Tytu\u0142 powinien ogranicza\u0107 si\u0119 do jednego zdania opisuj\u0105cego \u201ew pigu\u0142ce\u201d co si\u0119 dzieje \u2013 w celu nadania kontekstu. Czasem ju\u017c sam tytu\u0142 mo\u017ce&nbsp; zasugerowa\u0107 priorytet b\u0142\u0119du i odpowiednio nakierowa\u0107 my\u015bli osoby odpowiedzialnej za zg\u0142oszenie. Dla zwi\u0119kszenia czytelno\u015bci na samym pocz\u0105tku mo\u017cna umie\u015bci\u0107 dodatkowe informacje na temat obszaru aplikacji lub \u015brodowiska, u\u017cywaj\u0105c w tym celu na przyk\u0142ad kwadratowych nawias\u00f3w.<\/p>\n\n\n\n<p>Osobi\u015bcie, cz\u0119sto podaj\u0119 kilka obszar\u00f3w \u2013 w zale\u017cno\u015bci od kontekstu, lecz zawsze w my\u015bl zasady <strong>\u201eod og\u00f3\u0142u do szczeg\u00f3\u0142u\u201d. <\/strong>Na przyk\u0142ad: [\u015brodowisko][modu\u0142] (przyk\u0142ad: [DEV02][STRONA PRODUKTU] Nie mo\u017cna doda\u0107 produktu do koszyka).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Kroki-prowadz\u0105ce-do-odtworzenia-b\u0142\u0119du\">4. Kroki prowadz\u0105ce do odtworzenia b\u0142\u0119du<\/h2>\n\n\n\n<p>Istotne jest napisanie krok\u00f3w odtworzenia b\u0142\u0119du w taki spos\u00f3b, aby nawet osoba niezaznajomiona z danym obszarem aplikacji (lub osoba nietechniczna w przypadku zg\u0142oszenia b\u0142\u0119du dotycz\u0105cego obszar\u00f3w kodu\/API, baz danych itd.) by\u0142a w stanie zrozumie\u0107, co si\u0119 dzieje i mog\u0142a odtworzy\u0107 zg\u0142oszony b\u0142\u0105d. <strong>Ka\u017cdy krok musi by\u0107 dok\u0142adnym i kr\u00f3tkim opisem czynno\u015bci, <\/strong>kt\u00f3re razem b\u0119d\u0105 stanowi\u0107 \u015bcie\u017ck\u0119 prowadz\u0105c\u0105 do odtworzenia defektu.&nbsp;<\/p>\n\n\n<div class=\"special-content-box style-1\">\r\n    <div class=\"box\">\r\n                <div class=\"content\">\r\n                                <\/div>\r\n    <\/div>\r\n<\/div>\r\n\n\n\n<p><strong>Dok\u0142adne opisanie krok\u00f3w jest jedn\u0105 z najwa\u017cniejszych czynno\u015bci w zg\u0142aszaniu defekt\u00f3w. Jako autorzy, po\u015bwi\u0119caj\u0105c odrobin\u0119 wi\u0119cej czasu na ich dok\u0142adny opis, jednocze\u015bnie zmniejszamy czas potrzebny do rozwi\u0105zania defektu.<\/strong> Dzi\u0119ki temu programista nie musi domy\u015bla\u0107 si\u0119, co mieli\u015bmy na my\u015bli i ma mo\u017cliwo\u015b\u0107 u\u017cycia konkretnych danych, kt\u00f3re zwi\u0119kszaj\u0105 prawdopodobie\u0144stwo odtworzenia b\u0142\u0119du za pierwszym razem. U\u0142atwiamy to zadanie r\u00f3wnie\u017c innym osobom zaanga\u017cowanym w projekt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Rezultat-aktualny-i-oczekiwany\">5. Rezultat aktualny i oczekiwany<\/h2>\n\n\n\n<p>S\u0105 to dwie niezb\u0119dne, komplementarne sekcje, w kt\u00f3rych nale\u017cy opisa\u0107 aktualny stan systemu (a wi\u0119c konkretny defekt) oraz stan oczekiwany (czyli opis poprawnego zachowania aplikacji po przej\u015bciu wszystkich krok\u00f3w).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Aktualny rezultat<\/h3>\n\n\n\n<p>W sekcji \u201eaktualny rezultat\u201d nale\u017cy opisa\u0107, co dzieje si\u0119 z systemem po przej\u015bciu ostatniego kroku replikacji b\u0142\u0119du: co widzimy, na co zwr\u00f3ci\u0107 szczeg\u00f3ln\u0105 uwag\u0119 lub gdy jaka\u015b cz\u0119\u015b\u0107 b\u0142\u0119du nie jest widoczna natychmiast \u2013 zaznaczy\u0107, \u017ce nale\u017cy odczeka\u0107 chwil\u0119 do pojawienia si\u0119 lub otrzymania dalszych informacji. Opis ten musi zawiera\u0107 informacje \u015bci\u015ble powi\u0105zane ze zg\u0142oszonym defektem. W przypadku informacji pochodz\u0105cych z serwera dobrym pomys\u0142em b\u0119dzie r\u00f3wnie\u017c podanie powi\u0105zanego endpointa API z fragmentem (lub ca\u0142o\u015bci\u0105) zwr\u00f3conej odpowiedzi oraz innych informacji istotnych z tego punktu widzenia.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Oczekiwany rezultat<\/h3>\n\n\n\n<p>W tym miejscu nale\u017cy opisa\u0107 poprawne zachowanie systemu, kt\u00f3re powinno wyst\u0105pi\u0107 po wykonaniu wszystkich krok\u00f3w replikacji. \u017beby zwi\u0119kszy\u0107 czytelno\u015b\u0107 oraz u\u0142atwi\u0107 proces odtwarzania, sekcja \u201eaktualny rezultat\u201d powinna pojawi\u0107 si\u0119 tu\u017c po sekcji opisuj\u0105cej kroki replikacji \u2013 defekt istnieje, a wi\u0119c jest to naturalna, sekwencyjna kolejno\u015b\u0107 czytania zg\u0142oszonego b\u0142\u0119du linia po linii. Dopiero po opisie aktualnego rezultatu dodajemy informacje na temat zachowania oczekiwanego.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u015arodowisko\">6. \u015arodowisko<\/h2>\n\n\n\n<p>Podanie informacji o \u015brodowisku, na kt\u00f3rym wykryto defekt, jest kluczowe w celu szybkiego rozpocz\u0119cia pr\u00f3by jego odtworzenia. Cz\u0119sto zdarza si\u0119, \u017ce znaleziony b\u0142\u0105d jest mo\u017cliwy do odtworzenia tylko w konkretnej wersji aplikacji lub systemu, na kt\u00f3rym jest zainstalowana. Na przyk\u0142ad wieloplatformowa aplikacja w pewnych okoliczno\u015bciach mo\u017ce nie dzia\u0142a\u0107 tylko na konkretnym systemie operacyjnym. Id\u0105c dalej \u2013 mo\u017ce okaza\u0107 si\u0119, \u017ce nie dzia\u0142a tylko z dan\u0105 wersj\u0105 owego systemu operacyjnego, a by\u0107 w pe\u0142ni funkcjonalna z inn\u0105. Przez \u201e\u015brodowisko\u201d rozumiem r\u00f3wnie\u017c infrastruktur\u0119 samej aplikacji, opieraj\u0105c\u0105 si\u0119 na rozdzieleniu projektu na wersje (kt\u00f3re mog\u0105 mie\u0107 kilka \u015brodowisk), na przyk\u0142ad: developerska, testowa, produkcyjna. W tym przypadku nale\u017cy r\u00f3wnie\u017c pami\u0119ta\u0107 o podaniu odpowiedniej wersji, w kt\u00f3rej znale\u017ali\u015bmy b\u0142\u0105d.<\/p>\n\n\n\n<p>To tylko kilka przyk\u0142ad\u00f3w, kt\u00f3re pokazuj\u0105, \u017ce dodanie obszernej informacji na temat \u015brodowiska aplikacji jest r\u00f3wnie wa\u017cne co dok\u0142adne opisanie krok\u00f3w prowadz\u0105cych do odtworzenia b\u0142\u0119du.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Informacje-na-temat-zg\u0142aszaj\u0105cego\">7. Informacje na temat zg\u0142aszaj\u0105cego<\/h2>\n\n\n\n<p>Dane dotycz\u0105ce osoby zg\u0142aszaj\u0105cej defekt s\u0105 istotne przede wszystkim w kwestii kontaktu \u2013 w przypadku jakichkolwiek pyta\u0144 wiemy, do kogo nale\u017cy si\u0119 zg\u0142osi\u0107.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Priorytet\">8. Priorytet<\/h2>\n\n\n\n<p>W tym polu nale\u017cy ustali\u0107 priorytet dla zg\u0142aszanego b\u0142\u0119du. Okre\u015bla on pilno\u015b\u0107 \u2013 im wy\u017cszy priorytet, tym szybciej nale\u017cy rozpocz\u0105\u0107 prace nad naprawieniem b\u0142\u0119du.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Wa\u017cno\u015b\u0107\">9.&nbsp;Wa\u017cno\u015b\u0107<\/h2>\n\n\n\n<p>Dodatkowo w parze ze statusem powinno pojawi\u0107 si\u0119 pole \u201eseverity\u201d \u2013 wa\u017cno\u015b\u0107 okre\u015blaj\u0105ce, jak du\u017cy wp\u0142yw na dzia\u0142anie aplikacji ma zg\u0142aszany defekt. Tak jak w przypadku priorytetu \u2013 im wy\u017csza warto\u015b\u0107, tym wi\u0119kszy wp\u0142yw defektu na dzia\u0142anie systemu.<a><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Przypisanie-do-konkretnej-osoby\">10. Przypisanie do konkretnej osoby<\/h2>\n\n\n\n<p>W zale\u017cno\u015bci od przyj\u0119tego procesu nale\u017cy zadba\u0107 o to, aby zg\u0142oszenie nie zosta\u0142o zbyt szybko \u201ezapomniane\u201d. <strong>Je\u015bli nie przypiszemy zg\u0142oszenia do konkretnej osoby, mo\u017ce si\u0119 zdarzy\u0107, \u017ce zadanie zagubi si\u0119 gdzie\u015b w li\u015bcie zada\u0144 w Backlogu. <\/strong>Dodatkowo mo\u017cemy zaobserwowa\u0107 zjawisko tzw. rozproszonej odpowiedzialno\u015bci \u2013 osoby w zespole b\u0119d\u0105 przekonane, \u017ce zajmie si\u0119 tym kto\u015b inny, bardziej odpowiedni.<\/p>\n\n\n\n<p><strong>W metodykach zwinnych<\/strong> zadania powinny by\u0107 wykonywane zgodnie z ich wa\u017cno\u015bci\u0105 przez osob\u0119, kt\u00f3ra posiada wystarczaj\u0105c\u0105 ilo\u015b\u0107 czasu, aby si\u0119 nimi zaj\u0105\u0107. W celu zwi\u0119kszenia pewno\u015bci, \u017ce praca nad zg\u0142oszeniem rozpocznie si\u0119 szybko, mo\u017cna przypisa\u0107 je do obecnego lub kolejnego Sprintu (najlepiej skonsultowa\u0107 to z zespo\u0142em). W przypadku, gdy zg\u0142oszenie jest efektem zmiany stworzonej przez konkretnego programist\u0119 \u2013 mo\u017cna przypisa\u0107 je bezpo\u015brednio do niego. Jeszcze innym sposobem jest przypisanie zadania do Product Managera \/ Product Ownera, kt\u00f3ry po zapoznaniu si\u0119 z jego tre\u015bci\u0105 przepnie zadanie do odpowiedniego programisty oraz nada mu odpowiedni priorytet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Opcje-nieobowi\u0105zkowe\">11. Opcje nieobowi\u0105zkowe<\/h2>\n\n\n\n<p>Poni\u017cej opisane opcje nie s\u0105 obowi\u0105zkowe podczas tworzenia opisu b\u0142\u0119du, niemniej <strong>u\u017cycie ich sprawi, \u017ce opis b\u0119dzie jeszcze bardziej czytelny i dok\u0142adny. <\/strong>Sp\u0119dzenie kilku dodatkowych minut na ich dodanie mo\u017ce wyeliminowa\u0107 na przyk\u0142ad: potencjalne dwuznaczno\u015bci, dodatkowy czas programisty na przeszukiwanie log\u00f3w, dzi\u0119ki czemu czas po\u015bwi\u0119cony na analiz\u0119 i zrozumienie zg\u0142oszenia zostanie zredukowany do minimum.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tagi<\/h3>\n\n\n\n<p>Dodanie informacji w postaci tagu do zg\u0142aszanego b\u0142\u0119du pomo\u017ce przy filtrowaniu oraz przeszukiwaniu systemu do zarz\u0105dzania defektami w celu znalezienia b\u0142\u0119d\u00f3w dotycz\u0105cych konkretnych obszar\u00f3w aplikacji, wyda\u0144 (release) itd.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Powtarzalno\u015b\u0107<\/h3>\n\n\n\n<p>Opis cz\u0119stotliwo\u015bci sukcesu w pr\u00f3bach odtwarzania b\u0142\u0119du mo\u017cna pomin\u0105\u0107, gdy zg\u0142aszany defekt jeste\u015bmy w stanie odtworzy\u0107 za ka\u017cdym razem. Jednak gdy b\u0142\u0105d z bli\u017cej nieokre\u015blonych przyczyn jeste\u015bmy w stanie odtworzy\u0107 X razy na Y liczb\u0119 pr\u00f3b lub na przyk\u0142ad jedynie w okre\u015blonej cz\u0119\u015bci dnia \u2013 te dodatkowe informacje b\u0119d\u0105 r\u00f3wnie\u017c przydatne na etapie analizowania b\u0142\u0119du, poniewa\u017c potencjalnie b\u0119d\u0105 mog\u0142y zaw\u0119zi\u0107 obszar poszukiwa\u0144.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Za\u0142\u0105czniki<\/h3>\n\n\n\n<p>Nawet najdok\u0142adniejszy opis mo\u017ce okaza\u0107 si\u0119 niewystarczaj\u0105cy, szczeg\u00f3lnie w przypadku, gdy droga do odtworzenia b\u0142\u0119du jest skomplikowana (niejednoznaczne elementy UI, niezb\u0119dne akcje w zintegrowanych systemach, dane do importu itd.) W\u00f3wczas pomocne oka\u017c\u0105 si\u0119 za\u0142\u0105czniki. Mo\u017cna dodawa\u0107 je w celu wskazania konkretnego elementu interfejsu graficznego w kt\u00f3rym\u015b z krok\u00f3w replikacji lub po prostu jako informacj\u0119 dodatkow\u0105, by u\u0142atwi\u0107 zrozumienie kontekstu problemu na dowolnym etapie jego odtwarzania. Dobrym pomys\u0142em jest r\u00f3wnie\u017c nagranie kr\u00f3tkiego filmu zawieraj\u0105cego kroki replikacji. Dzi\u0119ki temu w przypadku niejasno\u015bci przy kt\u00f3rym\u015b z opisanych krok\u00f3w programista b\u0119dzie m\u00f3g\u0142 bez trudu odnale\u017a\u0107 dany etap.<\/p>\n\n\n\n<p>Nale\u017cy przy tym pami\u0119ta\u0107, aby zachowa\u0107 umiar. <strong>Zbyt wiele za\u0142\u0105cznik\u00f3w mo\u017ce wprowadzi\u0107 chaos i sprawi\u0107, \u017ce utworzone zadanie b\u0119dzie \u201eprzyt\u0142aczaj\u0105ce\u201d. <\/strong>Zmniejszy si\u0119 przejrzysto\u015b\u0107, a w przypadku konieczno\u015bci np. poszukiwania konkretnego zrzutu ekranu (faktycznie pomocnego) w\u015br\u00f3d dziesi\u0105tek zb\u0119dnych plik\u00f3w mo\u017ce by\u0107 frustruj\u0105ca i powodowa\u0107 zmniejszenie skupienia na b\u0142\u0119dzie. Z tego powodu za\u0142\u0105czniki powinno si\u0119 dodawa\u0107 tylko wtedy, gdy mog\u0105 by\u0107 naprawd\u0119 przydatne, na przyk\u0142ad:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>s\u0105 niezb\u0119dne w procesie odtworzenia b\u0142\u0119du (np. konkretny plik z danymi do importu)<\/li>\n\n\n\n<li>uwa\u017camy, \u017ce opisywany element aplikacji (np. w krokach replikacji, aktualnym rezultacie itp.) mo\u017ce by\u0107 niejednoznaczny dla osoby, kt\u00f3ra b\u0119dzie pracowa\u0142a z nim po raz pierwszy<\/li>\n\n\n\n<li>stwierdzamy, \u017ce odtworzenie b\u0142\u0119du jest na tyle skomplikowane, \u017ce dobrze b\u0119dzie nagra\u0107 ca\u0142y proces i za\u0142\u0105czy\u0107 go w formie kr\u00f3tkiego video<\/li>\n\n\n\n<li>mamy dost\u0119p do log\u00f3w zawieraj\u0105cych informacje dotycz\u0105ce b\u0142\u0119du \u2013 wtedy r\u00f3wnie\u017c do\u0142\u0105czmy taki plik do zg\u0142oszenia<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Linki do podobnych zg\u0142osze\u0144<\/h3>\n\n\n\n<p>Je\u015bli istnieje taka mo\u017cliwo\u015b\u0107, podanie link\u00f3w do podobnych b\u0142\u0119d\u00f3w zg\u0142oszonych w przesz\u0142o\u015bci mo\u017ce by\u0107 niezwykle przydatne. <strong>Niejednokrotnie mo\u017ce okaza\u0107 si\u0119, \u017ce podobny (lub nawet identyczny) defekt istnia\u0142 w przesz\u0142o\u015bci, <\/strong>a obecne zadanie (zak\u0142adaj\u0105c, \u017ce by\u0142o dobrze dokumentowane, na przyk\u0142ad komentarzami oraz linkiem do brancha zawieraj\u0105cego poprawk\u0119) b\u0119dzie mog\u0142o zosta\u0107 naprawione b\u0142yskawicznie dzi\u0119ki zaimplementowaniu znanego ju\u017c rozwi\u0105zania. W po\u0142\u0105czeniu z u\u017cywaniem tag\u00f3w (punkt 10) \u2013 b\u0119dziemy mieli tak\u017ce mo\u017cliwo\u015b\u0107 usprawnienia nieco zarz\u0105dzania ryzykiem w pewnych obszarach aplikacji. Filtrowanie po konkretnym tagu poka\u017ce b\u0142\u0119dy zg\u0142oszone w jego kontek\u015bcie \u2013 dzi\u0119ki czemu b\u0119dziemy mogli dowiedzie\u0107 si\u0119, ile, z jak\u0105 cz\u0119stotliwo\u015bci\u0105 oraz jakiego typu b\u0142\u0119dy zg\u0142aszane s\u0105 dla danego obszaru aplikacji (np. tag \u201ekoszyk\u201d \u2013 35 b\u0142\u0119d\u00f3w; tag \u201elista \u017cycze\u0144\u201d \u2013 3 b\u0142\u0119dy). Pozwoli to nam lepiej oszacowa\u0107 czas oraz priorytetyzowa\u0107 obszary aplikacji potencjalnie najbardziej nara\u017cone na b\u0142\u0119dy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Formatowanie zg\u0142oszenia<\/h3>\n\n\n\n<p><strong>Zastosowanie odpowiedniego formatowania w zg\u0142aszanych b\u0142\u0119dach nie jest niezb\u0119dne, lecz bardzo pomaga w szybkim zrozumieniu i odnalezieniu si\u0119 w strukturze zg\u0142oszenia. <\/strong>Dzi\u0119ki niemu ju\u017c na pierwszy rzut oka wida\u0107, jakie sekcje s\u0105 opisywane i jakie akcje b\u0119d\u0105 w nich do wykonania.<\/p>\n\n\n\n<p>Dobrym pomys\u0142em b\u0119dzie ujednolicenie formatowania i ustalenie pewnych regu\u0142, kt\u00f3rych b\u0119dziemy przestrzega\u0107 przy zg\u0142aszaniu defekt\u00f3w (spisanie ich lub utworzenie przyk\u0142adowego szablonu). Dzi\u0119ki temu ca\u0142y zesp\u00f3\u0142 b\u0119dzie m\u00f3g\u0142 zg\u0142asza\u0107 b\u0142\u0119dy, korzystaj\u0105c z jednolitej struktury, a osoby analizuj\u0105ce opis \u2013 b\u0119d\u0105 wiedzia\u0142y w ka\u017cdym aspekcie \u201eco autor mia\u0142 na my\u015bli\u201d.<\/p>\n\n\n<div class=\"special-content-box style-1\">\r\n    <div class=\"box\">\r\n                <div class=\"content\">\r\n                                <\/div>\r\n    <\/div>\r\n<\/div>\r\n\n\n\n<p>Poni\u017cej por\u00f3wnanie przyk\u0142adu zg\u0142oszenia z zachowaniem proponowanego formatu (po lewej) oraz to samo zg\u0142oszenie bez formatowania (po prawej):<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2022-03-23-graphic-1.jpg\" alt=\"Poprawne raportowanie b\u0142\u0119d\u00f3w - pami\u0119taj o przejrzystym opisie problemu\" class=\"wp-image-64437\" title=\"\"><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading Informacje dodatkowe\">Informacje dodatkowe<\/h2>\n\n\n\n<p>Na koniec zaproponuj\u0119 jeszcze kilka dobrych praktyk, kt\u00f3re powinny towarzyszy\u0107 nam na co dzie\u0144 w kontek\u015bcie zg\u0142aszania defekt\u00f3w. Dzi\u0119ki ich przestrzeganiu praca stanie si\u0119 jeszcze bardziej efektywna nie tylko dla nas, ale i ca\u0142ego zespo\u0142u projektowego.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Je\u017celi nie mamy 100% pewno\u015bci, \u017ce zastany przez nas rezultat w dzia\u0142aniu aplikacji to na pewno b\u0142\u0105d \u2013 skonsultujmy to z inn\u0105 osob\u0105 z zespo\u0142u, zanim zg\u0142osimy raport o b\u0142\u0119dzie.<\/li>\n\n\n\n<li>W przypadku pracy zdalnej \u2013 gdy napotkamy b\u0142\u0119dy zwi\u0105zane z brakiem mo\u017cliwo\u015bci po\u0142\u0105czenia si\u0119 do serwera \u2013 upewnijmy si\u0119, \u017ce jeste\u015bmy wci\u0105\u017c pod\u0142\u0105czeni do sieci VPN.<\/li>\n\n\n\n<li>Upewnijmy si\u0119, \u017ce w czasie znalezienia defektu nie s\u0105 przeprowadzane \u017cadne aktualizacje \u015brodowiska \u2013 mo\u017ce okaza\u0107 si\u0119, \u017ce dany serwis jest w tym samym momencie aktualizowany i dlatego pewien obszar aplikacji nie dzia\u0142a.<\/li>\n\n\n\n<li>Po napisaniu krok\u00f3w replikacji przejd\u017amy samodzielnie proces odtwarzania b\u0142\u0119du, wcielaj\u0105c si\u0119 w osob\u0119, do kt\u00f3rej mo\u017ce trafi\u0107 nasze zadanie. W ten spos\u00f3b b\u0119dziemy mogli wy\u0142apa\u0107 ewentualne nie\u015bcis\u0142o\u015bci i poprawi\u0107 instrukcje tak, aby by\u0142y jednoznaczne i jeszcze bardziej czytelne.<\/li>\n\n\n\n<li>Je\u017celi w projekcie jest zaimplementowane narz\u0119dzie do monitorowania stanu aplikacji (np. Splunk, New Relic), nie wahajmy si\u0119 wykorzysta\u0107 go w celu znalezienia logu b\u0142\u0119du i dodania go do tworzonego przez nas zg\u0142oszenia.<\/li>\n\n\n\n<li>W miar\u0119 mo\u017cliwo\u015bci, zanim zg\u0142osimy defekt, upewnijmy si\u0119, \u017ce w systemie nie jest on ju\u017c zg\u0142oszony. W ten spos\u00f3b unikniemy duplikat\u00f3w.<\/li>\n\n\n\n<li>W przypadku w\u0105tpliwo\u015bci co do opisu zadania ju\u017c stworzonego, skontaktujmy si\u0119 z autorem i poinformujmy go, \u017ce chcemy uzupe\u0142ni\u0107 jego opis o dodatkowe informacje, kt\u00f3re mog\u0105 okaza\u0107 si\u0119 pomocne.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Podsumowanie\">Podsumowanie<\/h2>\n\n\n\n<p>Dzi\u0119ki przestrzeganiu tych kilku zasad mo\u017cemy by\u0107 prawie pewni, \u017ce zadanie zostanie dobrze zrozumiane, a przyczyna b\u0142\u0119du celnie zdiagnozowana \u2013 wskutek czego znalezione awarie zostan\u0105 rozwi\u0105zane najszybciej, jak to mo\u017cliwe.<\/p>\n\n\n<div class=\"special-content-box style-1\">\r\n    <div class=\"box\">\r\n                <div class=\"content\">\r\n                                <\/div>\r\n    <\/div>\r\n<\/div>\r\n","protected":false},"excerpt":{"rendered":"<p>Wydaje si\u0119, \u017ce zg\u0142oszenie b\u0142\u0119du nale\u017cy do prostych czynno\u015bci. Na pierwszy rzut oka rzeczywi\u015bcie mo\u017cna opisa\u0107 ten proces w kilku s\u0142owach: opisujemy, co widzimy, dodaj\u0105c informacje, w jaki spos\u00f3b do tego doszli\u015bmy. I cho\u0107 ta definicja nie jest szczeg\u00f3lnie zawi\u0142a, to ju\u017c napisanie dobrego zg\u0142oszenia zawieraj\u0105cego wszystkie niezb\u0119dne informacje pomocne w zrozumieniu awarii i procesie jej odtwarzania mo\u017ce stanowi\u0107 ma\u0142e wyzwanie. W artykule postaram si\u0119 opisa\u0107 najwa\u017cniejsze cechy, kt\u00f3re powinno zawiera\u0107 dobrze napisane zg\u0142oszenie.<\/p>\n","protected":false},"author":143,"featured_media":29646,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"iawp_total_views":336,"footnotes":""},"categories":[1,582],"tags":[562],"offering":[513],"class_list":["post-29641","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artykuly","category-technologie","tag-qa","offering-application-development"],"acf":[],"_links":{"self":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/users\/143"}],"replies":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/comments?post=29641"}],"version-history":[{"count":2,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29641\/revisions"}],"predecessor-version":[{"id":32928,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29641\/revisions\/32928"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media\/29646"}],"wp:attachment":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media?parent=29641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/categories?post=29641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/tags?post=29641"},{"taxonomy":"offering","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/offering?post=29641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}