I would like to give a brief introduction to testing as I see it in the first post. I know that when I say to people I do software testing, the first thing that comes to their mind is one of these two:
- How boring, pressing buttons all day.
- How cool, being able to test computer games all day and play non stop!
Neither of those views is completely accurate and the job is sometimes boring and sometimes very cool. You need to be able to do coding, to understand how software is created, designed, submitted and released, and most importantly, you need to be able to distinguish between correct behaviour and incorrect behaviour.
My main duty as a QA Engineer is to help ship a product that is better than if I weren't there doing my job. Products always ship with defects/bugs on them, they key point is not necessarily to fix them all, but to make sure as little as possible escape the testing and go out undiscovered. The ones that threaten security, data integrity or main functionality need to be fixed before releasing, the minor ones are not as critical. It is QA's responsibility as well helping put in place the right controls to avoid introducing those problems in the first place.
The earlier you find a bug (i.e. by writing properly a requirement or a design document, or discovering it before the code is submitted) the cheaper it is to fix.