Software Testing and Industry Needs
I’m in the process of ending my third and last internship for the bachelor’s degree. For the last few months, I had the privilege of working for a software quality engineering firm (software quality assurance, software quality control, software process improvement, training, etc.). I never thought I would enjoy learning so much from that field and have a keen passion for it all. Before starting my internship, I always thought that software testing was for developers who couldn’t keep up with the pace of development, or weren’t as technical as they should’ve been, therefore they had no choice to accept that position to pay their bills.
Man was I wrong. Very wrong. I realized that there is much more elements involved in testing, than just pressing a record/play button. In fact, there is a lot of human and technical abilities that must be taken into consideration when dealing with software testing. On the human side, there is
- Communication (been able to talk to other testers, developers, managers and clients)
- Leadership (have the ability or responsibility to drive your team members or colleagues to reach their goals)
- Confidence (in yourself, your education and your abilities as a tester)
- Courage (to step up and say the real facts of the situation, especially before delivery)
- Wisdom (learn from your mistakes and also from other people’s mistakes)
- Intelligence (software is complex enough to know this)
- Respect (for yourself and others in the team)
- Humility (it’s okay to say you were wrong. Show this, so that other team members can be this way too.)
On the technical side there is
- Software development lifecycle
- Project management
- Best practices and methodologies (Agile, UP, TDD, etc.)
- Standards and recommended guidelines
- Software development key areas (business processes analysis, requirements gathering and management, design and development, testing, configuration and management, build and deployment strategies, etc.)
I could go on and on, but I’d stop here, because this wasn’t my intent for this post.
Oh yeah, and for the first point, quality is a major activity in architecture and development, so there’s still work to do in that area.
Ok, my intent in this post was to invite you to read an interesting article that I’ve read this morning entitled "Software Testing and Industry Needs", published by the IEEE in August 2006. It basically talks about the state of the practice of software testing in the industry, from the viewpoints of five experts in the field :
If you are a Computer Science or Software Engineering student, or even a current practitioner, and you’re curious about the field of software testing, or maybe even thought about changing careers, I strongly suggest you to read this very interesting article. I’m including some of my favorite quotes in this article, to give you a more general idea of the each respondent’s viewpoint.
Robert L. Glass states that
I actually do believe that most software testing in industry effectively meets industry needs. I base my bias on the observation that this is the computing era - an era that wouldn’t be successful without successful software - and on my belief that software can’t be successful without effective testing.
Ross Collard says that
Effective testing is a quest and, like any quest, includes intellectual challenge, passionate debate, and the excitement of discovery. Rewards for the best 20 percent of testers typically include exponential career growth, substantial monetary compensation, and wide influence. There is plenty of room for more good testers.
Antonia Bertolino thinks that
…Testing impacts the whole life cycle, because any testing technique presupposes adequate preparation, modeling, and documentation.
James Bach believes that
Industry ultimately takes care of its own practices. Each company does what it believe will work. What we need to resist - and resist strongly - are efforts to take away each company’s right and responsibility to set practices for itself.
And finally, one of my favorites in the field, Cem Kaner tells us that
Most industrial projects have many stakeholders who have diverse interests and conflicting priorities. The purpose of testing during development is to help those stakeholders understand what they’re getting, in time to correct a weak programming practice or (re)negotiate the design.
Similar posts you might be interested in reading:
- Top Ten Myths about Software Engineering
- The Reason I Blog About Software Development
- Quality Assurance Is NOT About Testing
- What Test-Driven Development Has Taught Me So Far
- This Week’s Geek Links (May 16th, 2008)
- Promoting Professionalism Through A Common Body of Knowledge
- A Paper About Recommendations for Improving the ISO 14764 Standard