Getting started with API’s (part 1)

Application programming interfaces (API’s) are the technical standards different software components use to interact with each other. This spans different libraries communicating with each other within the same piece of software (for example a language API specification), to remote API’s where the communication is over a network in a different…

GWT syntax and BDD

Given Something needs testingWhen Someone suggests using BDD/Cucumber/SpecFlowThen Some other people get really vocal – why? The test community seems to have a love hate relationship with BDD, but what actually is it, and how can it be used effectively? In software engineering, behaviour-driven development (BDD) is an Agile software…

All Pairs Testing

All pairs testing is a combinatorial technique to achieve adequate test coverage where testing all possible combinations would be resource intensive and the risk of less than complete testing is acceptable. The fundamental concept is that you test pairs of variables, rather than all possible combinations to achieve good statistical…

Decision Tables & State Transitions

Continuing on from the previous post, some additional specification based test techniques. Decision tables testing Decision table testing can be applied to test the behaviour of logical conditions found within the specification. The decision table lists all possible inputs and all the corresponding outputs. Each column in the table corresponds…

The coaching mindset

When it comes to development conversations most people think of having an experienced person in your field as a source of advice, giving suggestions on areas of focus, directing you to learning resources and providing an overall direction. This is more accurately described as mentoring and may happen either: Formally,…

Types of testing

As alluded to in “what is software testing”, there are many distinct types of testing. Using the agile testing quadrants diagram, we can visualise where and when these types of tests are applied: Q1 Unit tests cover the smallest ‘unit’ of software – individual methods or functions, and the development…

Testing in a team (then and now)

At the dawn of my testing career, before the widespread adoption of the internet and interconnected systems, the software project I first worked on was distributed as a boxed product (with a printed manual!), for installation on internal systems – connected to each other and perhaps some satellite offices, but…

Productive (remote) meetings

We’ve all been in unproductive meetings – an hour of your life where afterwards you’re not really sure what happened – some things were discussed, but nothing decided. Nobody got any followup actions. Some people stayed silent, others talked a lot but said little. Sadly, these are all too common…