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:

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