I have been a professional software tester in various capacities since 2005. In my current role, I am a consulting software tester and writer working with Excelon Development. Outside of work, I am currently serving on the Association For Software Testing Board of Directors as VP of Education helping to facilitate and develop projects like BBST and WHOSE. I am also a student in the Miagi-Do school of software testing, and facilitate sessions for Weekend Testing Americas.
I am deeply interested in software testing and delivery, and also helping organizations fix problems in measurement and metrics programs.
There's a recent trend in having generalists on the software team—there are no developers or testers, only "team members." The idea of the two roles learning from each other is a good one, but it's usually a one-way street: Testers learn to write production code or test tooling, but no one focuses on deep testing.
We use test design techniques to answer the questions “What do I need to test?” and “What tests should I perform?” We try to ensure test coverage during test automation too, except that choosing poorly creates slower builds and unreliable information about product quality. Here are some guidelines for test selection.
Pair programming generally involves two programmers working on a single change from start to finish. You can augment this pattern by adding a test specialist, so you can test-drive feature changes first and the tester can ask questions and guide test and code design. What you get is quality built in from the start.
The idea of working as a test specialist on a team using DevOps can be intimidating. There are at least two technology stacks, containerization and continuous integration, that you need to be familiar with. But few people need to be able to start from scratch. Here's what a normal day of testing in DevOps looks like.
If a development team does pair programming, where does testing fit in? You don't have to wait until the programming is done—testers can be part of the whole process, from code design to reviewing changes to production. Pair programming plus a good automation strategy mean quality is built in throughout development.
Many testers want to learn a programming language, but how should they decide which one? Justin Rohrman suggests finding an authentic problem to solve and moving from there to determine which language would be best. You can also ask developer coworkers for suggestions and help—take advantage of available resources.
Testers talking about test automation often mean browser automation. Developers are probably talking about unit testing or something at the service layer. And operations people are most likely thinking of monitoring and the guts that control continuous integration. But the practices are more important than terminology.