The Untameable Mindset
6. Pragmatic Testing of Code

Avatar Edgar Ravenhorst

Written by: Edgar Ravenhorst, 24 mei 2024

Focus on tests that provide real value and insight. Identify critical paths and concentrate testing efforts on the most important areas to ensure high code quality and performance.

Pragmatic testing involves prioritizing tests that deliver significant benefits and actionable insights. Instead of striving for exhaustive testing coverage, this approach focuses on the most critical aspects of the codebase to ensure that testing efforts are efficient and effective.

Key Principles

Identify critical paths in the codebase that have the highest impact on functionality and user experience. Prioritize tests for these areas to catch significant issues early. Use automated testing tools to streamline the testing process and ensure consistent results. Balance the need for thorough testing with the practical constraints of time and resources, focusing on tests that provide the most value.

Benefits

Pragmatic testing ensures that testing efforts are focused on the most impactful areas, leading to higher code quality and more efficient use of resources. By concentrating on critical paths, teams can catch significant issues early and reduce the risk of bugs affecting the end user. This approach also allows for faster feedback and iteration, supporting a more agile development process.

Implementation Strategies

Conduct a thorough analysis of the codebase to identify critical paths and high-impact areas. Develop and prioritize tests for these key areas, ensuring they provide meaningful insights into code quality and performance. Use modern testing tools like Cypress, Playwright, and Vitest to automate testing and ensure consistency. Regularly review and update the testing strategy to adapt to changes in the codebase and project requirements.

Examples

A team identifies the critical user flows in their web application, such as the login process and payment system, and prioritizes tests for these areas. By using Cypress for end-to-end testing, they ensure these critical paths are thoroughly tested with each code change. Another example is a project that uses Playwright to automate cross-browser testing for key functionalities, ensuring consistent performance across different environments. This focus on high-impact areas allows the team to maintain high code quality and quickly address any issues that arise.

--

Read about other Aspects of the Untameable Mindset:

This page is part of a series on The Untameable Mindset. Explore the other aspects to learn more about the principles that guide our development practices and behaviors.

1: Unified Vision and Goals

Ensure everyone understands the project's vision and goals. This shared understanding guides decisions and actions across the team.

Learn more

2: Cross-Functional Collaboration

Foster collaboration among all roles by encouraging open communication and teamwork. This approach leverages diverse expertise and perspectives to solve problems and innovate effectively.

Learn more

3: MVP Driven: Start Small, Grow Big

Begin with a Minimum Viable Product (MVP) and scale up through iterative development. This approach allows for rapid deployment and user feedback while ensuring the product evolves robustly and sustainably.

Learn more

4: Release or Disable Features Through Configuration

Use feature toggles and configurations to release or disable features quickly. This approach allows for flexible adjustments without extensive code changes, enabling controlled rollouts and quick responses to feedback.

Learn more

5: Continuous Integration and Continuous Delivery (CI/CD)

Integrate and deliver code changes frequently with automated testing and deployment to ensure code quality and functionality. This approach promotes collaboration, reduces integration issues, and maintains a stable, deployable codebase.

Learn more

6: Pragmatic Testing of Code

Focus on tests that provide real value and insight. Identify critical paths and concentrate testing efforts on the most important areas to ensure high code quality and performance, avoiding over-testing.

Learn more

7: Automate Repetitive and Complex Tasks

Automate complex or repetitive tasks across the organization and for end-users to improve efficiency and free up time for more valuable work. This enhances productivity and ensures consistent execution.

Learn more

8: Prioritize Needs of the End-User and (Future) Developer

Prioritize both the end-user experience and future developer needs to ensure the product is user-friendly and maintainable. Involve users in design, maintain clear documentation, and follow best practices for code maintainability.

Learn more

9: Concise and Accessible Documentation

Maintain concise and accessible documentation to provide an overview of the software, its components, and critical business logic. This supports effective use and development without consuming excessive time.

Learn more

10: Continuous Feedback and Improvement

Foster a culture of continuous feedback and improvement. Regularly collect feedback from all stakeholders to refine processes and products, ensuring the development process is always evolving and adapting.

Learn more


Coffee time!

Interested in learning more about Untameable and how we work?Reach out and let's discover how to become Untameable together

Call us: +31 627 311 410

Email us: info@untameable.io

Follow us: LinkedIn