Jira, GitHub & ITIL: A Testing Strategy That Actually Works
Vote for this post
Click the arrows to vote • 1 vote per logged in user
Login to Vote
Code is written fast. Releasing it safely takes discipline. Without a structured approach, bugs reach production, user trust erodes, and technical debt piles up. Here is a practical methodology that ties together Jira, GitHub pipelines, ITIL, and formal User Acceptance Testing into one repeatable, auditable delivery process.
The Jira Board: Every Story Has a Journey
Jira is the central hub. Each column on your board represents a distinct phase of a User Story's life — from Backlog all the way through to Done. The critical principle is simple: every story must pass through a defined lifecycle with explicit sign-off at each stage. No story reaches production without departmental UAT approval.
The most important transition on the board is moving a story from In Progress to In Testing. This is a formal handoff, not a casual drag-and-drop. Before a developer can make that move, the code must be committed to a feature branch, a Pull Request must be raised and assigned to a peer reviewer, unit tests must be passing, and the CI/CD pipeline must have run successfully. Only then does the QA engineer get involved — working against a dedicated test environment, with clear acceptance criteria and test data in place.
Testing Tools: Choosing the Right Weapon
Out of the box, Jira doesn't include a full test management suite. Most teams add one. Xray for Jira is the most popular choice — test cases, executions, and results all live as native Jira issue types, meaning your test evidence sits right alongside your stories. QA engineers create Test Executions linked to each story, record pass/fail results in real time, attach screenshots as evidence, and failed tests automatically raise Bug issues linked back to the parent story.
Zephyr Scale suits larger organisations needing centralised test libraries and advanced traceability reporting. TestRail works well for QA-led organisations that prefer their own tooling separate from the development instance. For very small teams just starting out, Confluence can document test cases manually — but it lacks automation integration and isn't recommended once you grow beyond five developers.
Linus's Law: More Eyes, Fewer Bugs
Eric Raymond coined Linus's Law in 1999, named after Linus Torvalds: "Given enough eyeballs, all bugs are shallow." The more people review code, the more likely defects are caught before they reach production.
In practice, this means mandatory Pull Requests. No code merges without at least one peer approval. The developer raises a PR named after the Jira ticket (e.g. feature/PROJ-123-add-invoice-export), tags the story ID in the description, and assigns a reviewer. Inline comments raise concerns, the developer addresses them, and only once all threads are resolved does the reviewer approve. GitHub branch protection rules enforce this at the repository level — there is no way to bypass it. The Jira/GitHub integration then displays PR status directly on the Jira card, so the whole team can see where things stand without leaving Jira.
The GitHub Pipeline: Quality Gates on Autopilot
GitHub Actions provides the automated pipeline that takes code from a developer's branch through a series of quality gates before it is eligible for release. On every push to a feature branch the code compiles and a build health check runs — a failed build blocks the PR. Unit tests run on every commit. Static analysis tools scan for vulnerabilities and code smells, with a minimum coverage threshold enforced (typically 80%).
On merge to the develop branch, the application is automatically deployed to the Test environment, triggering the story to move to In Testing in Jira. End-to-end integration tests then run against that environment. Once QA signs off, the release branch deploys to a separate UAT environment for business user testing. Only after UAT approval does the code promote to production — via a manual approval gate in GitHub Actions requiring a named approver to click through before deployment runs.
ITIL Maps to Everything You Already Do
ITIL's Service Lifecycle isn't abstract theory — it maps directly onto your Jira board. Service Strategy is your backlog refinement: the Product Owner works with stakeholders to define what to build and why. Service Design is sprint planning: stories get estimated, acceptance criteria are defined, branches get created. Service Transition is your most critical phase — it covers everything from Code Review through UAT to Ready for Release. Change Management, Release Management, and Service Validation all happen here. A story can only enter production after passing through Service Transition. Bypassing UAT is bypassing Service Transition — a governance failure that process or tooling should prevent.
Service Operations is production: the story is Done, the version is Released, and the team monitors the live service. Bugs become Jira incidents, recurring problems become Problem tickets, and monitoring tools can auto-create Jira issues via integrations. Finally, Continual Service Improvement is your sprint retrospective — every improvement action becomes a new backlog story, beginning the lifecycle again.
ITIL 4 modernises this with its Service Value System, treating delivery as an iterative loop rather than sequential stages. Its guiding principles align naturally with Agile: focus on value, progress iteratively with feedback, collaborate openly, keep it simple, and automate once manual processes are stable.
UAT: The Final Gate Before Production
User Acceptance Testing is the formal agreement between the development team and the business that a story meets its stated requirements. It is performed by the actual end users — not QA engineers, not developers. An Accounts Payable feature is tested by someone from Accounts. An HR onboarding story is tested by an HR business partner. These testers are not technical, so the process must be designed so a non-technical user can follow test steps and record outcomes without developer assistance.
Each UAT test case needs a unique ID linked to the Jira story, clear pre-conditions, numbered steps in plain English, a precise expected result, space for the actual result, a screenshot, and a binary Pass/Fail outcome signed with the tester's name and date. If all tests pass, the business user comments UAT APPROVED — [Name] — [Date] on the Jira story and transitions it to Ready for Release. If anything fails, a Bug is raised, the story moves back to In Progress, and the cycle repeats from Code Review.
Bugs Need a Process Too
A bug that is verbally communicated and fixed without a Jira record is invisible to the team, untracked in metrics, and unauditable. Every defect gets a severity: Critical bugs (crashes, data loss, security breaches) must be resolved same sprint. High severity bugs must also resolve same sprint. Medium bugs may be accepted with a documented exception and a linked improvement story. Low cosmetic issues can go to the backlog — release can proceed.
The Bottom Line
The combination of Jira's workflow, GitHub's pipeline discipline, a formal testing tool like Xray, and the ITIL governance framework creates a robust and auditable delivery process. The rules are simple: no story leaves In Progress without a reviewed Pull Request; no story leaves In Testing without documented QA sign-off; no story reaches production without documented departmental UAT approval in Jira. Every bug, every improvement, every retrospective action becomes a Jira ticket. The pipeline enforces quality gates automatically — removing the human temptation to skip steps. More eyes on code means fewer bugs in production. And Continual Service Improvement means you never stand still.
Download a Guide based on this blog with more information and tips
A process that exists only in documentation is worthless. Configure your board, enforce your branch rules, and run your first UAT session this sprint.
Leave a Comment