Hey, it's summer time and i'm almost graduated.These days job interviews taking place in many companies here in Alexandria.As part of my preparations to these interviews i thought to share some information i know about Software Quality Assurance and Software Testing, hoping someone will find it useful for him/her.
Quality Assurance, Software Testing & Quality Engineer
Quality Assurance is now a must in any IT industry. Any company that needs to improve its reputation must preserve and perform quality assurance principles and methods.
Quality of a software ensures that the product perform the functions the user wants, providing usability of the product without much effort from the user. It also ensures that the product is efficient in terms of performance measures and is secure enough to keep the user’s data safe from any malicious attacks.
As quality assurance serves users, it also serves developers in maintaining the expandability of the product for further features to add. It helps in keeping the product maintainable and reusable for further development phases.
The major act in quality assurance is about Software Testing. It’s the process for ensuring the quality of our software through various and multiple methods which tends to detects defects and handle them in the suitable appropriate way. Software Testers tend to destroy their own product in order to discover known and hidden bugs in the product. Early detection of issues in the product serve to reduce the amount of time and work performed in fixing and reworking on the defected modules\units in the product.
Software Testing includes many phases of testing which start in parallel throughout the project since the beginning of the planning and passing by product design, implementation and release.
The Quality Engineer (QE) begins in formulating the testing plan after some requirements definition meetings with the customer and the Project Leader. The testing plan will serve as a guide for further testing phases.
In Developing phase, the QE starts writing the test cases that will be used in testing the project various phases. These test cases are based upon the specified project requirements.
Functional/Unit Testing is applied to check the inputs and outputs of each unit in the project are correct. The testing can be done either manually by the QE or automated by testing scripts and testing tools and programs.
Two forms of testing methods exist: White Box Testing and Black Box Testing.
Black Box Testing is testing the modules with no information about the internal architecture and building of the module. It’s simply monitoring the outputs of the modules to a certain specified inputs. If unexpected outputs occur, then some issues must be detected.
White Box Testing is opposing to the Black Box Testing where test cases are build upon the knowledge of the internal architecture and implementation of the module. Here it must be ensured that every statement is tested as untested statements can cause undetected issues.
Then a Smoke Test is applied to ensure that any further testing steps won’t be needless in case the system is really defecting. Smoke test is applied upon every build of the product.
In mean while, any bugs or defections found are being submitted to the bug tracking system (Bug Base) to pass them to the developers to fix. The Project leader views the issues and passes them to the developers for appropriate handling.
Once they are fixed, test cases are applied again to ensure that no other bugs have risen upon fixation.
When each module or part of the project is completed and tested successfully, an integration test is needed to ensure that no issues appear upon integration of the modules.
Another phase of testing is the System Testing, where test cases are applied for all aspects of the system to ensure that no issues appear and to ensure the usability of the product.
Performance Test is applied to check the product behavior and performance like CPU Usage, memory leakage, etc.. . Automated programs are used to measure the product performance and monitor the desired properties to check in product performance.
A Security Test is applied to ensure that are no issues causing serious security problems in the product. The product must be maintained secure from any form of malicious attacks or innocent attacks caused by uneducated users.
Stress Test is performed to ensure the capability of the system to perform under heavy loads of usage e.g.: A web service is tested to perform under usage of 100000 users logged in the same time.
Installation and Compatibility Test is applied to ensure the product won’t contain issues upon installation on a certain environment or operating system. The aim of this test is to ensure the portability of the product through various environments as needed as specified in the customer requirements.