Skip to content

Issue Tracker Management

github-actions[bot] edited this page Sep 23, 2026 · 4 revisions

Issue Tracker Management — Wiki

Issue Tracker Management permite integrarea TestLink cu sisteme externe de urmarire a problemelor (bug-uri), legand testele direct de tichetele din aceste sisteme.

Path: System > Issue Tracker Management
URL: gui/templates/issuetracker/issuetrackerView.html
Prerequisite: issuetracker_view OR issuetracker_management right (legacy checkRights parity)


Access rights (Refs #959, #960)

The screen mirrors legacy lib/issuetrackers/issueTrackerView.php. The read gate (#959) allows either right to browse the list; the write gate (#960) mirrors legacy $gui->canManage = hasRight('issuetracker_management') — create, edit, delete and the GitHub tracker-create/link route all require issuetracker_management (HTTP 403 + audit event otherwise, matching issueTrackerView.tpl + issueTrackerEdit.php).

Right List/read Create/Edit/Delete GitHub OAuth
neither ❌ 403 + denied screen ❌ ❌
issuetracker_view only ✅ ❌ 403 (UI hides all write controls) ❌ (UI hides entry)
issuetracker_management ✅ ✅ ✅

On the client, gui/templates/issuetracker/issuetrackerView.html showDenied() hides the toolbar and table and renders the localized message it.msg.noPermission ("You do not have permission to view issue trackers…") in red:

norights denied


Table of Contents

  1. Ce Este Issue Tracker Management?
  2. De Ce Este Important?
  3. Sisteme Suportate
  4. Cum Se Configureaza
  5. Exemplu Practic — GitHub
  6. Legarea cu Test Cases
  7. BFF API
  8. Environment Column (Refs #961)

1. Ce Este Issue Tracker Management?

Fiecare proiect de testare genereaza bug-uri. Aceste bug-uri trebuie urmarite undeva — JIRA, GitHub Issues, GitLab Issues, Bugzilla, Mantis, etc.

Issue Tracker Management din TestLink permite:

  • Definirea conexiunilor catre aceste sisteme
  • Configurarea credentialelor (API key, URL, username)
  • Legarea automata a bug-urilor gasite in timpul executiei de testelor corespunzatoare
Fluxul:
Testare → Gasit bug → Creare tichet in GitHub Issues → Link in TestLink
                                                    ↓
                                          Raport: "TC-001 are 2 bug-uri"

2. De Ce Este Important?

Pentru Echipe Open Source — GitHub

GitHub devine critic pentru proiectele open source pentru ca:

  1. Issues sunt gratuite — orice contributor poate raporta bug-uri
  2. Integrare naturala — developerii deja folosesc GitHub pentru cod
  3. Transbilitate completa — de la test case la commit la fix la retest
  4. CI/CD integration — GitHub Actions poate notifica TestLink automat

Exemplu real:

Un tester ruleaza testele de regresie in TestLink
  → TC-047 "Payment flow with expired card" esueaza
  → Creeaza bug in GitHub Issues: "Payment validation allows expired cards"
  → Link in TestLink: TC-047 ↔ GitHub #234
  → Developerul vede bug-ul, face fix, inchide issue #234
  → TestLink marcheaza automat: "Linked issue closed"
  → Testerul retesteaza TC-047 → PASSED
  → Ciclul se inchide complet

Pentru Echipe Enterprise — JIRA

In mediul corporate, JIRA este standardul:

  • Integrare cu LDAP/SSO
  • Workflowuri custom (To Do → In Progress → Code Review → Done)
  • Reporting avansat (velocity, burndown)
  • Legare directa la epicuri si sprinturi

Pentru Echipe Mici — Redmine / Mantis

  • Redmine: open source, usor de instalat, suporta wiki
  • Mantis: lightweight, popular in Romania, usor de folosit

3. Sisteme Suportate

ID Sistem API Status Utilizare
1 GitHub REST ✅ Activ Open source, private repos
22 GitLab REST ✅ Activ Open source, self-hosted
5-7 JIRA REST/Soap/DB ✅ Activ Enterprise
15 Redmine REST ✅ Activ Open source, project management
1-2 Bugzilla XMLRPC/DB ✅ Activ Mozilla, legacy
3-4,24 Mantis SOAP/DB/REST ✅ Activ Open source, usor
19 Trac XMLRPC ✅ Activ Legacy, Python projects
8 FogBugz REST ✅ Activ Microsoft ecosystem
23 Kaiten REST ✅ Activ Agile boards
10-11 GForge SOAP/DB ❌ Inactiv Legacy

Ordine in interfata: GitHub → GitLab → JIRA → Redmine → Bugzilla → Mantis → Trac → ...


4. Cum Se Configureaza

Crearea unui Issue Tracker

  1. Navigheaza la System > Issue Tracker Management
  2. Click "+ Create Issue Tracker"
  3. Completeaza:
Camp Descriere Exemplu
Name Nume identificativ "GitHub - TestLink Project"
Type Tipul de sistem GitHub REST API
Configuration XML cu detaliile de conectare Vezi mai jos

Configurare XML — GitHub

<issuetracker>
  <issuetracker管理系统>GitHub</issuetracker管理系统>
  <uribase>https://github.com/</uribase>
  <github>
    <project>sebiboga/testlink-upgraded</project>
    <apikey>ghp_xxxxxxxxxxxx</apikey>
  </github>
</issuetracker>

Configurare XML — JIRA

<issuetracker>
  <issuetracker管理系统>JIRA</issuetracker管理系统>
  <uribase>https://jira.company.com/</uribase>
  <jira>
    <project>QA</project>
    <apikey>NTIxMTI3...base64</apikey>
  </jira>
</issuetracker>

Configurare XML — Redmine

<issuetracker>
  <issuetracker管理系统>Redmine</issuetracker管理系统>
  <uribase>https://redmine.company.com/</uribase>
  <redmine>
    <project>my-project</project>
    <apikey>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</apikey>
  </redmine>
</issuetracker>

5. Exemplu Practic — GitHub

De Ce GitHub?

Pentru proiectele open source (ca TestLink 2.0.1), GitHub Issues este alegerea naturala:

Avantaj Detaliu
Gratuit Nu necesita licenta
Markdown Bug reports cu cod, screenshots, link-uri
Labels bug, enhancement, critical — filtare usoara
Milestones Legare la release-uri
Actions CI/CD notifica TestLink automat
PR linking "Fixes #123" inchide automat bug-ul

Setup Pas cu Pas

  1. Creeaza GitHub Personal Access Token:

    • GitHub → Settings → Developer settings → Personal access tokens
    • Scope: repo (full control)
    • Copiaza token-ul
  2. Creeaza Issue Tracker in TestLink:

    Name: GitHub - TLU Project
    Type: GitHub REST API
    Config XML:
    <issuetracker>
      <issuetracker管理系统>GitHub</issuetracker管理系统>
      <uribase>https://github.com/</uribase>
      <github>
        <project>sebiboga/testlink-upgraded</project>
        <apikey>ghp_TU_TOKEN_AICI</apikey>
      </github>
    </issuetracker>
    ``
    
    
  3. In timpul executiei de test:

    • TC-012 esueaza
    • Click "Create Issue" in TestLink
    • Se deschide GitHub Issues cu pre-fill: titlu, descriere, labels
    • Completezi si submit
    • TestLink salveaza link-ul: TC-012 ↔ GitHub #45

6. Legarea cu Test Cases

In Timpul Executiei

  1. Ruleaza un test case
  2. Daca testul esueaza, click "Create Issue"
  3. Se deschide formularul pentru issue tracker
  4. Completeaza detaliile bug-ului
  5. Submit — issue se creaza in sistemul extern
  6. TestLink salveaza ID-ul issue-ului

Vizualizarea Link-urilor

In rapoarte si in detalii test case:

TC-012: Payment flow
  Status: FAILED
  Linked Issues:
    - GitHub #45: "Payment validation allows expired cards" [OPEN]
    - GitHub #47: "Race condition in payment queue" [CLOSED]

Inchiderea Automata

Cand un issue linked este inchis in GitHub/JIRA, TestLink poate marca automat testul ca "retest needed".


7. BFF API

Endpoint: /api/issuetracker/index.php

Method Endpoint Descriere
GET / Lista toate issue trackerele
GET /{id} Detalii un issue tracker
POST / Creaza issue tracker nou
PUT /{id} Actualizeaza issue tracker
DELETE /{id} Sterge issue tracker
GET /meta/types Tipuri disponibile

Exemplu — Listare

curl -b cookies.txt http://localhost:8082/api/issuetracker/index.php
{
  "status": "ok",
  "items": [
    {
      "id": 1,
      "name": "GitHub - TLU Project",
      "type": 26,
      "typeLabel": "github (Interface: rest)",
      "cfg": "<issuetracker>...</issuetracker>"
    }
  ],
  "total": 1
}

8. Environment Column (Refs #961)

Every tracker row shows its per-tracker environment state in the Environment column — legacy checkEnv() parity (see Task-Issue-961-issuetracker-Env-Column):

  • green OK badge when the tracker interface's environment is ready;
  • red badge with the failure message (e.g. "You need to enable SOAP extension") when not.

The Server URL cell matches the cfg tag written by each tracker template — <uribase> (bugzilla/fogbugz/jira/mantis/…) or <url> (redmine/gitlab and the GitHub-OAuth-created trackers) — so the cell is never blank.

Clone this wiki locally