# Model-Defined Interfaces

### A Pattern for Better, Safer, and More Explicit API

October 24, 2022

Most iOS architectural patterns rely on protocols to define what data and behaviors (i.e. interfaces) will be available to client code. This is a perfectly workable approach, but it adds quite a bit of overhead in terms of creating the protocol and multiple conforming types.

For example:

protocol AuthenticationProvider . . .

# Creating a Sustainable Software Cycle

### Breaking the perpetual deadlock of legacy code, lack of testing, and missing documentation

April 10, 2022

Having been an iOS developer at quite a few tech companies, from small to large, I’ve found that they all mostly share the same painful reality of software development:

• Lots of fragile legacy code that is risky to refactor or update because it is untested
• Tests can’t be written for legacy code because what it even . . .

# A Useful and Practical Approach to Testing

February 27, 2020

Having established what tests can actually be good for, outlined the only two types of test that matter and their value, and having attempted to make the case against a narrow fixation on “unit tests”, where does that leave us?

Well, it leaves us free to think about how we can write good tests that are useful and practical! And the . . .

# What About Unit Tests?

February 27, 2020

If you’ve been reading this Fresh Look at Testing series of blog posts, you may have noticed that there is little to no mention of unit tests. So what about unit tests? Unit tests are the most common and frequently discussed kind of tests in software development at large and seem to have the most support among developers. However, you won’t . . .

# The Two Kinds of Tests

February 27, 2020

One aspect of testing that gets fairly confusing is that there are many different kinds of tests discussed in various articles, and the exact difference between those tests is often a matter of debate. A partial list of some of the categories of tests you may have read about includes:

• Unit tests
• Integration tests
• . . .

# Testing and the Product Cycle

February 09, 2020

In response to my last post, I had a few insightful readers ask about various types of testing and if they went beyond the single purpose of confirming expected behaviors.

I also mentioned in the last post that human QA analysts are often able to effect quality in a way that automated tests currently do not, but that such an . . .

# What Is Testing For Anyway?

### The first part of a fresh look at testing

September 22, 2019

For something that is thought to be precise and unambiguous, the whole subject of software testing tends to be comically unclear. I’ve had a deep interest in the subject of automated testing for iOS for years now, and find that if you ask 3 people what the point of testing is, you’ll probably get a dozen different answers.

For . . .