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:

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