Software testing & Quality Assurance
Embed Size (px)
Transcript of Software testing & Quality Assurance
Software Testing & Quality Assurance
Software Testing & Quality Assurance1
Testing is the process of establishing confidence that a program or system does what it is supposed to.by Hetzel 1973
Testing is the process of executing a program or system with the intent of finding errors.by Myers 1979
Testing is any activity aimed at evaluating an attribute or capability of a program or system and determining that it meets its required results. by Hetzel 1983
What is Software Testing?
One of very important software development phasesA software process based on well-defined software quality control and testing standards, testing methods, strategy, test criteria, and tools.Engineers perform all types of software testing activities to perform a software test process.The last quality checking point for software on its production lineSoftware testing is about testing a feature by applying test data to get a result and then comparing the actual result with expected result. Expected Result = Its from client sideActual Result = Its obtain after a test execution.It is not only finding the defect in the s/w; it is the completely dedicated discipline of evaluating the quality of s/w
What is Software Testing?
It depends on the process and the associated stakeholders of the project(s). In the IT industry, large companies have a team with responsibilities to evaluate the developed software in context of the given requirements. Moreover, developers also conduct testing which is called Unit Testing. In most cases, the following professionals are involved in testing a system within their respective capacities:Software TesterSoftware DeveloperProject Lead/ManagerEnd UserDifferent companies have different designations for people who test the software on the basis of their experience and knowledge such as Software Tester, Software Quality Assurance Engineer, QA Analyst, etc.It is not possible to test the software at any time during its cycle. The next two sections state when testing should be started and when to end it during the SDLC.Who Does Testing
Software testing is really required to point out the defects and errors that were made during the development phases.Its essential since it makes sure of the Customers reliability and their satisfaction in the application.It is very important to ensure the Quality of the product. Quality product delivered to the customers helps in gaining their confidence.Testing is necessary in order to provide the facilities to the customers like the delivery of high quality product or software application which requires lower maintenance cost and hence results into more accurate, consistent and reliable results.Testing is required for an effective performance of software application or product.Its important to ensure that the application should not result into any failures because it can be very expensive in the future or in the later stages of the development.Its required to stay in the business.
Why Testing is Important
1) Testing shows presence of defects: Testing can show the defects are present, but cannot prove that there are no defects. Even after testing the application or product thoroughly we cannot say that the product is 100% defect free. 2) Exhaustive testing is impossible: Testing everything including all combinations of inputs and preconditions is not possible. So, instead of doing the exhaustive testing we can use risks and priorities to focus testing efforts3) Early testing: In the software development life cycle testing activities should start as early as possible and should be focused on defined objectives.4) Defect clustering: A small number of modules contains most of the defects discovered during pre-release testing or shows the most operational failures.5) Pesticide paradox: If the same kinds of tests are repeated again and again, eventually the same set of test cases will no longer be able to find any new bugs. To overcome this Pesticide Paradox.6) Testing is context depending: Testing is basically context dependent. Different kinds of sites are tested differently. For example, safety critical software is tested differently from an e-commerce site.7) Absence of errors fallacy: If the system built is unusable and does not fulfil the users needs and expectations then finding and fixing defects does not help.
Seven Principle of Software Testing
The five stages of the fundamental
Fundamental Software Testing
Test Planning and ControlTest Analysis and DesignTest Implementation and ExecutionEvaluating Exit Criteria and ReportingTest Closure Activities
5 Phases of the Fundamental Test ProcessFundamental Test ProcessFix test design and repeatFix component or test cases/scriptsand repeatTest Planning and ControlTest Analysis and Design
Test Implementation and Execution
Evaluating Exit Criteria and Reporting
Test Closure Activities
Fix component test plan and repeat
Fix test design and repeat
START - This diagram shows the sequence of the 5 activities and the relationship between them. There are loops in the process as defects are found.
During the Test Implementation stage we often have to re-execute tests following defect fixes as well as run regression tests (hence the internal loop) and may need to repair faulty tests and re-execute them (hence the loop back to the previous stage).
It is during the Evaluating Exit Criteria and Reporting stage that we may need to consider designing more tests (hence the loop back to the previous 2 stages).
Testing, Quality Assurance and Quality Control
Most people get confused when it comes to pin down the differences among Quality Assurance, Quality Control, and Testing. Although they are interrelated and to some extent, they can be considered as same activities, but there exist distinguishing points that set them apart.
The following table lists the points that differentiate QA, QC, and Testing.
QA, QC AND TESTING
Quality Assurance Quality Control Testing QA includes activities that ensure the implementation of processes, procedures and standards in context to verification of developed software and intended requirements. It includes activities that ensure the verification of a developed software with respect to documented (or not in some cases) requirements. It includes activities that ensure the identification of bugs/error/defects in a software. Focuses on processes and procedures rather than conducting actual testing on the system. Focuses on actual testing by executing the software with an aim to identify bug/defect through implementation of procedures and process. Focuses on actual testing. Process-oriented activities. Product-oriented activities. Product-oriented activities. Preventive activities. It is a corrective process. It is a preventive process. It is a subset of Software Test Life Cycle (STLC). QC can be considered as the subset of Quality Assurance. Testing is the subset of Quality Control.
QA, QC AND TESTING
Some of the other standards related to QA and Testing processes are mentioned below: IEEE 829 Test Documentation.IEEE 830 A guide for developing system requirements specificationsIEEE 730 A standard for software quality assurance plans. IEEE 1008 Unit Testing.IEEE 12207 A standard for software life cycle processes and life cycle dataBS 7925-1 Vocabulary of Terms in Software Testing.BS 7925-2 Software Component Testing Standard.
Software Testing ISO Standards
This section describes the different types of testing that may be used to test a software during SDLC.Manual Testing:-Manual testing includes testing a software manually, i.e., without using any automated tool or any script. In this type, the tester takes over the role of an end-user and tests the software to identify any unexpected behaviour or bug. There are different stages for manual testing such as unit testing, integration testing, system testing, and user acceptance testing.Testers use test plans, test cases, or test scenarios to test a software to ensure the completeness of testing. Manual testing also includes exploratory testing, as testers explore the software to identify errors in it.Automation Testing:- Automation testing, which is also known as Test Automation, is when the tester writes scripts and uses another software to test the product. This process involves automation of a manual process. Automation Testing is used to re-run the test scenarios that were performed manually, quickly, and repeatedly.
Types of Testing
The following tools can be used for automation testing:HP Quick Test ProfessionalSeleniumIBM Rational Functional TesterSilk TestTest CompleteTesting AnywhereWin Runner Load Runner Visual Studio Test Professional WATIRSoftware Testing Tools
There are three type of testing:-1) White Box Testing:-Unit TestingStructural Testing2) Black Box Testing:-Functional TestingIntegration testingSystem TestingUsability TestingCompatibility TestingConfiguration TestingConcurrency Testing3) Non Functional Testing:-Security Testing Automation TestingPerformance TestingLoad TestingStress TestingVolume TestingRecovery Testing
Testing documentation involves the documentation of artifacts that should be developed before or during the testing of Software. Documentation for software testing helps in estimating the testing effort required, test coverage, requirement tracking/tracing, etc. This section describes some of the commonly used documented artifacts related to software testing such as: Test Plan Test Scenario Test Case Traceability Matrix
Following skills are indispensable to become a good software tester. Compare your skill set against the following checklist to determine whether Software Testing is a really for you-
Skill Required to become a Software Tester
A good software tester should have sharp analytical skills. Analytical skills will help break up a complex software system into smaller units to gain a better understanding and created corresponding test cases. A good software tester must have strong technical skills . This would include high level of proficiency in tools like MS Office , Open Office etc , Testing tools like QTP , Load runner, etc.. and of course deep understand of the application under test. A good software tester must have a good verbal and written communication skill.Testing at times could be a demanding job especially during the release of code. A software tester must efficiently manage workload, have high productivity ,exhibit optimal time management and organization skillsTo be a good software tester you must have a GREAT attitude. An attitude to test to break' , detail orientation , willingness to learn and suggest process improvements. To excel in any profession or job, one must have a great degree of the passion for it. A software tester must have passion for his / her field. BUT how do you determine whether you have a passion for software testing if you have never tested before?Skill Required to become a Software Tester
Academic background of a software tester should be in Computer Science. A BTech/ B.E. , MCA , BCA , BSc- Computers will land you a job easily.
If you do not hold any of these degrees than you must complete a software testing certification like ISTQB and CSTE which help you learn Software Development/ Test Life Cycle and other testing methodologies.
Career options for Software Professionals
As mentioned above, from being test engineer one can move to senior test engineer, test lead to test manager; else can become QA lead, QA Manager. The options available in the testing tools side are enormous. There are numbers of functional, performance, security testing tools besides test management tools like Quality Centre from HP, CQTM from IBM etc.,The demand for niche skills like SOA testers, Security testers are on the increase. There is dearth of skills in test automation areas scripting skills in the tools languages like VB, Java and other scripting languages like Perl, Shell, Python etc., Technical resources with capabilities to evaluate automation tools, create automation framework and reusable components are on demand. Always there is demand for good performance testers who can analyze the performance test results, identify the bottlenecks and suggest tuning techniques.
Career options for Software Professionals
Software Tester Salary(India)The average pay for a Software Tester is Rs 310,575 per year. People in this job generally don't have more than 10 years' experience. Experience strongly influences salary for this job. The skills that increase pay for this job the most are Test Automation, Test Planning, and SQL.
Remuneration of Software Tester
Software Tester Salary (United States)A Software Tester earns an average salary of $55,334 per year. Most people with this job move on to other positions after 20 years in this career. The highest paying skills associated with this job are ASP. NET and .NET.
Remuneration of Software Tester
Career Path of Tester
Software testing professionals are in huge demand both in India and abroad. Indian Testing Board has more than 30, 000 certified testers in International Software Testing Qualifications Board (ISTQB) foundation level exam. It is globally accepted certification for software testers. Software testing is more challenging domain. At the same time, it offer lucrative salary package for talented professionals. Every day, hundreds of new software applications are launched in the market. As a result, there is huge demand for software testers who can validate software product at various levels.
According to recent survey, India is going to be the popular software outsourcing destination in world because of its operational efficiency and talented workforce. As a software tester, you career advancement will follow the following hierarchy.
Junior Test Engineer > Test Engineer > Senior Test Engineer > Team Lead > Project ManagerScope of Testing