Prima Bug Istorica - sebiboga/testlink-upgraded GitHub Wiki
Prima Bug din Istorie — 9 septembrie 1947 🦋
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
Cuprins
- 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ă
1. Cronologia zilei de 9 septembrie 1947
| 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".
2. Jurnalul original
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".

3. Nu doar fluturele: diagnosticul real
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.
4. De ce contează pentru testare și QA
- 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.
5. Cuvântul „bug" este mai vechi decât fluturele
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.
6. De la Mark II la TestLink 2.0.1
| 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.
7. Cronologie: de la primul bug la TestLink
| 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. |
8. Cum înregistrezi o bug reală în TestLink
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).
9. Surse și lectură suplimentară
- 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.