Download - Software testing & Quality Assurance

Transcript
Page 1: Software testing & Quality Assurance

Software Testing & Quality Assurance

Page 2: Software testing & Quality Assurance

Several definitions:

“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?

Page 3: Software testing & Quality Assurance

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 line

Software 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?

Page 4: Software testing & Quality Assurance

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 Tester◦ Software Developer◦ Project Lead/Manager◦ End 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

Page 5: Software testing & Quality Assurance

Software testing is really required to point out the defects and errors that were made during the development phases.

It’s essential since it makes sure of the Customer’s 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.

It’s 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.

It’s required to stay in the business.

Why Testing is Important

Page 6: Software testing & Quality Assurance

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 efforts

3) 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 user’s needs and expectations then finding and fixing defects does not help.

Seven Principle of Software Testing

Page 7: Software testing & Quality Assurance

The five stages of the fundamental

Fundamental Software Testing

• Test Planning and Control

• Test Analysis and Design

• Test Implementation and Execution

• Evaluating Exit Criteria and Reporting

• Test Closure Activities

Page 8: Software testing & Quality Assurance

5 Phases of the Fundamental Test Process

Fundamental Test Process

Fix test design and repeatFix component or test cases/scriptsand repeat

Test Planning

and Control

Test 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

Page 9: Software testing & Quality Assurance

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

Page 10: Software testing & Quality Assurance

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

Page 11: Software testing & Quality Assurance

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

specifications IEEE 730 A standard for software quality assurance plans. IEEE 1008 Unit Testing. IEEE 12207 A standard for software life cycle processes

and life cycle data BS 7925-1 Vocabulary of Terms in Software Testing. BS 7925-2 Software Component Testing Standard.

Software Testing ISO Standards

Page 12: Software testing & Quality Assurance

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

Page 13: Software testing & Quality Assurance

The following tools can be used for automation testing: HP Quick Test Professional Selenium IBM Rational Functional Tester Silk Test Test Complete Testing Anywhere Win Runner Load Runner Visual Studio Test Professional WATIR

Software Testing Tools

Page 14: Software testing & Quality Assurance

There are three type of testing:-1) White Box Testing:-◦ Unit Testing◦ Structural Testing

2) Black Box Testing:-◦ Functional Testing◦ Integration testing◦ System Testing◦ Usability Testing◦ Compatibility Testing◦ Configuration Testing◦ Concurrency Testing

3) Non Functional Testing:-◦ Security Testing ◦ Automation Testing◦ Performance Testing◦ Load Testing◦ Stress Testing◦ Volume Testing◦ Recovery Testing

Testing Method

Page 15: Software testing & Quality Assurance

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

DOCUMENTATION

Page 16: Software testing & Quality Assurance

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

Page 17: Software testing & Quality Assurance

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 skills

To 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

Page 18: Software testing & Quality Assurance

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.

Academic Background

Page 19: Software testing & Quality Assurance

Career options for Software Professionals

Page 20: Software testing & Quality Assurance

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

Page 21: Software testing & Quality Assurance

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

Page 22: Software testing & Quality Assurance

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

Page 23: Software testing & Quality Assurance

Career Path of Tester

Page 24: Software testing & Quality Assurance

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 Manager

Scope of Testing

Page 25: Software testing & Quality Assurance