Software Testing

Ace your homework & exams now with Quizwiz!

Six Major Phases in every Software Testing Life Cycle Model

1. Requirement Analysis 2. Test Planning 3. Test Case Development 4. Test Environment Setup 5. Test Execution 6. Test Cycle Closure

Three Software Testing categories:

1. Functional testing 2. Non-Functional testing 3. Maintenance (Regression and Maintenance)

Phases of the Software Development Cycle

1. Requirement Gathering stage 2. Design Stage 3. Build Stage 4. Test Stage 5. Deployment Stage 6. Maintenance Stage

To get maximum ROI of automation, observe the following:

1. The scope of automation needs to be determined in detail before the start of the project. This sets expectations from automation right. 2. Select the right automation tool: A tool must not be selected based on its popularity, but it's fit to the automation requirements. 3. Choose an appropriate framework 4. Scripting Standards-Standards have to be followed while writing the scripts for automation. 5. Measure metrics-Success of automation cannot be determined by comparing the manual effort with the automation effort but by also capturing other metrics.

Test Environment Setup Activities

1. Understand the required architecture, environment setup and prepare hardware and software requirement list for the Test Environment 2. Setup Test Environment and test data 3. Perform smoke test on the build

Why is software testing important?

Because if there are any bugs or errors in the software, it can be identified early and can be solved before delivery of the software product. Properly tested software product ensures reliability, security and high performance which further results in time saving, cost effectiveness and customer satisfaction.

What does software testing mean?

It means the verification of application under test (AUT).

Basic knowledge of Linux commands

Most of the software applications like Web-Services, Databases, Application Servers are deployed on Linux machines. So it is crucial for testers to have knowledge about Linux commands.

Following steps are followed in an Automation Process:

Step 1) Test Tool Selection Step 2) Define scope of automation Step 3) Planning, Design and Development Step 4) Test Execution Step 5) Maintenance

Analytical skills

A good software tester should have sharp analytical skills. They will help break up a complex software system into smaller units to gain a better understanding and create test cases.

V Model

A highly disciplined SDLC model in which there is a testing phase parallel to each development phase. The V model is an extension of the waterfall model in which testing is done on each stage parallel with development in a sequential way. It is known as the Validation or Verification Model.

Automation Testing (Test Automation)

A software testing technique that performs using special automated testing software tools to execute a test case suite. Best way to increase the effectiveness, test coverage, and execution speed in software testing.

Following are the Test Automation benefits:

1. 70% faster than the manual testing 2. Wider test coverage of application features 3. Reliable in results 4. Ensure Consistency 5. Saves Time and Cost 6. Improves accuracy 7. Human intervention is not required while execution 8. Increases efficiency 9. Better speed in executing tests 10. Reusable test scripts 11. Test frequently and thoroughly 12. More cycle of execution can be achieved through automation 13. Early time to market

Automated Testing

1. Automation testing is used of tools to execute test cases. 2. Automation Testing saves time, cost and manpower. Once recorded, it is easier to run an automated test suite. 3. Automated testing is recommended only for stable systems and is mostly used for Regression Testing. 4. The boring part of executing same test cases time and again is handled by automation software in Automation Testing.

During the planning, design, and development phase, you create an Automation strategy & plan, which contains the following details:

1. Automation tools selected 2. Framework design and its features 3. In-Scope and Out-of-scope items of automation 4. Automation testbed preparation 5. Schedule and Timeline of scripting and execution 6. Deliverables of Automation Testing

Manual Testing Types

1. Black Box Testing 2. White Box Testing 3. Unit Testing 4. System Testing 5. Integration Testing 6. Acceptance Testing

Deliverables of Test Execution

1. Completed RTM with the execution status 2. Test cases updated with results 3. Defect reports

Benefits of Software Testing

1. Cost Effective: It is one of the important advantages of software testing. Testing any IT project on time helps you to save your money for the long term. If the bugs are caught in the earlier stage of software testing, it costs less to fix. 2. Security: It is the most vulnerable and sensitive benefit of software testing. People are looking for trusted products. It helps in removing risks and problems earlier. 3. Product quality: It is an essential requirement of any software product. Testing ensures a quality product is delivered to customers. 4. Customer satisfaction: The main aim of any product is to give satisfaction to their customers. UI/UX Testing ensures the best user experience.

Test Case Development Activities

1. Create test cases, automation scripts (if applicable) 2. Review and baseline test cases and scripts 3. Create test data (if Test Environment is available)

Scripting Standards-Some of them are:

1. Create uniform scripts, comments, and indentation of the code. 2. Adequate Exception handling-How error is handled on system failure or unexpected behavior of the application. 3. User-defined messages should be coded or standardized for Error Logging for testers to understand.

There are four types of frameworks used in automation software testing:

1. Data Driven Automation Framework 2. Keyword Driven Automation Framework 3. Module Automation Framework 4. Hybrid Automation Framework

Following criterion will help you select the best tool for your requirement:

1. Environment Support 2. Ease of use 3. Testing of Database 4. Object identification 5. Image Testing 6. Error Recovery Testing 7. Object Mapping 8. Scripting Language Used 9. Support for various types of test-including functional, test management, mobile, etc. 10. Support for multiple testing frameworks 11. Easy to debug the automation software scripts 12. Ability to recognize objects in any environment 13. Extensive test reports and results 14. Minimize training cost of selected tools

Deliverables of Test Environment Setup

1. Environment ready with test data setup 2. Smoke Test Results

Test Cycle Closure Activities

1. Evaluate cycle completion criteria based on Time, Test coverage, Cost, Software, Critical Business Objectives, Quality 2. Prepare test metrics based on the above parameters 3. Document the learning out of the project 4. Prepare Test Closure report 5. Qualitative and quantitative reporting of quality of the work product to the customer 6. Test result analysis to find out the defect distribution by type and severity

Test Execution Activities

1. Execute tests as per plan 2. Document test results, and log defects for failed cases 3. Map defects to test cases in RTM 4. Retest the Defect fixes 5. Track the defects to closure

Test cases to be automated can be selected using the following criterion to increase the automation ROI:

1. High Risk-Business Critical test cases 2. Test cases that are repeatedly executed 3. Test Cases that are very tedious or difficult to perform manually 4. Test Cases which are time-consuming

Activities in Requirement Phase Testing

1. Identify types of tests to be performed 2. Gather details about testing priorities and focus 3. Prepare Requirement Traceability Matrix (RTM) 4. identify test environment details where testing is supposed to be carried out 5. Automation feasibility (if required)

A framework is a set of automation guidelines which help in:

1. Maintaining consistency of testing 2. Improves test structuring 3. Minimum usage of code 4. Less maintenance of code 5. Improve reusability 6. Nontechnical testers can be involved in code 7. The training period of using the tool can be reduced 8. Involves data wherever appropriate

Automation testing is important due to the following reasons:

1. Manual Testing of all workflows, all fields, all negative scenarios is time and money consuming. 2. It is difficult to test for multilingual sites manually. 3. Test Automation in software testing does not require human intervention. You can run automated test unattended (overnight). 4. Test Automation increases the speed of test execution. 5. Automation helps increase Test Coverage. 6. Manual Testing can become boring and hence error-prone.

Manual Testing

1. Manual testing requires human intervention for test execution. 2. Manual testing will require skilled labor, long time & will imply high costs. 3. Any type of application can be tested manually, certain testing types like ad-hoc and monkey testing are more suited for manual execution. 4. Manual testing can become repetitive and boring.

Measure Metrics-Other following metrics:

1. Percent of defects found 2. The time required for automation testing for each and every release cycle 3. Minimal Time is taken for release 4. Customer Satisfaction Index 5. Productivity improvement

Non-Functional Testing Types of Testing

1. Performance 2. Endurance 3. Load 4. Volume 5. Scalability 6. Usability

Test Planning Activities

1. Preparation of test plan/strategy document for various types of testing 2. Test tool selection 3. Test effort estimation 4. Resource planning and determining roles and responsibilities 5. Training requirement

Deliverables of Requirement Phase Testing

1. RTM 2. Automation feasibility report (if applicable)

How to Perform Manual Testing

1. Read and understand the software project documentation/guides. Also, study the Application Under Test (AUT) if available. 2. Draft Test cases that cover all the requirements mentioned in the documentation. 3. Review and baseline the test cases with Team Lead, Client (as applicable). 4. Execute the test cases on the AUT. 5. Report bugs. 6. Once bugs are fixed, again execute the failing test cases to verify they pass.

Maintenance Testing Types of Testing

1. Regression 2. Maintenance

Tools to Automate Manual Testing

1. Selenium 2. QTP 3. Jmeter 4. Loadrunner 5. TestLink 6. Quality Center (ALM)

Types of Automated Testing

1. Smoke Testing 2. Unit Testing 3. Integration Testing 4. Functional Testing 5. Keyword Testing 6. Regression Testing 7. Data Driven Testing 8. Black Box Testing

The following category of test cases are not suitable for automation:

1. Test Cases that are newly designed and not executed manually at least once. 2. Test Cases for which the requirements are frequently changing. 3. Test Cases which are executed on an ad-hoc basis.

Deliverables of Test Cycle Closure

1. Test Closure report 2. Test metrics

Deliverables of Test Case Development

1. Test cases/scripts 2. Test data

Deliverables of Test Planning

1. Test plan/strategy document 2. Effort estimation document

7 Principles of Software Testing

1. Testing shows presence of defects 2. Exhaustive testing is not possible 3. Early testing 4. Defect clustering 5. Pesticide paradox 6. Testing is context dependent 7. Absence of errors fallacy

The scope of automation is the area of your Application Under Test which will be automated. Following points help determine scope:

1. The features that are important for the business 2. Scenarios which have a large amount of data 3. Common functionalities across applications 4. Technical feasibility 5. The extent to which business components are reused 6. The complexity of test cases 7. Ability to use the same test cases for cross-browser testing

Functional Testing Types of Testing

1. Unit Testing 2. Integration Testing 3. Smoke 4. UAT (User Acceptance Testing) 5. Localization 6. Globalization 7. Interoperability

Communication skill

A good software tester must have good verbal and written communication skill. Testing artifacts (like test cases/plans, test strategies, bug reports, etc) created by the software tester should be easy to read and comprehend. Dealing with developers (in the events of bugs or any other issue) will required a shade of discreetness and diplomacy.

Program Testing

A method of executing an actual software program with the aim of testing program behavior and finding errors. The software program is executed with test case data to analyze the program behavior or response to the test data. A good program testing is one which has high chances of finding bugs.

Software Testing

A method to check whether the actual software product matches expected requirements and to ensure that software product is defect free.

Test Planning

A phase in which a Senior QA manager determines the test plan strategy along with efforts and cost estimates for the project. Moreover, the resources, test environment, test limitations, and the testing schedule are also determined. The Test Plan gets prepared and finalized in the same phase.

What is software testing?

A process of verifying a computer system/program to decide whether it meets the specified requirements and produces the desired results. As a result, you identify bugs in software product/project.

Software Testing Life Cycle (STLC)

A sequence of specific activities conducted during the testing process to ensure software quality goals are met. Involves both verifications and validation activities.

Waterfall Model

A sequential model divided into different phases of software development activities. Each stage is designed for performing the specific activity. Testing phase in waterfall model starts only after implementation of the system is done.

Defect Clustering

A small number of modules contain most of the defects detected.

Time Management & Organization Skills

A software tester must efficiently manage workload, have high productivity, exhibit optimal time management, and organization skills.

Passion

A software tester must have a passion for his/her field.

Selenium

A software testing tool used for Regression Testing. It is an open source testing tool that provides playback and recording facility for Regression Testing. The IDE only supports Mozilla Firefox web browser. Features: 1. It provides the provision to export recorded script in other languages like Java, Ruby, RSpec, Python, C#, etc. 2. It can be used with frameworks like JUnit and TestNG 3. It can execute multiple tests at a time 4. Autocomplete for Selenium commands that are common 5. Walkthrough tests 6. Identifies the element using id, name, X-path, etc. 7. Store tests as Ruby Script, HTML, and any other format 8. It provides an option to assert the title for every page 9. It supports selenium user-extensions.js file 10. It allows to insert comments in the middle of the script for better understanding and debugging

Manual Testing

A type of software testing in which test cases are executed manually by a tester, without using any automated tools. The purpose is to identify the bugs, issues, and defects in the software application. The most primitive technique of all testing types and it helps to find critical bugs in the software application.

Build Stage

After the design stage, actually code the software.

Testing is context dependent

All the developed software's are not identical. You might use a different approach, methodologies, techniques, and types of testing depending upon the application type.

Ranorex Studio

An all-in-one tool for automating functional UI tests, regression tests, data-driven tests and much more. It includes an easy to use click-and-go interface to automate tests for web, desktop, and mobile applications. Features: 1. Functional UI and end-to-end testing on desktop, web, and mobile 2. Cross-browser testing 3. SAP, ERP, Delphi and legacy applications 4. iOS and Android 5. Run tests locally or remotely, in parallel or distribute on a Selenium Grid 6. Robust reporting

GREAT attitude

An attitude to 'test to break', detail orientation, willingness to learn and suggest process improvements.. Your attitude must reflect a certain degree of independence where you take ownership of the task allocated and complete it without much direct supervision.

Test Automation Maintenance Approach

An automation testing phase carried out to test whether the new functionalities added to the software are working fine or not. Maintenance in automation testing is executed when new automation scripts are added and need to be reviewed and maintained in order to improve the effectiveness of automation scripts with each successive release cycle.

Testing in Software Engineering

As per ANSI/IEEE 1059, it is a process of evaluating a software product to find whether the current software product meets the required conditions or not. The testing process involves evaluating the features of the software product for requirements in terms of any missing requirements, bugs or errors, security, reliability and performance.

Test Execution Phase

Carried out by the testers in which testing of the software build is done based on test plans and test cases prepared. The process consists of test script execution, test script maintenance and bug reporting. If bugs are reported then it is reverted back to development team for correction and retesting will be performed.

Test Cycle Closure Phase

Completion of test execution which involves several activities like test completion reporting, collection of test completion matrices and test results. Testing team members meet, discuss and analyze testing artifacts to identify strategies that have to be implemented in future, taking lessons from current test cycle. The idea is to remove process bottlenecks for future test cycles.

Software Testing Life Cycle (STLC)

Consists of a series of activities carried out by Testers methodologically to test your software.

Test Environment Setup

Decides the software and hardware conditions under which a work product is tested. It is one of the critical aspects of the testing process and can be done in parallel with the Test Case Development Phase. Test team may not be involved in this activity if the development team provides the test environment. The test team is required to do a readiness check (smoke testing) of the given environment

Knowledge and hands-on experience of any Defect Tracking tool

Defect Tracking and Defect life cycle are key aspects of software testing. It is extremely critical to managing defects properly and track them in a systematic manner. Defect tracking becomes necessary because the entire team should know about the defect including managers, developers, and testers.

Exit Criteria

Defines the items that must be completed before testing can be concluded

Deployment Stage

Deploy the application in the repsective environment

SilkTest

Designed for doing functional and regression testing. For e-business application, it is the leading functional testing product. It is a product of Segue Software takeover by Borland in 2006. It is an object-oriented language just like C++. It uses the concept of an object, classes, and inheritance. Its main feature includes: 1. It consists of all the source script files 2. It converts the script commands into GUI commands. On the same machine, commands can be run on a remote or host machine 3. To identify the movement of the mouse along with keystrokes, it can be executed. It can avail both playback and record method or descriptive programming methods to get the dialogs 4. It identifies all controls and windows of the application under test as objects and determines all of the attributes and properties of each window

Requirement Gathering Stage

Gather as much information as possible about the details & specifications of the desired software from the client.

Entry Criteria

Gives the prerequisite items that must be completed before testing can begin.

Test Principles

Help you create an effective Test Strategy and draft error catching test cases.

Pesticide Paradox

If the same set of repetitive tests are conducted, the method will be useless for discovering new defects. To overcome this, the test cases need to be regularly reviewed & revised, adding new & different test cases to help find more defects.

System Testing

In this method, your software is compiled as a whole and then tested as a whole. This testing strategy checks the functionality, security, portability, amongst others.

Software Testing purpose

To identify errors, gaps or missing requirements in contrast to actual requirements.

Test Case Development Phase

Involves the creation, verification, and rework of test cases & test scripts after the test plan is ready. Initially, the test data is identified then created and reviewed and then reworked based on the preconditions. Then the QA team starts the development process of test cases for individual units

Integration Testing

It focuses on the construction and design of the software. You need to see that the integrated units are working without errors or not.

Rational Functional Tester

It is an Object-Oriented automated Functional Testing tool that is capable of performing automated functional, regression, data-driven testing and GUI testing. The main features of this tool are: 1. It supports a wide range of protocols and applications like Java, HTML, NET, Windows, SAP, Visual Basic, etc. 2. It can record and replay the actions on demand 3. It integrates well with source control management tools such as Rational Clear Case and Rational Team Concert integration 4. It allows developers to create keyword associated script so that it can be reused 5. Eclipse Java Developer Toolkit editor facilitates the team to code test scripts in Java with Eclipse 6. It supports custom controls through proxy SDK (Java/.Net) 7. It supports version control to enable parallel development of test scripts and concurrent usage by geographically distributed team

Knowledge and hands-on experience of Automation tool

Knowledge of any scripting language like VBScript, JavaScript, C# is always helpful as a tester if you are looking for a job into automation. Few companies also use Shell/Perl scripting, and there is a lot of demand for testers having knowledge of the same.

Maintenance Stage

Once your system is ready to use, you may require to change the code later on as per customer request

Watir

Open-source testing software for regression testing. It enables you to write tests that are easy to read and maintain. It supports only internet explorer on windows while WebDrive supports Chrome, Firefox, IE, Opera, etc. Features: 1. It supports multiple browsers on different platforms 2. Rather than using proprietary vendor script, it uses a fully-featured modern scripting language Ruby 3. It supports your web app regardless of what it is developed in

Design Stage

Plan the programming language like, Java, PHP, .Net; database like Oracle, MySQL, etc. Which would be suited for the project, also some high-level functions & architecture.

Business Analyst

Responsible for analyzing and assessing your company's business model and workflows. Integrate these models and workflows with technology.

Automation Testing

Responsible for automating manual test case execution which otherwise could be time-consuming. Tools used IBM Rational Robot, Silk performer, and QTP.

Performance Testing

Responsible for checking application responsiveness (time is taken to load, maximum load application can handle), etc. Tools used WEBLoad, Loadrunner.

Basic knowledge of Database/SQL

Software systems have a large amount of data in the background. This data is stored in different types of databases like Oracle, MySQL, etc in the backend. Simple/complex SQL queries can be used to check whether proper data is stored in the backend databases.

Absence of error - fallacy

Software testing is not merely finding defects, but also to check that software addresses the business needs. Finding and fixing defects does not help if the system build is unusable and does not fulfill the user's needs & requirements.

Requirement Analysis (Requirement Phase Testing)

Test team studies the requirements from a testing point of view to identify testable requirements and the QA team may interact with various stakeholders to understand requirements in detail Requirements could be either functional or nonfunctional. Automation feasibility for the testing project is also done in this stage.

Test Stage

Test the software to verify that it is built as per the specifications are given by the client

Early Testing

Testing should start as early as possible in the Software Development Life Cycle. It is recommended that you start finding the bug the moment the requirements are defined.

Testim

The fastest path to resilient end-to-end tests-codeless, coded or both. Lets you create amazingly stable codeless tests that leverage our AI, but also the flexibility to export tests as code. Features: 1. You can leverage Testim's modern JavaScript API and your IDE to debug, customize or refactor tests. 2. Store test in your version control system to keep them in sync with branches and run tests on every commit. 3. Integration with popular tools

Software Development Life Cycle (SDLC)

The sequence of activities carried out by Developers to design and develop high-quality software.

Unit Testing

This software testing approach is followed by the programmer to test the unit of the program. It helps developers to know whether the individual unit of the code is working properly or not.

QTP

Widely used for functional and regression testing, it addresses every major software application and environment. To simplify test creation and maintenance, it uses the concept of keyword driven testing. It allows the tester to build test cases directly from the application. Features: 1. It is easier to use for a non-technical person to adapt to and create working test cases 2. It fixes defects faster by thoroughly documenting and replicating defects for developer 3. Collapse test creation and test documentation at a single site 4. Parameterization is easy than WinRunner 5. QTP supports .NET development environment 6. It has better object identification mechanism 7. It can enhance existing QTP scripts without "Application Under Test" is available, by using the active screen

Knowledge and hands-on experience of a Test Management Tool

Without proper test management techniques, software testing process will fail. Test management is nothing but managing your testing related artifacts.


Related study sets

ISDS 2001 - application cases 3.1-3.6

View Set

Chapter 17 Care of the Preschooler

View Set

PA Property and Casualty Questions

View Set

FLVS Algebra 9.02: Exam: 09.02 Independent Probability

View Set

Chapter 10 BCED Adaptive Assignment: Research Process

View Set