Chapter 22. Your Career as a Software Tester

IN THIS CHAPTER

  • Your Job as a Software Tester

  • Finding a Software Testing Position

  • Gaining Hands-On Experience

  • Formal Training Opportunities

  • Websites

  • Professional Organizations Dedicated to Software or Software Quality

  • Further Reading

You're now down to the final chapter of software testing. Well, okay, maybe the final chapter of the book Software Testing, but definitely not of the job. Your work in that area has only just begun.

You probably began reading this book with little knowledge of what software testing is all about. You've likely experienced the minor little annoyances and the occasional crashes of the software you use on your computer at home or at work. You've seen and heard news stories of major software bugs and you know why and how hackers can break into the PC sitting on your desk.

Hopefully you've now been enlightened and understand why these bugs can still happen despite the best efforts of the people behind the software. You've learned about the test planning process, where to look for bugs, and how to report them. You now understand the difficult decision-making process that's involved in determining which bugs to fix and which ones to defer, and you've seen the graphs that show a product that's ready to release and one that still has a long way to go.

Above all else, you should now understand that software testing is a complex and difficult job. To be successful at it requires discipline, training, and experience. Simply sitting down, pounding the keys, and shouting over the wall to the programmer when you see something odd won't cut it. Software is too important. Businesses have failed, careers have been ruined, and people have died because of software bugs. Your job as a software tester is to find those bugs, efficiently and professionally, before they make it out the door.

This final chapter will give you pointers to more information about software testing, explain a few of the possible career options, and leave you with an important message about software quality. Highlights of this chapter include

  • The career path options available for software testers

  • Where to look for a testing job

  • How to get more hands-on experience at finding bugs

  • Where to learn more about software testing

  • The Computer User's Bill of Rights

Your Job as a Software Tester

One serious misconception about software testing is that it's only an entry-level position in the software industry. This erroneous belief persists because of the ignorance of what software testing is and what it involves—mainly due to the number of companies still developing software without any real process. They don't yet know that they need software testers of all skill levels to create great software. But, as more emphasis is put on creating software of higher and higher quality, the value of software testing as a career is becoming understood.

Because of this increased awareness, the opportunities are there for the taking. Software testers with just a couple years of experience are highly sought after. Testers who can also program and perform white-box testing or develop automated tests are even more in demand. And, if you've been through a few product development cycles and can lead a small team of other testers, you're in a highly marketable position. It's truly a job-hunter's market for software testers.

Here's a breakout of various software testing positions and their descriptions. Keep in mind, as you learned in Chapter 21, “Software Quality Assurance,” the names vary and may not mean exactly what the job really is, but ultimately most software testing jobs fall into these categories

  • Software Test Technician. This is often a true entry-level test position. You would be responsible for setting up test hardware and software configurations, running simple test scripts or test automation, and possibly working with beta sites to isolate and reproduce bugs. Some work can become mundane and repetitive, but being a test technician is a good way to become introduced to software testing. After learning the fundamentals you can decide if software testing is for you.

  • Software Tester or Software Test Engineer. Most companies have several levels of software testers based on experience and expertise. An entry-level tester may perform the duties of technician, working his way up to running more advanced and complex tests. As you progress, you'll write your own test cases and test procedures and might attend design and specification reviews. You'll perform testing and isolate, reproduce, and report the bugs you find. If you have basic programming abilities, you'll write simple test automation or testing tools and work with the programmers if you perform white-box testing.

  • Software Test Toolsmith or Software Development Engineer in Test. If you excel in programming but still have a love for testing, concentrating your efforts at developing test tools or performing white-box testing may be a good position for you. As a Toolsmith you'll create many of the custom tools discussed in Chapter 15, “Automated Testing and Test Tools,”—following, of course, all the good programming practices that you demand from your team's programmers. You'll also evaluate and support the commercial and open-source test tools that your team uses. If you're a Software Development Engineer in Test you may spend much of your time performing white-box testing and working more closely with the programmers than you would as a Test Engineer.

  • Software Test Lead. A Test Lead is responsible for the testing of a major portion of a software project or sometimes an entire small project. They often generate the test plan for their areas and oversee the testing performed by other testers. They're frequently involved in collecting metrics for their products and presenting them to management. They usually also perform the duties of a Software Tester.

  • Software Test Manager. A Test Manager oversees the testing for an entire project or multiple projects. The Test Leads report to them. They work with the project managers and development managers to set schedules, priorities, and goals. They're responsible for providing the appropriate testing resources—people, equipment, space, and so on—for their projects. They set the tone and strategy for the testing their teams perform.

Finding a Software Testing Position

So where do you look for a software testing job? The answer is the same places you would look for a programming job—with any business or company that develops software.

  • Use the Internet. A quick search done using several job search engines just before this book went to print found hundreds of open software testing positions at companies all around the country. Many of these positions were for entry-level testers. There were jobs testing music software, interactive TV, networking, medical equipment, websites, and more. You name it.

  • Look through newspapers and magazines. As with the Internet, most large city newspapers list numerous software testing jobs every weekend in their high-tech or computer help wanted ads. Computing and programming magazines are also a good source for job ads.

  • Simply call and ask. Do you like a certain technology or a specific software application, or are you interested in a particular area of computing? Look up the company or companies writing that software, give them a call or send them your résumé. Often there are open software testing jobs that never make it to the help wanted ads. Resourceful testers grab them before anyone knows they're available.

  • Look into internships and co-ops. If you're in college, take a summer or a semester as an intern or co-op at a software company as a software tester. Most provide great positions where you'll actually be contributing to the success of a real product as you gain experience in the field. If you work hard, you might be offered a full-time position after you graduate.

  • Professional networking. A sizable percentage of job offers come from word of mouth and personal referrals for jobs that aren't publicly advertised. Ask your coworkers, friends, and relatives. Usually someone you know has connections to a company that is hiring.

  • Take temporary jobs. Many software companies hire software testers under temporary contracts to help run test scripts as a product nears completion. The jobs may last just one month or several months, but you'll gain valuable experience and can take on more difficult jobs each time, learning as you go. Some software testers love to work this way because it gives them the opportunity to work at different companies and try their hand testing very different software.

Gaining Hands-On Experience

Software testing is just like most other computer topics—you can read about it all day, but until you actually try the things you've read about, it's difficult to comprehend. For this reason, one of the best ways to learn software testing is to try it yourself, on your own computer with your own software.

Choose a program you're familiar with and enjoy using or one that you've never used before. Read the manual and the help files as though they were the product specification. Put together a test plan, design the test cases, and look for bugs. Use a spreadsheet or word processor to log them and report what you find to the software company that wrote the application (almost all software companies have a means for reporting problems, usually through their websites). You'll be surprised what you find, and maybe the company will, too.

With a little experience at this type of testing, you could sign up to be a beta tester for new software products. As you learned in Chapter 16, “Bug Bashes and Beta Testing,” beta testers receive copies of the software before the general public does. You'll have an opportunity to see and use software that's not quite finished, find bugs that were missed by the company's internal software testers, and, based on what you find, possibly have an impact on the product's design. Every software company has its own system for administering beta tests. Search their websites for “beta tester” or call them and ask to talk with someone about becoming a beta tester. You won't make a career out of beta testing but you can learn a great deal.

NOTE

Be careful if you use beta software on your home or work PC. By its nature, beta software isn't ready for public release and is full of bugs. Some of those bugs can cause serious problems with your computer and existing software, including frequent crashes and loss of data. Make backups of anything important before you run beta software.

Becoming a usability test subject (see Chapter 11, “Usability Testing”) is another way to gain some hands-on experience at software testing. Most large software companies making personal computer software have usability labs or contract out to independent usability labs in their area. If you're interested in testing user interfaces, make some phone calls and inquire about becoming a subject for software usability testing. Often you'll be asked to fill out a form to measure your experience and familiarity with certain types of software. As projects go to usability testing, your profile will be reviewed to see if you're the type of person they're looking for; depending on the product being tested, they may need absolute beginners all the way to experts. If you're a match, you'll be called in to try out features in a new product or even a prototype of a new product. The people administering the test will watch what you do, record your actions, and observe how you react to the software. They may invite you back to try out changes they make based on your findings and you'll often be compensated for your time—usually with free software.

You can also find bugs for cash by becoming a bug bounty hunter. The Mozilla Foundation, the support organization for the Mozilla open-source software project, has a security bug bounty program. If you find a valid critical security bug in the Mozilla Suite, Firefox browser, or Thunderbird email client, they will pay you $500 cash and give you a Mozilla T-shirt. This would be a great way to hone your testing skills and make yourself known in the software testing community. You can find more details about their program at www.mozilla.org/security/bug-bounty.html.

A good starting point for learning about open source testing and testing tools is www.opensourcetesting.org. Here you'll find numerous tools, news, and articles related to open source testing as well as links to other open source testing sites. You won't get paid a bounty, but gaining hands-on experience with tools being used by your peers and being able to network with others using them would be invaluable.

Formal Training Opportunities

With the realization that software testing is an important field of study, many colleges and universities have begun to offer classes on the subject. If you're currently in an engineering or computer degree program, it would be well worth your time to enroll in one of these classes. Even if your plans are to become a programmer or engineer, gaining a better knowledge of software testing can help you perform your job even better.

Many community and technical colleges are now offering day and evening classes on software testing and the use of popular software testing tools. Some even award associate degrees and certificates in software testing.

Another option for training is to attend professional software testing conferences. Held throughout the year and in various parts of the United States and even the world, these conferences provide an opportunity for you to hear speakers from across the testing industry. Class material spans the entire range from very basic to very advanced and technical. The best part of these conferences is having the opportunity to meet and talk with fellow software testers, sharing ideas, war stories, and solutions. The following list represents some of the more popular conferences, but definitely not all of them. Presence or absence doesn't reflect an endorsement or an opinion.

  • International Software Testing Conference (ISTC), sponsored by the Quality Assurance Institute (www.qaiusa.com). ISTC is a weeklong conference featuring expert speakers from across the software testing and quality assurance industry. Topics range from basic software testing to test automation to testing specific new technologies.

  • Software Testing Analysis & Review (STAR), sponsored by Software Quality Engineering (www.sqe.com). The STAR conferences are focused exclusively on software testing and software engineering. They provide classes, tutorials, and discussions by software testing experts and hold an exposition where test tool, technology, and service companies demonstrate their products.

  • International Conference on Software Quality (ICSQ), sponsored by the Software Division of the American Society for Quality (www.icsq.org). ICSQ, like the other conferences, provides an opportunity to share testing ideas and methods with other software testing and quality assurance professionals.

  • International Conference on Software Testing (ICSTEST), sponsored by Software Quality Systems (www.icstest.com). ICSTEST is an international testing conference held in Germany. It's a forum for presentations, tutorials, discussions, and exchange of experiences on software testing.

  • The World Conference for Software Quality (WCSQ), sponsored by the International Software Quality Institute (ISQI) (www.isqi.org), brings together the leading experts in academia and industry to share ideas, insights, experiences, and advances in software quality, software process improvement, and software development methods.

Websites

The Internet has a wealth of material on software testing. You could always do a search for “software testing” or “software test,” but here's a list of popular websites dedicated to software testing and software bugs that will get you started:

  • BugNet (www.bugnet.com) publicizes bugs found in commercial software and points you to the appropriate fixes.

  • Software Testing Hotlist (www.io.com/~wazmo/qa) lists dozens of pointers to software testing–related websites and articles.

  • Software Testing Online Resources (www.mtsu.edu/~storm) is the self-proclaimed “nexus of Software Testing Online Resources…designed to be a 'first-stop' on the Web for software testing researchers and practitioners.”

  • QA Forums (www.qaforums.com) provide ongoing discussions of software testing, automated testing, test management, test tools, and many other topics.

  • Sticky Minds (www.stickyminds.com) is the online version of the Better Software magazine. Its tagline is “brain food for building better software.”

  • Security Focus (www.securityfocus.com) touts itself as “the most comprehensive and trusted source of security information on the Internet. SecurityFocus is a vendor-neutral site that provides objective, timely and comprehensive security information to all members of the security community, from end users, security hobbyists and network administrators to security consultants, IT Managers, CIOs and CSOs.”

  • The newsgroup comp.software.testing and its FAQ (frequently asked questions) document at www.faqs.org/faqs/software-eng/testing-faq provide lots of ongoing discussions by testers and test managers regarding tools, techniques, and projects.

  • The newsgroup comp.risks describes and analyzes recent software failures.

Professional Organizations Dedicated to Software or Software Quality

Several professional nonprofit organizations are dedicated to software, software testing, and software quality assurance that may be of interest to you. Their websites provide details on their specific area of coverage:

  • The Association for Software Testing (AST) at www.associationforsoftwaretesting.org is a nonprofit professional service organization dedicated to advancing the understanding and practice of software testing. They hold an annual conference and frequent workshops. Their archives make available a wealth of software testing information—emphasizing practice over theory.

  • The American Society for Quality (ASQ) at www.asq.org publishes journals and articles on quality and administers the Certified Quality Engineer (CQE) and the Certified Software Quality Engineer (CSQE) designation.

  • The Association of Computing Machinery (ACM) at www.acm.org and its Special Interest Group on Software Engineering (SIGSOFT) at www.acm.org/sigsoft has more than 80,000 members in educational and scientific computing.

  • The Society for Software Quality (SSQ) at www.ssq.org lists its vision as “To be recognized as the Society for those interested in promoting 'quality' as a universal goal for software.”

Further Reading

Numerous books are available on the topics of software testing and software quality assurance. Each has its own audience and approach but there are several targeted at the novice tester. Now that you've learned the basics of software testing, reading from the following list would be a good next step.

  • Lessons Learned in Software Testing; Kaner, Bach, and Pettichord; Wiley Publishing. This book contains 293 lessons that were learned, often the hard way, by the authors throughout their careers. Many of the realities of software testing that you discovered in this book are exemplified by real-world scenarios.

  • Surviving the Top Ten Challenges of Software Testing: A People-Oriented Approach; Perry and Rice; Dorset House. With such topics as “Testing What's Thrown Over the Wall” and “Hitting a Moving Target,” this book explains how to handle the tough, but everyday, situations you'll encounter as a software tester.

  • A Practitioner's Guide to Software Test Design; Lee Copeland; Artech House Publishers. This text is an excellent next step in your training. Black-box and white-box techniques are covered in detail along with boundary testing and equivalence classes. The many practical examples make this book an invaluable addition to your collection.

  • How to Break Software Security; Whittaker and Thompson; Addison Wesley. This book is a great read if you're suddenly assigned to look for security vulnerabilities in the software you're testing. Dr. Whittaker is a professor at Florida Tech and an expert in test automation. Also check out his earlier book, How to Break Software: A Practical Guide to Testing.

The following Sams Publishing titles are a sampling of some books that you might want to review to improve your understanding of computers and programming. These books were specifically chosen to get you up to speed quickly and easily and are very appropriate reading for the novice software tester.

  • Sams Teach Yourself Beginning Programming in 24 Hours is a great introduction to the basics of programming. You won't become a white-box tester just by reading this book, but you will gain a better insight into how software is written—which will help you design better test cases.

  • Sams Teach Yourself HTML in 24 Hours, Sams Teach Yourself Visual Basic in 24 Hours, Sams Teach Yourself Java in 24 Hours, and Sams Teach Yourself C++ in 24 Hours are a good next step once you've mastered the basics of programming.

  • If your goal is to be a serious white-box tester, Sams Teach Yourself Visual Basic in 21 Days, Sams Teach Yourself Java in 21 Days, Sams Teach Yourself C in 21 Days, and Sams Teach Yourself C++ in 21 Days will teach you the details of programming in specific languages.

  • Sams Teach Yourself Upgrading and Fixing PCs in 24 Hours will teach you the basics of adding new hardware and peripherals to your PC—a very important topic for a software tester, especially if you're interested in configuration testing.

  • Internationalization with Visual Basic explains how to create a VB application that will be accepted in the international marketplace.

NOTE

To keep up with the latest in programming titles, regularly check out Sams Publishing's website at www.samspublishing.com.

Summary

It seems appropriate to close out this book with a mantra that sums up what you should hope to achieve through your work as a software tester. Frequently throughout this book, qualifiers such as “depending on your company or your project team” and “based on your industry” were used when describing development processes, testing techniques, and quality levels. The use of such qualifiers makes it impossible to universally define a common goal for software quality. The qualifiers are necessary, though, because unfortunately, at least so far, the definition of software quality “depends.”

In 1998, Dr. Clare-Marie Karat, a psychologist and user interface designer at IBM's Thomas J. Watson Research Center in Hawthorne, NY, proposed a computer user's bill of rights. This bill of rights sets a minimum quality bar, a minimum set of expectations that computer users should have the rights to with the software they use. The computer industry has a long way to go to achieve this level of quality, but with your work as a software tester, you can help to make it a reality.

The Computer User's Bill of Rights (reprinted with Dr. Karat's permission):

  1. Perspective. The user is always right. If there's a problem with the use of the system, the system is the problem, not the user.

  2. Installation. The user has the right to easily install and uninstall software and hardware systems without negative consequences.

  3. Compliance. The user has the right to a system that performs exactly as promised.

  4. Instruction. The user has the right to easy-to-use instructions (user guides, online or contextual help, error messages) for understanding and utilizing a system to achieve desired goals and recover efficiently and gracefully from problem situations.

  5. Control. The user has the right to be in control of the system and to be able to get the system to respond to a request for attention.

  6. Feedback. The user has the right to a system that provides clear, understandable, and accurate information regarding the task it's performing and the progress toward completion.

  7. Dependencies. The user has the right to be clearly informed about all systems requirements for successfully using software or hardware.

  8. Scope. The user has the right to know the limits of the system's capabilities.

  9. Assistance. The user has the right to communicate with the technology provider and receive a thoughtful and helpful response when raising concerns.

  10. Usability. The user should be the master of software and hardware technology, not vice-versa. Products should be natural and intuitive to use.

Quiz

These quiz questions are provided for your further understanding. See Appendix A, “Answers to Quiz Questions,” for the answers—but don't peek!

1:

When looking for a software testing position on the Internet, what keywords should you use in your search?

2:

Name three ways that you can become involved in testing computer software before it is released to the public.

3:

What's the goal of a software tester?

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.116.62.168