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:

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