Repository navigation
Prima Bug Istorica
Pe 9 septembrie 1947, în timp ce echipa lui Grace Hopper lucra la calculatorul Harvard Mark II din Cambridge, Massachusetts, un operator a găsit un fluture într-un relay — și l-au prins, l-au lipit cu banda adezivă în pagina de jurnal a mașinii și au scris cuvintele care au intrat în istoria informaticii:
"Found actual case of first bug being made." („Am găsit un caz real în care a fost făcută prima bug" — traducere)
Aceasta este prima bug de calculator documentată vreodată și originea povestei care a transformat cuvântul bug — un termen vechi de secole pentru un defect mecanic — în simbolul internațional al bug tracking-ului. TestLink trăiește din asta: gestiunea defectelor, rezultatele de execuție și jurnalul de evenimente (Event Viewer) sunt descendenții direcți ai acelei pagini de jurnal.
Pagina: Home · Ce este TestLink · Event Viewer · Gestionarea Bug-urilor
- Cronologia zilei de 9 septembrie 1947
- Jurnalul original
- Nu doar fluturele: diagnosticul real
- De ce contează pentru testare și QA
- Cuvântul „bug" este mai vechi decât fluturele
- De la Mark II la TestLink 2.0.1
- Cronologie: de la primul bug la TestLink
- Cum înregistrezi o bug reală în TestLink
- Surse și lectură suplimentară
| Moment | Eveniment |
|---|---|
| 9 septembrie 1947 | Un moth este găsit blocat într-un relay al calculatorului Harvard Mark II (calculator cu relee, construit de Howard Aiken la Harvard School of Applied Research and Computer Science, funcționând 1945–1947). |
| Imediat după | Fluturele este îndepărtat cu o pensetă și lipit cu banda adezivă în pagina de jurnal a mașinii, alături de notarea despre defect. |
| În zilele următoare | Echipa lui Grace Hopper nu se oprește la îndepărtarea fluturelui: își propune un diagnostic propriu („de ce s-a întâmplat?") — caută releul, îl verifică, găsește o cauză mecanică reală și o repară. |
| ~69 de ore mai târziu | Mașina este repusă în funcțiune completă (durată citată în relatările echipei despre incident). |
Punctul esențial: fluturele a fost simptomul, cauza era altceva. Fluturele s-a blocat într-un contact de relay deja slăbit — adică defectul real era o problemă de fixare (rigidizare) mecanică, nu un „animal în calculator". Iar povestea devine relevantă pentru QA abia în acel pas în care echipa nu s-a mulțumit cu „am scos insecta și gata".
Notă de corectitudine: numele de „prima bug de calculator" este atribuită în mod obișnuit acestui incident, însă nu există o înregistrare anterioară a unui defect de software catalogat astfel. Există însă defecte documentate înainte de 1947 (vezi secțiunea 5) — de aceea spunem „prima bug de calculator documentată ca atare".
Harvard Mark II nu avea afișaj: mașina trăia pe fișe de hârtie găurite (punched cards), iar operațiile erau scrise de mână în jurnalul de funcționare, cu observații și corecții scrise direct de operatori. Pagina din 9 septembrie 1947 conține:
- notarea în limba engleză cu pricina (
Found actual case of first bug being made), - desenul schematic al circuitului de relee implicat, cu „X" pe poziția defectă,
- fluturele propriu-zis, uscat și lipit cu bandă adezivă pe marginea hârtiei.
Perechea fluture + text + circuit este cea mai veche înregistrare modernă a unui proces de debugging: observare → notare → diagnostic → reparare → repunere în funcțiune. Fluturele și pagina de jurnal se află astăzi la Smithsonian — National Museum of American History (Washington, D.C.), expuse ca „prima bug din istoria calculatoarelor".

Povestea populară se oprește la „au găsit un fluture". Ce a urmat este partea care contează pentru testare:
- Simptom — calculatorul se bloca intermitent, cu erori nonexplicite.
- Observație — un operator observă un corp străin într-un relay.
- Izolare — defectul este asociat unui anumit relay, nu mașinii întregi.
- Verificare — se verifică toate șuruburile contactelor/panoului de relee; se găsește o șurubă nefixată la masă (ground) pe releul respectiv.
- Reparare — se strânge șurubă și se reia funcționarea; circa 69 de ore până la repunerea completă în funcțiune.
- Lecție — „hardware-ul are și el bug-uri" devine un fapt verificabil și începe să fie tratat ca atare.
Această secvență este, punct cu punct, un test plan: simptom → pas reproducibil → cauză → fix → retest. Diferența față de TestLink este doar că în 1947 „planul de test" era o pagină de hârtie.
- Bug tracking are o origine documentată. Nu este o convenție de marketing, ci o practică de atelier: descoperă → notează → izolează → repară → verifică.
- Defectele hardware și software nu se tratează diferit ca metodă, diferă doar localizarea. Bug-ul de releu are un „stack trace" analog: circuitul desenat în jurnal.
-
Auditul contează. Jurnalul Mark II era un log de incident; astăzi echivalentul este
tabelul
eventsdin Event Viewer, unde fiecare acțiune (cine, când, ce) este păstrată și poate fi filtrată, exportată și auditată — vezi pagina Event Viewer. - Lecția rămâne: „am eliminat simptomul" ≠ „am reparat cauza". În TestLink aceasta se traduce prin verificarea efectului real al unui fix (retest), nu doar prin marcarea defectului ca Resolved.
Nu cumperi? — Sigur, e o glumă; dar e o confuzie frecventă. Cuvântul „bug" în sensul de defect este mult mai vechi decât 1947:
- Edison folosea deja termenul pentru un defect al fonografului său, cu zeci de ani înainte.
- „Buggy" desemna o mașină cu părți mobile expuse, supuse prafului și insectelor — adică „are bug-uri" în sens mecanic.
- Ada Lovelace și alți autori din secolul XIX au descris defecte de programare, dar cu termenii de epocă (error, glitch — termenul glitch încă se folosește).
Ceea ce face incidentul din 9 septembrie 1947 special este că este primul caz în care un defect mecanic dintr-o mașină electronică programabilă a fost catalogat, desenat, păstrat fizic și legat de un diagnostic — de aici expresia „debugging", rămasă în toate limbaje de programare.
| 1947 — Harvard Mark II | 2.0.1 — TestLink Upgraded |
|---|---|
| Fișe de hârtie găurite |
BFF REST API în PHP (api/**) |
| Jurnal de funcționare pe hârtie |
Event Viewer — tabel events, filtru, chart-uri, export |
| Defect catalogat cu text + circuit | Execution status: Passed / Failed / Blocked + link către bug |
| „Bug" de hardware | Custom fields pe test case: prioritate, severitate, Execution type |
| Verificarea unei reparații | Retest în același test plan, cu istoric complet |
| Echipă: operator + inginer | Echipă: Tester / Manager / Admin (vezi Utilizatori și Roluri) |
Ideea de bază nu s-a schimbat în 79 de ani: un defect netestat este un defect necunoscut.
| An | Eveniment |
|---|---|
| 1878 | Edison folosește termenul bug pentru un defect mecanic. |
| 1945–1947 | Funcționează Harvard Mark II (calculator cu relee, programat cu fișe perforate). |
| 9 septembrie 1947 | Prima bug de calculator documentată: fluturele din relay, notat și păstrat în jurnal. |
| 1949 | Primele calculatoare cu tuburi vid (fără relee mecanice) — defectele devin exclusiv electronice. |
| 1952 | Grace Hopper demonstrează primul „compilator" (A-0) — programele devin portabile, iar bug-urile devin defecte de logică. |
| 1957 | Lansarea limbajului FORTRAN — codul sursă devine un artefact întreținut și versionat. |
| 1971 | Primul microprocesor (Intel 4004) — testarea software-ului devine predominantă. |
| 1981 | IBM PC — apar bug-uri care ajung la milioane de utilizatori; începe nevoia de trasabilitate. |
| 1999 | Primul defect de "milionime" și dezvoltarea masivă a bug tracking-ului open-source. |
| 2004 | TestLink este lansat pe SourceForge — planuri de test, rezultate, defecte. |
| 1.9.20 | Ultima versiune legacy (Smarty). |
| 2.0.1 | TestLink Upgraded: UI Dashio, ecrane HTML moderne, BFF REST API în PHP. |
Legătura practică cu produsul, în 5 pași:
-
Execuția Testelor — rulezi testul și alegi rezultatul:
Passed/Failed/Blocked. Pentru un defect:Failed. - Link către defect — din rezultatul de execuție poți crea sau atașa o înregistrare în Gestionarea Bug-urilor (vezi pagina dedicată).
- Severitate și prioritate — setezi Importance × Urgency, care determină prioritatea (vezi Bug Severity).
- Transparență pentru echipă — orice acțiune e înregistrată în Event Viewer (cine a schimbat rezultatul, când).
- Retest după fix — după reparare, re-execuziile se păstrează ca istoric, ca să fie vizibil dacă fix-ul chiar a rezolvat cauza (lecția din Mark II).
- Wikipedia — Grace Hopper, Harvard Mark II, Software bug
- Smithsonian, National Museum of American History — exponatul „first computer bug" (fluturele și pagina de jurnal)
- Computer History Museum — materiale despre Harvard Mark II și programarea cu relee
- În arhiva acestui proiect: pagina de CHANGELOG 2.0.1 și suitele de teste din
tmp/TLU_Test_Cases.md, care urmează aceeași disciplină: observație → documentare → verificare
Pagina documentată în cadrul issue-ului #1288 („first bug ever found on Sept 9, 1947"). Proiectul TestLink Upgraded 2.0.1 — vezi și Home.