Abstraction and Testing – UI Component Testing

Abstraction is one of the founding principles of software. In this post I describe UI component testing breaks through abstraction and causes fragile tests.

Interface and the sides

Abstraction and Testing – The Other Side

Abstraction is one of the founding principles of software. In this post I describe how interfaces are just one side of the problem in testing.

mocking and abstraction in testing

Abstraction and Testing – Mocks

Abstraction is one of the founding principles of software. In this post I describe how mocks break abstraction and its effect on testing.

Abstraction in testing

Abstraction and Testing – Intro

Abstraction is one of the founding principles of software. It allows us to simplify ideas, code and usage. It also impacts testing directly.

Where do bugs come from?

People ask me: Are we ever going to get rid of bugs? And I tell people: No. And then they pull out their machine guns and things get messy. But why is that? Are we really doomed for fighting bugs… Continue Reading…

TDD: Mind Your Language

One of the exercises I love to do in my TDD classes is to build a lightsaber in TDD. (Yes, of course that’s how they’re made). In the exercise, I go through listing all kinds of features and use cases,… Continue Reading…

Over Exposure and Privacy Issues

This conversation comes up in every training I do about testing. I know exactly when it will happen. I know what I’m going to say, what they will say, and I know no one comes out completely convinced. Then violence… Continue Reading…

Unit testing is part of the job

In one of my unit testing courses we had a disucssion I’ve been part of what feels like a million times. The question the team asked was: “How do you convince the client to pay for unit testing?” Because it adds… Continue Reading…

The Ugly Truth About Emergent Design

If the 2nd D in TDD is design, then we’re talking about emergent design. The tests drive the design, which emerges from thin air, and step by step reveals itself in all its glory. Emergent design has got to be… Continue Reading…

Testability != Good Design

It’s a funny thing, code testability. It’s not really defined, or rather, it is defined poorly. If “testable code” is “code we can test”, that means all code is like that. We can test it through unit tests. If it’s… Continue Reading…

Copyright Gil Zilberfeld, 2025