Search
Close this search box.
Search
Close this search box.
Search
Close this search box.

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:

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