BUG(Software)
Bug-ul (n traducere; gndac) software este un termen comun, folosit pentru a descrie o eroare, un defect, o greseala sau o insuficien n cadrul programelor de calculator sau a sistemelor de operare care produc un rezultat incorect, neateptat sau faciliteaz un comportament neobinuit. Cele mai multe bug-uri apar din greelile i erorile fcute de oameni, n codul surs al programelor, restul bug-urilor, ntr-un procent foarte mic, fiind create de compilatoare, ce produc un cod incorect. Unui program care conine un numr mare de bug-uri i/sau bug-uri care interfereaz n mod serios cu funcionalitatea programului, i se spune program buggy. Rapoartele care detaliaz problemele cauzate de bug-uri sunt cunoscute ca rapoarte de bug-uri, rapoarte de probleme, etc.
Istoric
Testarea programelor informatice este o activitate care a aprut o dat cu procesul de dezvoltare a acestora. n perioada apariiei primelor sisteme informatice - 1945-1956, procesul de testare era n special orientat ctre componentele hardware ale sistemului, iar defectele din software erau n general considerate ca fiind mai puin importante. Persoanele care elaborau codul se ocupau i de partea de testare, dei nu o fceau ntr-o manier metodic, i denumeau aceast activitate verificare. Pentru muli dintre oamenii de tiin care se ocupau de scrierea programelor informatice nu exista o distincie clar ntre activitile de scriere a codului, testare i depanare. Din aceast perioad timpurie dateaz prima referire la conceptul de "bug" ntr-un sistem informatic, cnd un operator al unui calculator descoper pe un circuit electronic care funciona defectuos o molie, i o ataeaz n jurnalul de operaiuni, cu meniunea ca a descoperit primul "bug" propriu-zis ntr-un calculator. Termenul de "bug" n sine este mai vechi, datnd din perioada lui Thomas Edison. Primul savant care s-a ocupat de noiunea de testare a unui program este Alan Turing care public n 1949 un articol despre principiile teoretice ale verificrii corectitudinii funcionrii unui program. n 1950, Turing public un alt articol, n care ridic problema inteligenei artificiale, i definete un test pe care sistemul informatic trebuie s l treac, i anume rspunsurile oferite de ctre acesta la ntrebrile adresate de un operator (testerul) s nu poat fi difereniate de ctre rspunsurile oferite de un om (etalonul). Aceast
lucrare poate fi considerat a fi prima care se ocup de conceptul de testare, considerat distinct de activitile de elaborare a codului respectiv de depanare.
Scopul
Scopul primordial pentru procesul de testare este (1) identificarea erorilor de software, (2) izolarea i fixarea/corectarea defectelor care au cauzat aceste erori. Deseori este un exerciiu non-trivial, deoarece testarea nu poate demonstra cu certitudine de 100% ca produsul funioneaz corect n orice condiii; testarea doar poate demonstra c produsul nu funcioneaz corect n anumite condiii n scopul testrii deseori se include att examinarea static a codului surs, ct i examinarea codului n execuie n diferite mprejurri i sub diferite condiii. Aspectele de cod ce rmn sub ochiul vigilent al test/software inginerului n timpul acestui exerciiu sunt (1) codul face lucrul care este presupus sa-l fac i (2) codul face lucrul care trebuie sa-l fac. Informaia obinut n urma procesului de testare poate fi folosit pentru corectarea i mbuntirea procesului conform cruia se dezvolt produsul software.
Defecte i euri
Nu toate defectele software sunt cauzate de greeli n cod. O surs rspndit de defecte costisitoare sunt lacunele i neclaritile la nivel de cerine, de exemplu, cerinele "ascunse" sau incomplete pot s rezulte ntr-un set de erori introduse nc n faza de proiectare de ctre designerul programului. Cerinele non-funcionale precum ar fi testabilitatea, scalabilitatea,mentenabilitatea, usabilitatea, performana i securitatea, sunt o surs raspndit de astfel de erori. Defectele software se manifest ca rezultat al urmtorului proces: un prtogramator comite o eroare (greeal), care la rndul ei rezult ntr-un defect (bug) la nivel de codul surs al programului; dac acest defect este executat, n anumite condiii sistemul va produce un rezultat greit, ceea ce ulterior va duce la o euare a programului. Nu toate defectele pot duce la euarea programului. De exemplu, defectele ce se conin nr-o seciune de cod "mort" niciodat nu vor duce la euarea programului. Defectele se pot manifesta ca euri la schimbarea mprejurimii n care ruleaz programul. Exemplele de astfel de modificri includ: trecerea pe o
platform hardware nou, alterri n sursa de date sau interaciunea cu software diferit. Un singur defect poate rezulta ntr-un spectru larg de simptome prin care se manifest cderile.
Unele buguri nu au efecte serioase in ceea ce priveste fuctionalitatea unui program si pot ramane nedectate o lunga perioada de timp. Un program poate lua crash cand bugurile serioase raman nedetectate.O alta categorie de buguri, numita security bugs pot permite unor virusi accesul in zone interzise, creandu-si anumite privilegii. Cateva dintre cele mai mari greseli software din istorie:
-In anii 1980, erorile din codul ce controla masinaria numita Therac-25, folosita la radioterapie, a condus la moartea pacientilor -In 1966, racheta de 1 miliard de dolari, numita Ariane 5 a fost distrusa la cateva secunde dupa decolare, din cauza unui BUG la programul de ghidaj aviatic al navei. -In 1962, un bug din softul de zbor alnavei Mariner I a cauzat devierea cursului de zbor al rachetei de la calea prestabilita.