Leonardho R Sitanggang
LMS B2B Dibimbing
Manual & Automation Testing
Education
Leonardho R Sitanggang
S1 Rekayasa Perangkat Lunak, Telkom University (2019- 2023)
Dibimbing’s Bootcamp Final Project involves conducting Manual and Automation Testing, including Integration and End-to-End (E2E) testing on the Dibimbing LMS Web using Java Selenium & Rest Assured.
Dibimbing LMS B2B Web Testing
As an IT Developer at Astragraphia Information Technology, I was also assigned to mentor intern students in web development, including teaching Manual and Automation Testing using PHPUnit, Cypress.js, and JMeter.
Internship Mentor
Overview Project
Working
IT Developer (Full-Time) Jan 2024 - Now
PT. Astragraphia Information Technology, South Jakarta
Freelance Web Development Tutor (Part-Time) Apr 2026 - Now
Jakarta Metropolitan Area
Table Of Content
Problem Statement
05
Requirement & Test Plan
06
Manual Testing
14
Automation Testing (E2E Test)
17
Automation Testing (IntegrationTest)
20
Regression & Compatibility Testing
23
Reporting & Analysis
27
Conclusion & Recommendation
33
LMS B2B Dibimbing is a web-based Learning Management System that helps Dibimbing admins and employees manage bootcamp and course programs. Built with React and Next.js on the frontend and GraphQL as the API layer, testing covers three core modules : Company Dashboard, Class Management, and Announcement Management across both frontend and backend, on desktop across Chrome and Firefox.
Introduction
PROBLEM
STATEMENT
As a platform handling centralized class and employee data, LMS B2B Dibimbing carries real risk if left inadequately tested: login failures could lock out all users, mismanagement could disrupt class schedules, and weak input validation could corrupt records. Manual testing across multiple browsers is also time-intensive, risking reduced coverage within a limited sprint window.
Requirement & Test Plan
Testing scope was defined based on risk analysis per module, prioritized from P1 (Authentication, Class Management) to P4 (Dashboard). The plan combines API Integration Testing, UI E2E Testing, Manual System Testing, Compatibility Testing, and Regression Testing. Entry criteria require a stable staging environment and reviewed test cases; exit criteria require a minimum 90% pass rate with no open Critical/High defects before release. Each test case should also be completed in under 20 seconds.
Scenario & Coverage Area
Module | Priority | Acceptance Criteria | Risk |
Authentication | P1 |
|
|
Dashboard | P4 |
|
|
Class Management | P1 |
|
|
Manage Announcement | P3 |
|
|
All testing activities are backed by structured, traceable documentation across dedicated Google Spreadsheets. Test cases and their results are logged with full detail, from Test Case ID and pre-conditions to expected results, execution status, and related defect IDs, giving the team real-time visibility into progress. Security vulnerabilities are tracked separately with severity, risk impact, and verification status, while defects follow a clear lifecycle from New through Assigned, In-Progress, Resolved, and Retesting, closing only once a fix is verified or reopening if it fails.
Beyond individual test cases, QA Metrics roll execution data up into a single quality snapshot pass/fail/blocked counts, defect distribution by severity and priority, feeding directly into the Test Closure Report that determines release readiness through a Go/No-Go recommendation. Execution itself runs on a day-by-day schedule tracked in Jira, keeping manual and automation progress, module coverage, and daily case counts visible and up to date throughout the sprint.
Test Strategy
Test Plan: Test Plan - LMS B2B Dibimbing - LeonardhoRS
Manual System Testing forms the foundation of the QA process, validating that every requirement is met and data flows correctly across all integrated components. Executed end-to-end on real devices within the staging environment, it follows documented user behavior — test steps, test data, and expected results — across the Auth, Dashboard, Class, and Announcement modules. Rather than running in isolation, manual testing feeds directly into automation: once a test case is executed, have passed status, and its expected result confirmed, it becomes the verified basis for scripting, ensuring automation is built on triaged behavior rather than assumptions. This testing layers target a minimum 90% pass rate.
Test Approach
System / Manual Testing
API Testing & E2E Testing
Automated coverage is split across two layers that mirror the application's architecture. API Integration Testing, built with Java REST Assured, validates that GraphQL endpoints return correct payloads aligned with both the database and UI-entered data, with each test file mapped to a single query or mutation. UI End-to-End Testing, built with Java Selenium, validates complete user journeys from the browser through to the backend, converting confirmed manual test cases into automated scripts covering both positive and negative flows. Each test case execution have maximum execution time of 20 seconds per test case.
Compatibility Testing keeps functional execution efficient by running every checks on Google Chrome and Mozilla Firefox. All achieved by executing the same Selenium suite in parallel through a CI workflows, eliminating the need to repeat manual testing per browser. Regression Testing closes the loop: triggered automatically through GitHub Actions CI/CD on every code change in the main branch, it ensures new updates don't break existing functionality, catching regressions early and reducing reliance on repeated manual re-testing.
Test Approach
Compatibility & Regression Testing
Executed Rate = (Number of test cases executed/Number of test cases created) x 100
Passed Rate = (Number of test cases passed / Number of test cases executed) x 100
Failed Rate = (Number of test cases failed / Number of test cases executed) x 100
Blocked Rate = (Number of Test cases blocked / Number of test cases executed) x 100
Test Metrics
Testing Tools
Test Type | Tool / Method | Layer | Execution |
Integration API Testing | Java REST Assured | API / Backend | Automated |
End-to-End (E2E) / UI Testing | Java Selenium | Full Stack | Automated |
Manual Testing (System Testing) | Manual / Test Cases | Full Stack | Manual |
Compatibility Testing | Multiple Browsers | Full Stack | Automated |
Regression Testing | Github CI/CD (Java Rest Assured, Selenium) | Full Stack | Automated |
Other Tools
Tools | Layer | Purpose |
Jira | All Phase | Manage Test Execution Timeline |
Google Spreadsheet | Manual Testing | Manage & Documented Test Case & Bug Report |
Google Slides | Presentation | Weekly & Final Presentation |
Google Drive | All Phase | Document & Testing Evidence Storage |
Google Docs | Preparation | Manage & Documented Sprint Report, Test Plan, Test Closure, and Daily Report |
Google Chrome, Mozilla Firefox | All Phase | Web browser to execute Manual & Automation Testing, View Automation Test Report |
Github | Automation Testing | Automation Test Code Version Control |
Intellij Idea | Automation Testing | Automation Test Code Editor |
MANUAL
TESTING
Manual System Testing validates that all requirements are met and data flows correctly across integrated components. Executed end-to-end on real devices in staging, it covers the Auth, Dashboard, Class, and Announcement modules following documented test steps and data, with results logged in Google Spreadsheet and serving as the baseline before automation.
Test Case Example
TC-ID | Description | Type | Priority | Pre-Condition | Test Steps | Expected Result | Status |
TC-AUTH-001 | User can login into the app using valid basic auth | Positive | P1 | - Admin account already registered | - Open the login page - Fill the E-mail and Password field - Click the Sign In button | System redirect to Dashboard page | Passed |
TC-CLMG-006 | User can view no data message when no class found | Negative | P2 | - User already signed in - At least one class exists | - On the Dashboard page, click the 'Class' menu in the left sidebar - Locate the section titled 'Manage Class' - Locate the search input field with the placeholder 'Search class...' - Type the keyword into the search field | System show failed message "The list of classes is currently empty" | Passed |
TC-CLMG-056 | User cant add content test with invalid duration zero minutes | Negative | P2 | - User already signed in - User already select a class - At least one mentor assigned - At least one content exists | - On the Edit Class page, open the Test tab - Click 'Create Test' - Select a test content type - Fill all the field (based on test data) - Click 'Create Test’ | System show failed message "Durasi test minimal 1 menit" | Failed |
TC-CLMG-077 | User cant edit class announcement with whitespace-only title | Negative | P2 | - User already signed in - User already select a class - At least one announcement exists | - On the Edit Class page, open the Announcement tab - Below the Create Announcement form. Select an announcement - Click the 'Edit' button - On the Edit Announcement pop-up. Change all the field (based on test data) - Click the 'Edit Announcement' button | System show failed message "Check field title" | Failed |
Test Case: Test Case - LMS B2B Dibimbing - LeonardhoRS
Bug Report Example
Bug-ID | Related TC-ID | Description | Severity | Priority | Steps To Reproduce | Notes From QA | Status |
BUG-CLMG-077-01 | TC-CLMG-077 | Title validation on Update Announcement rejects a fully empty title field but accepts a whitespace-only value | S2 High | P2 | 1. On the Edit Class page, open the Announcement tab 2. Below the Create Announcement form. Select an announcement 3. Click the 'Edit' button 4. On the Edit Announcement pop-up. Fill the title field with whitespace only 5. Click the 'Edit Announcement' button | The system should make the empty field validator treat whitespace-only input as empty | New |
BUG-CLMG-056-01 | TC-CLMG-056 | Test duration validation on Create Content Test allows zero duration minutes | S2 High | P2 | 1. On the Edit Class page, open the Announcement tab 2. Below the Create Announcement form. Select an announcement 3. Click the 'Edit' button 4. On the Edit Announcement pop-up. Fill the title field with whitespace only 5. Click the 'Edit Announcement' button | Add validation to reject a 0-min duration when creating content test, since a test with no duration is logically invalid | New |
Bug Report: Bug Report - LMS B2B Dibimbing - LeonardhoRS
AUTOMATION
INTEGRATION TESTING
API automation uses Java REST Assured to validate that backend GraphQL responses align with the database and UI-entered data. Each test file covers one query or mutation with multiple scenarios, assertion scripts, and assertion templates for maintainability.
Integration Test Guideline
Pre-Condition
Steps
Integration Test Example
Github Integration Test Codebase: https://github.com/FlazeFy/LeonardhoRS-FinPro-QA-Batch4-Dibimbing/tree/main/src/test/java/test/integration
TC-CLMG-002 : Java Rest Assured Script
API/Integration Test: Class Management Module Suite
AUTOMATION
E2E TESTING
UI automation uses Java Selenium WebDriver to validate complete user journeys from the browser through to the backend. Verified manual test cases are converted into automated scripts, covering both positive and negative flows across all modules.
E2E Test Guideline
Pre-Condition
Steps
E2E Test Example
Github E2E Test Codebase: https://github.com/FlazeFy/LeonardhoRS-FinPro-QA-Batch4-Dibimbing/tree/main/src/test/java/test/e2e
TC-CLMG-002 : Java Selenium Script
UI/E2E Test: Class Management Tests Suite
Regression & Compatibility Testing
Regression Testing runs largely through GitHub Actions CI/CD on every code change in the main branch, catching regressions faster than manual testing alone. Compatibility Testing runs functional checks both in Chrome and Firefox through the same Selenium suite executed in parallel via a CI workflows.
Regression Test Example
Github Regression Test Codebase: https://github.com/FlazeFy/LeonardhoRS-FinPro-QA-Batch4-Dibimbing/tree/main/.github/workflows
Regression Test : Setup Github Actions for Automate Test Case Execution every new commit
Regression Test Example
Github Regression Test Codebase: https://github.com/FlazeFy/LeonardhoRS-FinPro-QA-Batch4-Dibimbing/tree/main/.github/workflows
Compatibility Test : Setup Github Actions for Automate Test Case Execution runs in multiple cross-browser
Regression Test Example
Github Regression Test Codebase: https://github.com/FlazeFy/LeonardhoRS-FinPro-QA-Batch4-Dibimbing/tree/main/.github/workflows
Regression Test : Setup mailer for auto reporting after a suite finished execute
Reporting & Analysis
Results are documented through Test Case Logging and Sprint Report. Security Vulnerability Reports, and Bug/Defect Logging (following a New → Assigned → Resolved → Retesting → Closed/Reopened flow). QA Metrics summarize execution progress, pass/fail/blocked counts, defect distribution by severity and priority, and overall release readiness.
Priority & Severity
Priority | Severity | Description | SLA Resolution |
P1 | Critical | System crash, login failure blocking all users, data loss | 44 hours |
P2 | High | Core feature broken, incorrect data stored, security breach | 72 hours |
P3 | Medium | Non-critical feature incorrect, minor data mismatch | A week |
P4 | Low | UI cosmetic issues, minor UX problems, typos | Next sprint |
Bug Reporting Flows
After a bug is found, the status is set to New. QA then waits until the developer fixes the bug, after which the test case can be executed again and the status updated to Retesting
Bug Defect
Security Vulnerability
Bug Report Document
Automation Reporting
Aventstack Automation Report
Mailer Reporting After CI
Defect Analysis
Overall Passed Percentage
73.00% from 100 Executed Test Case
Test Closure: Test Closure Report - LMS B2B Dibimbing - LeonardhoRS
CONCLUSION
Testing across the Authentication, Dashboard, Class Management, and Announcement modules identified 26 defects. 20 High and 6 Medium severity, with none yet resolved. Alongside 3 security vulnerabilities, including one Critical finding where the Announcement Detail page exposes raw database and SQL error details.
Most defects trace back to a single recurring pattern: missing input validation on dates, durations, file types, and URLs, concentrated heavily in Class Management. Notably, the Announcement Detail page also exhibits an intermittent system crash (internal server error), occurring inconsistently rather than on every access, which makes it harder to reproduce reliably and raises the risk that it could reach production undetected.
With a Critical security exposure, an unresolved intermittent crash, and zero defects resolved at the time of this report, the application is not yet ready for release.
RECOMENDATION
The Critical vulnerability (VULN-ANCM-001) and defects should be resolved immediately, as it risks exposing backend structure to any user who manipulates a URL parameter. The P2 defects should follow next, then the remaining validation-related bugs, ideally fixed at a shared backend validation layer rather than field-by-field, since the same gap (accepting empty, zero, past-date, or malformed input) repeats across more than a dozen defects. Once fixes land, a full regression pass is needed to confirm nothing broke and to close out the Test Execution Summary with real pass/fail numbers before sign-off.
THANK YOU
THANK YOU FOR YOUR ATTENTION
Attachments