By: Benjamin Yaroch
At the start of each New Year, some people like to make resolutions or set goals for themselves. While I am not one for resolutions, I do want reflect on this past year and discuss the year ahead in regards to software testing. Overall, I am encouraged by the progress software testing has made over the last year. As I look forward into this next year, I am hopeful about the advancement we can make in our industry. With that said, there are some things I think we testers need to do over the next year, and beyond, to ensure our craft’s continued progress and success.
We need to increase awareness about the value and complexity of software testing. Software testing is a highly intellectual scientific practice that requires an enormous amount of skill and knowledge. Software testing that is done well is much more of an engineering challenge than creating it. While we testers may understand this, non-testers often see what we do as unskilled, administrative, and confirmatory. To clear up this misconception we need to openly and frequently discuss the skills required to perform software testing. We need to highlight the complexities of our craft, and the enormous amount of knowledge required to do what we do well. By talking openly about these things, we can be recognized not as unskilled workers but as engineers. We also need to highlight the value we add to the projects and products that we work on. We need our project teams to understand how critical the information we provide is to the project’s success. Further, management needs to know that software testing not only improves the bottom line but also leads to better products, and happier customers. We testers need to demonstrate our worth and speak in terms that those around us can understand and get behind. Complexity, skill, knowledge, cost savings, better products, happier customers and project success are concepts and terms that most people in your organization can support and understand but you need to be actively using them.
We testers need to not fall prey to the allure or appeal of best practices. In computer engineering and computer science there are no one size fits all solutions or approaches. We need to realize that if there were one best way to test there would only be one authoritative best practice, the last time I checked there were numerous competing best practices. We cannot loss sight of the fact that an excellent practice in one context can be a terrible practice in another. We need to understand and embrace the uniqueness of our context and realize that what might work well on one project might not work at all on another. Further, what might be a great test today may not be worth the time to execute tomorrow. Engineering is about making choices based on the needs of a project not just applying paint-by-numbers approaches or methods. There are multiple ways to accomplish a given testing mission and it is our job to find the right one. To this end, we must be resourceful, thoughtful, flexible, and inquisitive as we test. We must remain focused on the needs and mission we have been given and be willing to adjust as the project evolves which can mean changing or abandoning the current approach to find the right one when things do not go as we expect. Only through thoughtful, context-driven testing, can we truly be assets to our project teams and successfully fulfill our testing missions.
We also need to continually educate ourselves and be willing to teach others what we have learned. As testers, we need to be knowledgeable and stay current with test methods, techniques, and trends in our industry. There are countless ways to educate yourself: read a book on testing, follow some of the numerous testing blogs, follow some testers you respect on twitter, become active in a professional association, attend a conference, or consider taking a comprehensive software testing course (AST offers many of these things). By educating ourselves we can apply this new knowledge and awareness to improve our day to day testing. As we gain knowledge about different methods and techniques, we can better assess whether one approach is applicable over another in our current context. Beyond education, we need to not fear making mistakes and embrace uncertainty. As testers, we need to remember that mistakes and uncertainty are important parts of testing because they provide a critical pathway to learning – which happens to be the ultimate purpose of testing. We often learn more from our mistakes than from our successes. In fact, some of the most successful testing I have done had mistakes; these mistakes have exposed interesting bugs that sent me in a different testing direction. The key is to acknowledge and learn from mistakes, remain confident during times of uncertainty, and use these opportunities as an educational tool not an obstacle. While individual learning is important, we also need to be educating one another. Take time to share your successes and failures with other testers. Pass along techniques and methods that you have learned and describe how they worked in your context and domain. Each of us needs to be a good steward of our craft by sharing what you have learned with one another so we can all become better at what we do. Above all, remember that even the most knowledgeable and expert testers remain students of the craft for their entire career.
In the coming year, each of us needs to play an active role in shaping and improving software testing not only in our own organizations but also industry wide. We need to continue to highlight testing as a challenging intellectual discipline that adds value to an organization. We need to understand the importance of our role in projects and vocalize it to management and project teams. We need to use testing approaches and methods; not because we are told it is the right thing to do but because it really is the right thing to do in our unique context. When we are testing, we need to be thoughtful and remain cognizant of what it is we are testing and why we are testing it. We must always be learning, confident during uncertainty, and allow ourselves the freedom to fail. We should be sharing our testing successes and failures, both privately and publicly so others can participate, learn, and grow in the craft. Above all, we need to remember that change starts where we work and then filters out into the industry. Software testing cannot continue to progress if change is not occurring in our organizations each day. As a software tester, I accept this as a challenge for the road ahead, do you?
About the Author
Benjamin Yaroch is a Lead tester at CareFusion in their NeuroCare division. The NeuroCare division develops both neruodiagnostic and electrodiagnostic software and hardware. Over the last two years, Benjamin has successfully integrated Session-Based Exploratory testing into the neurodiagnostic product line. Benjamin currently sits on the AST Board as an executive director and views software testing as a skilled context-driven craft and his chosen career.