Status: ACTIVE
The exam is broken down into six blocks:
Block 1 → 7 items, Weight: 16.7%
Block 2 → 4 items, Weight: 9.5%
Block 3 → 5 items, Weight: 11.9%
Block 4 → 12 items, Weight: 28.6%
Block 5 → 11 items, Weight: 26.2%
Block 6 → 3 items, Weight: 7.1%
Objectives covered by the block (7 exam items)
Software Testing Concepts and Terminology
Levels of Testing
Software Testing Definitions
Testing Principles
Start and End of the Testing Process
The Test Pyramid
Code coverage
Objectives covered by the block (4 exam items)
The Goal and Importance of Test Automation
The Code Refactoring Loop
Code Refactoring
Objectives covered by the block (5 exam items)
The Assertion Statement
Context Managers
Function Decorators
Class Decorators
Different Types of Python Methods
Objectives covered by the block (12 exam items)
Anatomy of a Unit Test
xUnit Architecture
Running Tests
Good Practices
Specialized Assertions
Unit Tests as a Source of Documentation
AAA Pattern Used in Practice
Using the unittest Module
Objectives covered by the block (11 exam items)
Unit Test Preparation
Unit Test Parametrization
Marking Tests for Special Conditions
Selective Test Execution
Using Test Doubles
Mocking with Patch
Handling Exceptions in Unit Tests
Objectives covered by the block (3 exam items)
Test-Driven Development Fundamentals
Implementing the Red, Green, Refactor Phases
Behavior-Driven Development Fundamentals
A minimally qualified candidate (MQC) for the PCAT exam is expected to have a foundational understanding of software testing principles and practices, including various levels of testing such as unit, integration, system, and acceptance testing. They should possess basic programming skills in Python and be familiar with test automation, TDD, and BDD approaches. The candidate should also have a grasp of software engineering principles, such as code refactoring and using test doubles. Furthermore, they must demonstrate knowledge of test design and execution, utilizing tools like unittest, and have the capability to implement testing best practices. Effective communication skills are essential to present testing insights coherently, catering to diverse audiences.
This profile represents a blend of technical proficiency, analytical thinking, and communication skills crucial for navigating the complexities of software testing environments.
Block 1: Software Testing Essentials (16.7% of total exam)
Minimum Coverage: A candidate must demonstrate a basic understanding of software testing concepts and terminology, levels of testing, software testing definitions, and testing principles. They should also be familiar with the start and end of the testing process, the test pyramid, and code coverage.
Block 2: Test Automation and Code Refactoring (9.5% of total exam)
Minimum Coverage: Proficiency in explaining the purpose and benefits of test automation, describing the code refactoring loop, and implementing the Arrange, Act, Assert (AAA) triplet in automated tests using Python. They should also apply the DRY and KISS principles in code refactoring.
Block 3: Assertions, Context Managers, Decorators, and Python Methods (11.9% of total exam)
Minimum Coverage: Understanding the concept of assertions, the use of context managers, function and class decorators, and the different types of Python methods. They should be able to implement these techniques to enhance code quality and testing.
Block 4: Foundations of Unit Testing (28.6% of total exam)
Minimum Coverage: Basic capability to explain the F.I.R.S.T principles of unit testing, describe the xUnit architecture, run tests using different tools and frameworks, and follow good practices for test file structure and naming conventions. They should also implement specialized assertions, understand the value of unit tests as documentation, and utilize the unittest module.
Block 5: Advanced Unit Testing Techniques (26.2% of total exam)
Minimum Coverage: Proficiency in setting up and tearing down test environments with appropriate fixtures, implementing parameterized unit tests, marking tests for special conditions, and selectively executing tests. They should also be able to use test doubles and the patch mechanism from unittest.mock, and handle exceptions in unit tests.
Block 6: Test-Driven and Behavior-Driven Development (7.1% of total exam)
Minimum Coverage: Understanding the concepts and principles of Test-Driven Development (TDD) and Behavior-Driven Development (BDD). They should be able to explain the TDD cycle of Red, Green, Refactor, and describe the Given, When, Then syntax for writing behavior specifications.
To pass the PCAT exam, a candidate's cumulative average score across all blocks must reach 70%.