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:

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