What is software quality assurance (QA) testing? In a nutshell, it's the process of finding problems in software. Why is it a big deal? Software is now in most everything and computers are everywhere - from homes to small businesses to large corporations and government institutions. Software also powers mission-critical applications like medical instruments, spacecraft, and nuclear power plants. And although software is getting somewhat easier for people to use, the software itself continues to get more complex. The operating system Microsoft Windows has over 100 million lines of programming source code. So finding these problems before the customer or computer user runs across them is not only important (from a business standpoint), but can save someone's life when used in a medical CAT scanner or an aircraft navigation system.
So why do this as a career? Some of the reasons for becoming a software QA testing professional are:
You get to work on cool computer software systems - from small business to large corporations.
It's fun to find problems in software - challenging like a puzzle
Good career: high paying ($$$) and always in demand
Flexible - Can work either as an employee or a contractor/consultant
What knowledge and skills are needed to get started? Really all that's needed to get started are basic computer skills: comfortable with an operating system such as MS Windows or Mac OSX; understand how to create, store, print, and manipulate files on the computer; and know what a browser, web-addresses, and the internet are.
There's also a personality side to folks that make good software QA testers - detail-oriented, skeptical, and must enjoy trying to find problems in software. You must be able to look at software and not only find what it should do - but what should it NOT do! Aircraft should not fly upside-down when they cross the equator (a true story from the early days of military aircraft) or hospital medical scanners should not fry patients with x-rays (another true story from the old days). Even a seemingly minor issue like a round-off error on a bank account software system can cost millions (another true story). But if you have basic computer skills, a personality for finding problems, and a desire to learn and advance your career - you can be very successful as a professional software QA tester.
So what's the difference between testing and QA? Read on...
Testing involves the actual process of finding problems (or defects as they are called) in the software itself. Typically, you write a test plan document describing the testing processes, activities, approach, resources, schedule, and overall plan that will be used during the testing process. Then a document is developed that describes the actual tests (test cases) that will be run - sometimes hundreds or even thousands of tests. Then you perform the testing by executing the tests that you and others have developed, report any defects (or bugs as they are called in the industry), and submit status reports describing your progress.
QA (Quality Assurance)
Finding and reporting defects is the main activity, but not the only activity. In a real software organization, there are many activities and processes that take place to get high-quality software products out the door. This "life-cycle" of software includes:
Development of market and/or user requirements (what is the software supposed to do? What problem does it need to solve?)
Design of the software (what features, functions, and architecture does it need to have to satisfy the requirements?)
Writing of the software programming code (there are many languages and software programming tools to choose from)
Testing of the software programming code (the focus of this course!)
Packaging, release, and deployment of the software product
Post-release customer/user support (need to fix any problems that a customer or user finds and re-release a new version of the software)
Although most of your time in a software organization will be spent on testing, professional software QA testers also participate in various activities throughout the entire life-cycle - to help ensure successful releases and high-quality products get into the customer's hands. You might review requirements documents for "testability" to make sure the software being proposed is easy to test (you won't be able to do your job very well if it's hard to test - right? You might review the design of the software for similar reasons. Making sure there is proper "change-control" is critical too - and many other activities.
Many software organizations have a software quality assurance group - or QA group staffed by software QA testers whose job it is to not only test the software, but assist with activities and processes throughout the software life-cycle. This is possibly the world's longest definition, but it's important to know the difference between QA and testing and how they relate to each other.
I hope this gives you a little idea about what is software testing and QA.