5 steps to get unit tests going

Facebook
Twitter
LinkedIn
Pinterest
WhatsApp

Once you start unit testing, you will find significant benefits to your design, throughput, quality, and peace of mind. However, it is not easy to start in an organization that’s not used to it. Here are a number of practical tips:

First step: Make sure the motivation is there – as you will see down the list, this change (like most changes) will require the organization to invest time and work in it. Understand the current situation, understand the pains, get some statistics. There will usually be someone who tried writing unit tests – talk with them, try to understand the challenges. Have a kickoff meeting with the team, understand together why are you doing this and how will the process look like. Have a kickoff with management, you will definitely need their support, you need to be on the same page. Whenever it gets tough (it will), get back to this discussion.

Second step: Train the team – I think training should be minimal – just enough so people will understand what they’re going into. Most of the learning is on the job. I do one day training in which I teach the basics of unit tests in the specific technology (I had lately the opportunity of working with an organization in which I taught c# with visual studio tests, react/native with jest + testing library, angularjs with jest and java with junit). We do some TDD with mob programming and finish with unit tests on legacy code techniques.

At this point some people (highly motivated) may start experimenting. Help them.

Third step: Open roads in the legacy code – adding tests to legacy code is difficult at the beginning. Pair with motivated individuals to crack it up, and find patterns to use on their legacy code (see my video about this: English / Hebrew). Sometimes you’ll need utilities, sometimes you’ll need to do some refactoring to allow people to start work.

Are people starting to write tests? Sometimes they do.

Fourth step: Pair with developers – We had the training, we opened up the roads, and now it is time to start moving the ship. Experience tells me I need to sit with almost all developers and pair with them, writing their first tests. Only when you do that realization seeps in. There are many A-Ha moments, I like it.

You would expect people to start writing unit tests by this time. However, change is very difficult. Remember at the beginning writing the unit test is an additional effort. It returns the investment very fast but it is an additional effort.

Fifth step: Let developers write unit tests without you – this is where, together with the team, we start adding the tests gently into the definition of done. They must do it without you, they must wrestle with the legacy code to get it moving. Like other technological challenges, you need some intensity to grasp them. This is the difficult part.

The first time you change code that already has unit tests is a magical moment. The tests tell you the story in simple words, they guide you and keep you safe. The time and sweat were worth it.

 

Subscribe for Email Updates:

Categories:

Tags:

Continuous Planning
Agility
SAFe Release Planning
GanttBan
Pomodoro Technique
Manage Budget Creation
Agile Exercises
Quality Assurance
The Kanban Method
Systems Thinking
Agile Product Ownership
Releases Using Lean
LAB
What Is Kanban
SPC
Lean Agile Organization
An Appreciative Retrospective
Agile Basics
Spotify
Engineering Practices
Acceptance Test-Driven Development
AI
QA
lean agile change management
Test Driven Development
Agile and DevOps Journey
Agile Marketing
Coaching Agile Teams
SAFe
System Team
User stories
Professional Scrum with Kanban
IT Operations
Operational Value Stream
Legacy Code
Managing Projects
Continuous Integration
Agile Mindset
Professional Scrum Product Owner
Certification
Atlaassian
Risk Management on Agile Projects
Covid19
Agile Israel
BDD
Sprint Planning
Self-organization
Limiting Work in Progress
Jira admin
Program Increment
Change Management
Product Ownership
Large Scale Scrum
Agile Contracts Best Practices
RSA
ScrumMaster Tales
AgileSparks
Presentation
SAFe DevOps
Kaizen Workshop
Confluence
Continuous Improvement
Planning
chatgpt
ALM Tools
Nexus
POPM
Tools
Nexus and Kanban
Lean Startup
Principles of Lean-Agile Leadership
Advanced Roadmaps
Agile
Games and Exercises
Enterprise DevOps
Lean-Agile Software Development
Retrospectives
Kanban Basics
Agile Assembly Architecture
RTE
Scrum.org
Code
Agile Outsourcing
Reading List
Agile Program
ATDD vs. BDD
Sprint Retrospectives
Introduction to ATDD
DevOps
Agile Community
speed @ scale
Built-In Quality
Kaizen
Implementation of Lean and Agile
Lean and Agile Techniques
Scrum Guide
Rapid RTC
Lean Budgeting
Agile Israel Events
Lean Agile Management
AI Artificial Intelligence
Entrepreneurial Operating System®
Story Slicing
Value Streams
Kanban
Scrum and XP
System Archetypes
ROI
Agile Release Management
Agile Games
Amdocs
Scrum Master
Continuous Delivery
WIP
Scrum
ART Success
System Integration Environments
Kanban Kickstart Example
Nexus vs SAFe
Business Agility
Jira Plans
PI Objectives
Hybrid Work
Elastic Leadership
ARTs
Lean Agile Leadership
Scrum With Kanban
Risk-aware Product Development
Agile Techniques
Achieve Business Agility
Agile Risk Management
predictability
Agile Development
The Agile Coach
Rovo
Legacy Enterprise
Agile India
PI Planning
LeSS
Agile Project Management
Lean Agile Basics
Lean Agile
RTE Role
Software Development
Accelerate Value Delivery At Scale
Artificial Intelligence
Agile Project
Certified SAFe
Scrum Master Role
agileisrael
Development Value Streams
ATDD
Keith Sawyer
Frameworks
Kanban 101
Agile for Embedded Systems
Effective Agile Retrospectives
Implementing SAFe
LPM
Agile Product Development
Lean Software Development
Scrum Primer
Slides
Webinar
Lean-Agile Budgeting
Team Flow
Kanban Game
Sprint Iteration
Scaled Agile Framework
Jira
transformation
Perfection Game
Release Train Engineer
Agile Testing Practices
Product Management
speed at scale
Iterative Incremental Development
Jira Cloud
Lean and Agile Principles and Practices
Agile Release Planning
Lean Risk Management
Daily Scrum
EOS®
Agile Games and Exercises
Video
Introduction to Test Driven Development
Agile in the Enterprise
Process Improvement
Scrum Values
Nexus and SAFe
Agile Delivery
TDD
Managing Risk on Agile Projects
Tips
Software Development Estimation
SA
Applying Agile Methodology
Portfolio for Jira
A Kanban System for Software Engineering
Nexus Integration Team
Atlassian
NIT
Professional Scrum Master
Risk Management in Kanban
AgileSparks
Logo
Enable registration in settings - general

Contact Us

Request for additional information and prices

AgileSparks Newsletter

Subscribe to our newsletter, and stay updated on the latest Agile news and events

This website uses Cookies to provide a better experience
Shopping cart