Bill Hodghead

16th Jan 2017

Setting up SonarQube in AWS for code analysis of your GitHub repos

In looking around the web, I don’t see much on how to get SonarQube working in AWS. This blog will cover how to setup SonarQube in AWS for simple code analytics. Background SonarQube is an excellent open source code analysis server that you host yourself. Code analysis and central reporting — measuring complexity, dependencies, coverage, … Continued

09th Aug 2017

How to improve your QA productivity

Help! My QA team can’t keep up with development! We hear a lot of variations on this cry for help: “QA is always falling behind.” “QA doesn’t have enough time for the full test passes.” “There isn’t enough time for automation or performance work.” Any of this sound familiar? There are many ways to improve … Continued

27th Sep 2017

How to use pairwise testing

This software requires too many tests! There are too many variations of your test suite to run them all! To test all combinations of the inputs for this function would take millions of tests! Do you have a problem like this? There’s help and it’s called pairwise testing. There’s been a lot written about the … Continued

12th Dec 2018

Less UI automation, more quality

Have you ever thought, “Creating and maintaining all this UI automation is taking a huge amount of my team’s time? I’ll bet we could do less of this and get higher quality!” If so, you wouldn’t be alone. I talked to six product teams that not only thought that, they did it. Here are the … Continued

26th May 2019

Techniques for automated regression testing

“Regression testing is doing the same thing over and over and expecting a different result.” This is a series articles on test automation techniques you can use for regression testing. The goals of the series are to: Help your productivity Improve your test coverage Minimize work These techniques are not tied to any tool. However, … Continued

27th May 2019

Data-driven testing

Data driven testing solves the problem: “I want to try a bunch of different test values, but I don’t want to write a different test for each one”. In data driven testing, you reuse the same test code with different values. Data-driven testing is so common and valuable that I’ve seen teams set up their … Continued

28th May 2019

Equivalence classes and boundary value analysis

Equivalence classes Equivalence classes are a set of input values that produce the same result. It’s important to know the equivalence classes for your system under test, because you can use equivalence classes to limit your test cases. Let’s look at an example. Let’s say you have a user interface that looks like this: Remember, … Continued

29th May 2019

Using a test oracle

Oracles solve “This thing needs more tests than I can list!” We use data-driven testing to reduce the number of tests into a few rows. What happens when the number of test rows get to be too many? Example: Let’s say we have a date control that is composed of three integer inputs: one for … Continued

29th Oct 2019

The test pyramid: A functional test automation strategy

In this blog series, I’ll show you a test strategy I’ve used with several different companies to achieve high quality and productivity. Test automation saves money, improves time to market and raises quality, but it’s also expensive. This test pyramid gives a guideline on how to allocate your efforts. I’ll give you the basic definitions, … Continued

05th Nov 2019

Structure of the test automation pyramid

This post is part of a series on functional testing using the test pyramid. I’ve been engaged by five different companies to help them create a quality strategy. For each company I’ve worked with, I used variations on the same strategy. To create this strategy, I took ideas from all over, but the core came … Continued

11th Nov 2019

Unit testing in the test pyramid

This post is part of a series on functional testing using the test pyramid. Purposes of unit testing Documentation: Defines the behavior of the code as a working specification that is kept up to date. Reduces the need for a development specification. Maintainability: By proving code is testable, it proves the code is maintainable forcing … Continued

20th Nov 2019

API / Component testing

This post is part of a series on functional testing using the test pyramid. API testing checks the external interface of one or more components, while component testing tests the functionality of a single component. From the point of view of the consumer, these are the same, so we group them together in the same … Continued

12th Dec 2019

Integration testing

This post is part of a series on functional testing using the test pyramid. Purposes Verifies that components or microservices within a service or sub-system talk to each other correctly. This is different from component or API testing. API testing covers the external interface and functionality of the sub-system, while integration testing covers communication between … Continued

16th Dec 2019

End-to-end testing

Also called “system” testing. This post is part of a series on functional testing using the test pyramid. Purposes Verifies the key customer experiences of the software. Who defines the test? Defined by product management (PM), often with contribution from quality engineers (QE). Who codes the test automation? System automation can be created by a … Continued

10th Jan 2020

In what order should functional test automation be implemented?

This post is part of a series on functional testing using the test pyramid. For new code New code has unit tests added as the code is created. If you are good, you write them before the code is created (TDD), but even if you don’t use TDD, get them done and merged into the … Continued

16th Sep 2021

Improving your root cause analysis

I’m often asked to help people improve the value of their root cause analysis (RCA). Here’s my most common advice. I include a RCA process to improve your software development and advice to make your analysis more effective. Summary When determining the problem, ask why until you hit a people issue. Ask what’s the earliest … Continued