Software Quality Assurance and Testing STUDY NOTES

Size: px
Start display at page:

Download "Software Quality Assurance and Testing STUDY NOTES"

Transcription

1 Software Quality Assurance and Testing STUDY NOTES Unit 1. Introduction Software Testing Software testing is the process of evaluation a software item to detect differences between given input and expected output. Also to assess the feature of A software item. Testing assesses the quality of the product. Software testing is a process that should be done during the development process. In other words software testing is a verification and validation process. Verification Verification is the process to make sure the product satisfies the conditions imposed at the start of the development phase. In other words, to make sure the product behaves the way we want it to. Validation Validation is the process to make sure the product satisfies the specified requirements at the end of the development phase. In other words, to make sure the product is built as per customer requirements. Basics of software testing There are two basics of software testing: blackbox testing and whitebox testing. Blackbox Testing Black box testing is a testing technique that ignores the internal mechanism of the system and focuses on the output generated against any input and execution of the system. It is also called functional testing. Whitebox Testing White box testing is a testing technique that takes into account the internal mechanism of a system. It is also called structural testing and glass box testing. Black box testing is often used for validation and white box testing is often used for verification.

2 Types of testing There are many types of testing like Unit Testing Integration Testing Functional Testing System Testing Stress Testing Performance Testing Usability Testing Acceptance Testing Regression Testing Beta Testing Unit Testing Unit testing is the testing of an individual unit or group of related units. It falls under the class of white box testing. It is often done by the programmer to test that the unit he/she has implemented is producing expected output against given input. Integration Testing Integration testing is testing in which a group of components are combined to produce output. Also, the interaction between software and hardware is tested in integration testing if software and hardware components have any relation. It may fall under both white box testing and black box testing. Functional Testing Functional testing is the testing to ensure that the specified functionality required in the system requirements works. It falls under the class of black box testing. System Testing System testing is the testing to ensure that by putting the software in different environments (e.g., Operating Systems) it still works. System testing is done with full system implementation and environment. It falls under the class of black box testing. Stress Testing Stress testing is the testing to evaluate how system behaves under unfavorable conditions. Testing is conducted at beyond limits of the specifications. It falls under the class of black box testing. Performance Testing

3 Performance testing is the testing to assess the speed and effectiveness of the system and to make sure it is generating results within a specified time as in performance requirements. It falls under the class of black box testing. Usability Testing Usability testing is performed to the perspective of the client, to evaluate how the GUI is user-friendly? How easily can the client learn? After learning how to use, how proficiently can the client perform? How pleasing is it to use its design? This falls under the class of black box testing. Acceptance Testing Acceptance testing is often done by the customer to ensure that the delivered product meets the requirements and works as the customer expected. It falls under the class of black box testing. Regression Testing Regression testing is the testing after modification of a system, component, or a group of related units to ensure that the modification is working correctly and is not damaging or imposing other modules to produce unexpected results. It falls under the class of black box testing. Beta Testing Beta testing is the testing which is done by end users, a team outside development, or publicly releasing full pre-version of the product which is known as beta version. The aim of beta testing is to cover unexpected errors. It falls under the class of black box testing. Objectives of Software testing Major objectives for performing Software Testing are 1. To ensure that the solution meets the business and user requirements; 2. To catch errors that can be bugs or defects; 3. To determining user acceptability; 4. To ensuring that a system is ready for use; 5. To gaining confidence that it works; 6. Evaluating the capabilities of a system to show that a system performs as intended; 7. Verifying documentation

4 Software Testing evaluate and map the final software against business and user requirements. Well performed software testing will be having good test coverage. Higher the test coverage better is evaluation of the software Software testing shall design test cases with higher probability of finding errors. In order to ensure this test cases shall be effective. The number of errors reported per defined number of test cases is quite indicative of this objective. Higher the number better is test objective met. Software testing shall ensure that user accepts the final software released for him to operate with no complaints. In order to fulfill this objective, tester shall have end-user mindset which would help in writing test cases or scenarios to meet user expectations. Software Testing shall ensure that the proper testing is being done to ensure that the system is ready to use. Good testing covers functionality, installability, and operational ease to learn and use the system. Also, it verifies that the system is easily deployable and replaceable. This would make the system that is ease to install, learn, and use. Software Testing shall allow to gain confidence that it works. This would happen when system testing proves that the system is reliable and does not crash or there will be no show stoppers. Software testing shall evaluate the capabilities of a system to show that a system performs as intended. This allows us to understand the limits of performance, land also learning what a system is able to do and not able to do. For the user with good knowledge on the system, the results from the system shall be predictable. Software testing shall also verify documentation. Many documents are created and also, evolve throughout software development life cycle. Along with this there can be on-line help, installation and trouble shooting related, user training related documents. Software testing shall evaluate all these documents for correctness. Principles of Software testing 1.. Testing shows presence of defects 2.Exhaustive testing :Not possible 3.Early testing 4.Defect clustering 5.Pesticide paradox 6.Testing is context depending 7.Absence of error is fallacy 8.Defect prevention

5 9.Automation

6 Testability The testability of a system or co mponent is defined as 1. the ease with which a sy stem or component can be tested. 2. the extent to which testi ng gives us confidence about correctness. Levels of Testing There are generally four recognized levels of tests: unit/componenttesting, inte gration testing, system testing, and acceptance testing.tests are frequently grouped by where they are added in the softwaredevelopment pro cess, or by the level of specificity of the test. Unit Testing During this first round of testiing, the program is submitted to assessmen ts that focus on specific units or components of the software to determine whether each one is fully functional. The main aim of this endeavor is to determine whether the application functions as designed. In this phase,a unit can refer to a function, individual program or even a procedure, and a Whitebox Testing method is usually used to get the job done. One of the biggest benefits of this testing phase is that it can be run every time a piece of code is changed, a llowing issues to be resolved as quickly as possib le. It s quite common for software developers to perform unit tests before delivering software to testers for formal testing. Integration Testing Integration testing allows indiv iduals the opportunity to combine all of the units within a program and test them as a g roup. This testing level is designed to find interface defects between the modules/function s. This is particularly beneficial because it determines how efficiently the units are running together. Keep in mind that no matter how efficiently each unit is running, if they aren t prope rly integrated, it will affect the functionality of the software program. In order to run thes e types of tests, individuals can make use of various testing methods, but the specific meth od that will be

7 used to get the job done will d epend greatly on the way in which the units are defined.

8 System Testing System testing is the first level in which the complete application is tested as a whole. The goal at this level is to evaluate whether the system has complied with all of the outlined requirements and to see that it meets Quality Standards. System testing is undertaken by independent testers who haven t played a role in developing the program. This testing is performed in an environment that closely mirrors production. System Testing is very important because it verifies that the application meets the technical, functional, and business requirements that were set by the customer. Acceptance Testing The final level, Acceptance testing (or User Acceptance Testing), is conducted to determine whether the system is ready for release. During the Software development life cycle, requirements changes can sometimes be misinterpreted in a fashion that does not meet the intended needs of the users. During this final phase, the user will test the system to find out whether the application meets their business needs. Once this process has been completed and the software has passed, the program will then be delivered to production. TMM Test Maturity Model is based on the Capability Maturity Model (CMM), and it was first developed by the Illinois Institute of Technology. It is a detailed model for test process improvement. It can be complemented with any process improvement model or can be used as a STAND ALONE model. TMM has major two components 1. A set of 5 levels that define testing capability 2. An Assessment Model Different Levels of Maturity Model The five levels of the TMM helps the organization to determine the maturity of its process and to identify the next improvement steps that are essential to achieving a higher level of test maturity.

9 Level One: Initial - The software process is characterized as inconsistent, and occasionally even chaotic. Defined processes and standard practices that exist are abandoned during a crisis. Success of the organization majorly depends on an individual effort, talent, and heroics. The heroes eventually move on to other organizations taking their wealth of knowledge or lessons learnt with them. Level Two: Repeatable - This level of Software Development Organization has a basic and consistent project management processes to track cost, schedule, and functionality. The process is in place to repeat the earlier successes on projects with similar applications. Program management is a key characteristic of a level two organization. Level Three: Defined - The software process for both management and engineering activities are documented, standardized, and integrated into a standard software process for the entire organization and all projects across the organization uses an approved, tailored version of the organization's standard software process for developing, testing and maintaining the application. Level Four: Managed - Management can effectively control the software development effort using precise measurements. At this level, organization set a quantitative quality goal for both software process and software maintenance. At this maturity level the

10 performance of processes is controlled using statistical and other quantitative techniques, and is quantitatively predictable.

11 Level Five: Optimizing - The Key characteristic of this level is focusing on continually improving process performance through both incremental and innovative technological improvements. At this level, changes to the process are to improve the process performance and at the same time maintaining statistical probability to achieve the established quantitative process-improvement objectives. This is a SAMPLE (Few pages have been extracted from the complete notes:-it s meant to show you the topics covered in the full notes and as per the course outline Download more at our websites: To get the complete notes either in softcopy form or in Hardcopy (printed & Binded) form, contact us on: Call/text/whatsApp / naarocom@gmail.com info@naarocom.com sales@naarocom.com Get news and updates by liking our page on facebook and follow us on Twitter Sample/preview is NOT FOR SALE