Coming soon: Effective testing series
I am working on a series of articles about the testing side of software engineering. The goal is to provide a set of practical and comprehensive guides on software testing with focus on automation
I initially started this effort as a book but gave myself less than a 20% chance of publishing it. But then, one wise person suggested splitting it into articles and posting it as I write. I intentionally keep mentioning the “book“ in the text since every piece in the series is a chapter from my book. So you can see it as reading the book one chapter at a time.
I will not publish chapters/articles in the order they are in the book. The reason is that book is intended to be looked at holistically or use each chapter individually to address a specific problem. Since I start from the high-level motivation and terminology, this might be less appealing to the audience than more hands-on, day-to-day problems. So it boils down to getting traction with you, the readers.
Also, I am only starting and focusing on the content more than appearance so imagine fancy professionally made logo and banners, I will get there at some point too :)
I am looking forward to your comments and opinions.
About this book series
I have played different roles in my software engineering career: QA engineer, test automation engineer, scrum master, dev ops engineer, team lead, software engineer, and tech lead. One common theme haunts me: a ubiquitous ignorance of testing and quality in general. I don’t think that people do not care, but rather, the subject doesn’t feel exciting or important enough compared to other aspects of software manufacturing. It is always “We do not have time for this now,” “We need to build product/functionality first,” and “Beggars cannot be choosers.” And I am not even talking about a deep understanding of quality throughout an organization; I am talking about having a common vocabulary. Honestly, I have heard almost as many definitions of “Functional testing” as people I have worked with.
This situation is no surprise and by no means a fault of those people. I think a lack of focus on quality in educational institutions leaks into the industry. The latter is happy to oblige with a “start-up” culture of seemingly “throwaway” prototypes that are never actually thrown away but are running in production. The saddest part is that ignorance of testing does not let you move faster even in the short-term, forget about the long-term.
But, in my experience, time and again, when faced with a clear and systematic testing approach, even the most adamant skeptics jumped on the “testing train.” It doesn’t take much, just seeing a real-live product developed using test automation for functional and performance testing. I underscore “just” since it takes someone with enough knowledge and perseverance to introduce the change. My hope with this book series is to provide a clear and approachable toolset that people at all levels can reach to solve their issues and serve as a complete manual that you can read from the beginning to the end.
Who is this book series for
I have written this book series for a software craftsman; whether you are a software engineer, test automation engineer, infrastructure engineer, engineering manager, or product manager, there is something for everyone.
Hands-on engineers can find practical guides and solutions for their particular problems or use the book series as a comprehensive guide on automation of functional testing, including working with requirements and creating a sustainable specification.
(there is some more staff here about each chapter that does not translate well into this format, so I spare you the rest.)
Contents (under construction)
I will be updating this post with links to articles as I write them. Here is the initial intent for content ¯\_(ツ)_/¯:
Part 1: The Fundamentals
Testing classification
Why testing
Computer science
Theoretical vs. practical science
Requirements
Executable documentation (always up-to-date documentation)
Code structure and echo of TDD
The three questions (Why? What? How?)
Part 2: Three layers of testing
Automated Functional Unit testing
Automated Functional Integration testing
Automated Functional System testing
Part 3: Common parts
Clean Tests
Keeping tests focused
Test Data
Maintenance and longevity
Summary
Tooling
Process of writing tests - how you go about writing tests from beginning to the end
Estimations
Part 4: Adoption
Pragmatism and reality
“Greenfield” project
Existing system
Continuous delivery and Continous testing
Advice on cultural change
This is The Effective Software Engineer, a newsletter about In-depth practical guides on all things software engineering.