Articles on Testing

Agile on the Edge Colors
Alice Wenner

Alice Wenner

How To Build Products with Cutting-Edge Technology Using Agile Methodology

During her three years as a software engineer at Carbon Five, Rose Karr has had the opportunity to work on several projects that involve cutting-edge technology. She has found that while working with this kind of tech can be exciting, it also presents a unique set of challenges. In a recent talk, Karr discussed some

Andrew Hao

Andrew Hao

Lightweight Dependency Injection In Elixir (Without the Tears)

In our last Elixir blog post, “Functional Mocks with Mox in Elixir”, we discussed how testing across module boundaries could be made easier by creating a Behaviour for a collaborating module, then utilizing the wonderful framework Mox to substitute a lightweight mock module in tests. This approach is well and good when you have very concrete

Ken Shimizu

Ken Shimizu

Sharing and Testing Code in React with Higher Order Components

Higher Order Components (HoC) in React can be simple to use and test. If you haven’t read about HoC’s and how and why they’ve replaced mixins, check out this great Medium post by Dan Abramov. Most of the resources and examples that I found online about higher order components are complex, and don’t include a

Jonah Williams

Jonah Williams

Writing Reliable iOS Tests

Tests help me write better apps. Writing tests informs my interface designs, expresses some of my intentions, and guards against regressions. As applications grow so do the number of tests I’m running as a regular part of my development workflow. If I’m not careful those growing test suites can slow down, become inconsistent, and eventually

Jonah Williams

Jonah Williams

Writing Deterministic & Performant Specs with Capybara

Acceptance tests are a great tool for guiding [outside in testing] and defining application behavior. Unfortunately they are also notoriously slow and often brittle. At Carbon Five we usually use Capybara to drive our acceptance tests (either directly in RSpec feature specs or within Cucumber steps) so let’s explore some ways we might accidentally write

Test-Driven C
Jared Carroll

Jared Carroll

Test-Driven C with Ceedling

Recently, an Arduino project forced me to brush up on my C. Like many programmers of my generation, C was my first programming language; but it has been a while since I wrote anything in it. After a quick K&R refresher, I immediately began looking for a unit testing framework. I found several, but I

Jared Carroll

Jared Carroll

Asynchronous JavaScript Testing in Jasmine, Mocha, and Vows

The rise in popularity of JavaScript, especially on the server-side, has introduced more and more developers to asynchronous programming. Asynchronous, event-driven programming also requires a change in testing. In this post, we’ll look at how three popular JavaScript testing frameworks support testing asynchronous code.

Jonah Williams

Jonah Williams

iOS Integration Tests with Kiwi

I have been using Kiwi to run my iOS projects’ tests. Kiwi works great for defining BDD style unit tests which express the sort of nested assertions I like to write. Unit tests should test code in isolation so that they remain small, fast, and stable. So my unit tests mock or stub any network

Jonah Williams

Jonah Williams

Fixture data for iOS tests

I have talked about running xcode units tests from the command line before. When I’m running tests I often want to load some sort of test fixture data for use in my tests. For example: I might want to keep a file of recorded API responses so that I can stub out network calls. In

Jonah Williams

Jonah Williams

Debug logging with Xcode 4 breakpoints

NSLog calls do not belong in release builds. Logging is slow and the performance impact of log statements on a device can be considerable. Logging is also noisy, it can obscure useful debugging information and may leak information you would rather not expose in a release build. Looking at my device’s system log I see