Certified Jenkins Engineer

Introduction and Basics

Software Testing

Effective software testing is essential in the CI/CD pipeline to catch defects early, improve code quality, and enable safe refactoring. By integrating a robust test suite into your development workflow, you can ensure that every change maintains system integrity and performance.

The image lists different types of software testing, including unit, integration, smoke, functional, non-regression, acceptance, code quality, performance, security, and manual testing.

Common Types of Software Testing

  • Unit Testing
    Verifies individual functions or methods in isolation.
  • Integration Testing
    Ensures that modules or services communicate correctly.
  • Smoke Testing
    A quick, surface-level check of critical features.
  • Functional Testing
    Validates the software against functional requirements.
  • Non-Regression Testing
    Confirms that new changes haven’t broken existing functionality.
  • Acceptance Testing
    Tests the system from an end-user perspective.
  • Code Quality & Static Analysis
    Identifies code smells, style violations, and potential bugs using tools like ESLint or SonarQube.
  • Performance Testing
    Measures responsiveness and stability under load.
  • Security Testing
    Scans for vulnerabilities such as SQL injection or cross-site scripting.
  • Manual Testing
    Exploratory or UX-focused tests performed by QA engineers.

Test Categories by Execution Speed

CategoryTest TypesPurpose
Fast AutomatedUnit Tests, Integration Tests, Smoke TestsImmediate feedback on code changes
Slower AutomatedFunctional Tests, Non-Regression Tests, AcceptanceComprehensive validation before release
ManualExploratory Testing, User-Experience ValidationHuman-driven scenarios and edge cases

Note

Manual testing is best reserved for exploratory scenarios and usability validation after your automated suites pass.

Balanced Testing Strategy

A layered testing approach optimizes feedback loops and resource usage:

  1. Run Unit Tests First
    Trigger these on every commit for fast error detection.
  2. Schedule Higher-Level Tests
    Execute functional, non-regression, and acceptance tests on a build server or nightly job.
  3. Investigate Failures from Bottom Up
    Always start with unit or integration test errors to pinpoint the root cause.

Warning

Skipping unit tests can lead to cascading failures in higher-level tests. Always fix the smallest failing test before moving up the testing pyramid.

The image outlines four testing principles: Speed and Frequency, Cost Effectiveness, Failure Analysis, and Cascade Effect, each represented with an icon.

Key Testing Principles

PrincipleDescription
Speed and FrequencyRun low-level tests (unit/integration) on every change; reserve resource-intensive tests.
Cost EffectivenessMaximize automated coverage where maintenance effort yields high ROI.
Failure AnalysisAddress unit/integration failures before reviewing higher-level test results.
Cascade EffectTrace broad test failures back to the smallest component to locate defects efficiently.

Watch Video

Watch video content

Previous
Basics of CICD