Skip to content

Latest commit

 

History

History
677 lines (492 loc) · 43.8 KB

Software Testing Project-FTS ILYAS.md

File metadata and controls

677 lines (492 loc) · 43.8 KB

Software Testing Projects FTS

WHAT IS TESTING:

  • Software Testing is a method to check whether the actual software product matches expected requirements and to ensure that software product is Defect free. It involves execution of software/system components using manual or automated tools to evaluate one or more properties of interest.
  • Software testing is the process of evaluating and verifying that a software product or application does what it is supposed to do. The benefits of testing include preventing bugs, reducing development costs and improving performance.

WHY TESTING IS IMPORTANT:

  • Testing is important because software bugs could be expensive or even dangerous.
  • Software bugs can potentially cause monetary and human loss, and history is full of such examples.
  • The testing is important since it discovers defects/bugs before the delivery to the client.
  • which guarantees the quality of the software.
  • It makes the software more reliable and easy to use.
  • Thoroughly tested software ensures reliable and high-performance software.
  • It assures the quality of the product and satisfies the customers as well as users.
  • it promises better business optimization (less maintenance cost), reliability, and superior user experience.

WHAT ARE THE BENEFITS OF SOFTWARE TESTING:

  • 4 Key Benefits of Software Testing for Your Business

  • Saves Money. First and foremost, software testing saves money. ...

  • Inspires Customer Confidence and Satisfaction. That translates directly to your customers. ...

  • Improves Security. ...

  • Improves Product Quality.

  • https://youtu.be/TDynSmrzpXw

What is a Software Testing Type?

Software Testing Type is a classification of different testing activities into categories, each having, a defined test objective, test strategy, and test deliverables. The goal of having a testing type is to validate the Application Under Test (AUT) for the defined Test Objective.

Types of Software key Testing:

  • Testing is Classified in to Three Categorys.

  • Functional Testing

  • Non-Functional Testing or Performance Testing

  • Maintenance (Regression and Maintenance)

image

Testing Category Types of Testing Testing Category Types of Testing Testing Category Types of Testing
Funtional Testing Automation Test Non-Funtional Test Performance Test Maintenance Testing Regression
Manual Test Endurance Test Maintenance
Unit Testing Load
Integration Test volume
Smoke test Scalability
UAT Test Usability
Localization SECURITY TEST
Globalization SYSTEM TEST
Interoperability

Total Types of Testing in Software Field:

TYPES OF TEST TYPES OF TEST TYPES OF TEST TYPES OF TEST TYPES OF TEST TYPES OF TEST TYPES OF TEST
Acceptance Testing Accessibility Testing Active Testing Alpha Testing Assertion Testing API Testing Beta Testing
Agile Testing Age Testing Ad-hoc Testing All-pairs Testing Automated Testing Basis Path Testing Backward Compatibility Testing
Benchmark Testing Big Bang Integration Testing Binary Portability Testing Boundary Value Testing Branch Testing Breadth Testing Black box Testing
Code-driven Testing Compatibility Testing Comparison Testing Component Testing Configuration Testing Compliance Testing Condition Coverage Testing
Compliance Testing Concurrency Testing Conformance Testing Context Driven Testing Conversion Testing Decision Coverage Testing Destructive Testing
Dependency Testing Dynamic Testing Domain Testing Error-Handling Testing End-to-end Testing Endurance Testing Exploratory Testing
Fault injection Testing Functional Testing Formal verification Testing Fuzz Testing Gorilla Testing Gray Box Testing Glass box Testing
GUI software Testing Globalization Testing Hybrid Integration Testing Integration Testing Interface Testing Install/uninstall Testing Loop Testing
Manual Scripted Testing Manual-Support Testing Model-Based Testing Mutation Testing Modularity-driven Testin Non-functional Testing Negative Testing
Operational Testing Pair Testing Passive Testing Parallel Testing Path Testing Penetration Testing Performance Testing
Qualification Testing Ramp Testing Regression Testing Recovery Testing Requirements Testing Security Testing Sanity Testing
Scenario Testing Scalability Testing Statement Testing Static Testing Stability Testing Smoke Testing Storage Testing
Stress Testing Structural Testing System Testing System integration Testing Top Down Integration Testing Thread Testing Upgrade Testing
Unit Testing User Interface Testing Usability Testing Volume Testing Vulnerability Testing White box Testing Workflow Testing

Important key test must do all the Software Eng:

image

Unit Test:

Unit testing is a software development process in which the smallest testable parts of an application, called units, are individually and independently scrutinized for proper operation. This testing methodology is done during the development process by the software developers and sometimes QA staff.

A unit is a single testable part of a software system and tested during the development phase of the application software. The purpose of unit testing is to test the correctness of isolated code

Advantages of Unit Testing:

  • The process becomes agile. This is the main benefit of unit testing
  • Quality of Code. Unit testing significantly improves code quality. ..
  • Find Software Bugs Easily. ...
  • Facilitates Change. ...
  • Provides Documentation. ...
  • Debugging Process. ...
  • Design. ...
  • Reduce Costs.

What are the unit testing tools?

image

Unit testing tools

• NUnit. • JUnit. • TestNG.
• Mockito. • PHPUnit.

https://www.youtube.com/watch?v=jFQfuIEd8sUhttps://www.youtube.com/watch?v=SOhM7UP-C0I

Integration Test:

  • Integration testing -- also known as integration and testing (I &T) -- is a type of software testing in which the different units, modules or components of a software application are tested as a combined entity. However, these modules may be coded by different programmer
  • Integration testing is the phase in software testing in which individual software modules are combined and tested as a group. Integration testing is conducted to evaluate the compliance of a system or component with specified functional requirements. It occurs after unit testing and before system testing.
  • The purpose of the integration testing is to expose faults in the interaction between integrated units. Once all the modules have been unit tested, integration testing is performed.

Some different types of integration testing are

 Big-bang, mixed (sandwich),  Risky-hardest,  Top-down,  Bottom-up.

image

Other Integration Patterns are:

 Collaboration integration,  Backbone integration,  Layer integration,  Client-server integration,  Distributed services integration
 High-frequency integration.

https://www.youtube.com/watch?v=8UfQ8quw0Eg https://www.youtube.com/watch?v=xZSYh4JxzTY

What is meant by system testing? System testing, also referred to as system-level tests or system-integration testing, is the process in which a quality assurance (QA) team evaluates how the various components of an application interact together in the full, integrated system or application.

What is System Testing?

System Testing is a level of testing that validates the complete and fully integrated software product. The purpose of a system test is to evaluate the end-to-end system specifications. Usually, the software is only one element of a larger computer-based system. Ultimately, the software is interfaced with other software/hardware systems. System Testing is actually a series of different tests whose sole purpose is to exercise the full computer-based system.

What is The purpose of System Test?

The purpose of system testing is to ensure that a system meets its specification and any non-functional requirements (such as stability and throughput) that have been agreed with its users.

What is Testing Types of System Testing?

System Testing is the level of software testing performed before Acceptance Testing and after Integration Testing. It comes under Black Box testing, i.e., only external working features of the software evaluated during this testing.

Importance of System Test:

System Test is renowned as end-to-end testing, as it verifies the entire software. It provides a comprehensive report on the performance and compliance of the system with the business specified requirement. Also, at this level, the whole system is validated with unit-level performance.

What are Types of System Testing?

Types of System Testing

  • Regression Testing.
  • Load Testing.
  • Functional Testing.
  • Recovery Testing.
  • Migration Testing.
  • Usability Testing.
  • Software and Hardware Testing.

image

WHAT IS ACCEPTANCE TEST:

  • Acceptance Testing is a method of software testing where a system is tested for acceptability. The major aim of this test is to evaluate the compliance of the system with the business requirements and assess whether it is acceptable for delivery or not.

  • It is a formal testing according to user needs, requirements and business processes conducted to determine whether a system satisfies the acceptance criteria or not and to enable the users, customers or other authorized entities to determine whether to accept the system or not.

  • Acceptance Testing is the last phase of software testing performed after System Testing and before making the system available for actual use.

Types of Acceptance Testing:

User Acceptance Testing (UAT):

  • User acceptance testing is used to determine whether the product is working for the user correctly. Specific requirements which are quite often used by the customers are primarily picked for the testing purpose. This is also termed as End-User Testing.

Business Acceptance Testing (BAT):

  • BAT is used to determine whether the product meets the business goals and purposes or not.
  • BAT mainly focuses on business profits which are quite challenging due to the changing market conditions and new technologies so that the current implementation may have to being changed which result in extra budgets.

Contract Acceptance Testing (CAT):

  • CAT is a contract which specifies that once the product goes live, within a predetermined period,
  • the acceptance test must be performed and it should pass all the acceptance use cases.
  • Here is a contract termed as Service Level Agreement (SLA), which includes the terms where the payment will be made only if the Product services are in-line with all the requirements, which means the contract is fulfilled.
  • Sometimes, this contract happens before the product goes live.
  • There should be a well defined contract in terms of the period of testing, areas of testing, conditions on issues encountered at later stages, payments, etc.

Regulations Acceptance Testing (RAT):

  • RAT is used to determine whether the product violates the rules and regulations that are defined by the government of the country where it is being released. This may be unintentional but will impact negatively on the business.
  • Generally, the product or application that is to be released in the market, has to go under RAT, as different countries or regions have different rules and regulations defined by its governing bodies.
  • If any rules and regulations are violated for any country then that country or the specific region then the product will not be released in that country or region.
  • If the product is released even though there is a violation then only the vendors of the product will be directly responsible.

Operational Acceptance Testing (OAT):

  • OAT is used to determine the operational readiness of the product and is a non-functional testing. It mainly includes testing of recovery, compatibility, maintainability, reliability etc.
  • OAT assures the stability of the product before it is released to the production.

Alpha Testing:

  • Alpha testing is used to determine the product in the development testing environment by a specialized testers team usually called alpha testers.

Beta Testing:

  • Beta testing is used to assess the product by exposing it to the real end-users, usually called beta testers in their environment. Feedback is collected from the users and the defects are fixed. Also, this helps in enhancing the product to give a rich user experience.

USE OF Acceptance Testing:

  • To find the defects missed during the functional testing phase.
  • How well the product is developed.
  • A product is what actually the customers need.
  • Feedbacks help in improving the product performance and user experience.
  • Minimize or eliminate the issues arising from the production.

What is User Acceptance Testing (UAT)? with Examples:

What is UAT?

  • User Acceptance Testing (UAT) is a type of testing performed by the end user or the client to verify/accept the software system before moving the software application to the production environment. UAT is done in the final phase of testing after functional, integration and system testing is done.

Purpose of UAT:

  • The main Purpose of UAT is to validate end to end business flow. It does not focus on cosmetic errors, spelling mistakes or system testing. User Acceptance Testing is carried out in a separate testing environment with production-like data setup. It is kind of black box testing where two or more end-users will be involved.

Who Performs UAT?

  • Client
  • End users

image

In VModel, User acceptance testing corresponds to the requirement phase of the Software Development life cycle(SDLC).

image

Prerequisites of User Acceptance Testing:

Following are the entry criteria for User Acceptance Testing:

  • Business Requirements must be available.
  • Application Code should be fully developed
  • Unit Testing, Integration Testing & System Testing should be completed
  • No Showstoppers, High, Medium defects in System Integration Test Phase –
  • Only Cosmetic error is acceptable before UAT
  • Regression Testing should be completed with no major defects
  • All the reported defects should be fixed and tested before UAT
  • Traceability matrix for all testing should be completed
  • UAT Environment must be ready
  • Sign off mail or communication from System Testing Team that the system is ready for UAT execution

Best Practices:

Following points needs to be considered to make UAT Success:

  • Prepare UAT plan early in the project life cycle
  • Prepare Checklist before the UAT starts
  • Conduct Pre-UAT session during System Testing phase itself
  • Set the expectation and define the scope of UAT clearly
  • Test End to End business flow and avoid system tests
  • Test the system or application with real-world scenarios and data
  • Think as an Unknown user to the system
  • Perform Usability Testing
  • Conduct Feedback session and meeting before moving to production

VIDEO ABOUT UAT TEST:

https://www.youtube.com/watch?v=lCMBtr4wfRc

What is Software Testing Life Cycle (STLC)?

  • Software Testing Life Cycle (STLC) is a sequence of specific activities conducted during the testing process to ensure software quality goals are met. STLC involves both verification and validation activities. Contrary to popular belief, Software Testing is not just a single/isolate activity, i.e. testing. It consists of a series of activities carried out methodologically to help certify your software product. STLC stands for Software Testing Life Cycle.

STLC Phases

There are following six major phases in every Software Testing Life Cycle Model (STLC Model):

  • Requirement Analysis
  • Test Planning
  • Test case development
  • Test Environment setup
  • Test Execution
  • Test Cycle closure

image https://youtu.be/Dq5IYYqnnGQ?list=UU19i1XD6k88KqHlET8atqFQ

Requirement Phase Testing:

Requirement Phase Testing also known as Requirement Analysis in which 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 non-functional. Automation feasibility for the testing project is also done in this stage.

Activities in Requirement Phase Testing

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

Test Planning in STLC

Test Planning in STLC is 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.

Test Planning Activities

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

Test Case Development Phase

The 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.

Test Case Development Activities

  • Create test cases, automation scripts (if applicable)
  • Review and baseline test cases and scripts
  • Create test data (If Test Environment is available)

Test Environment Setup:

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.

Test Environment Setup Activities

  • Understand the required architecture, environment set-up and prepare hardware and software requirement list for the Test Environment.
  • Setup test Environment and test data
  • Perform smoke test on the build.

Test Execution Phase:

Test Execution Phase is 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 Execution Activities

  • Execute tests as per plan
  • Document test results, and log defects for failed cases
  • Map defects to test cases in RTM
  • Retest the Defect fixes
  • Track the defects to closure

Test Cycle Closure

Test Cycle Closure phase is 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.

Test Cycle Closure Activities

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

STLC - Defect Life Cycle:

Defect Life Cycle, also known as Bug Life Cycle, is the journey of a defect, the cycle which a defect goes through during its lifetime. It varies from organization to organization and also from project to project, as it is governed by the software testing process and also depends upon the tools used.

Defect Life Cycle – Workflow

The following diagram shows the workflow of a Defect Life Cycle. image

States of a Defect Life Cycle

Following are the different states of a Defect Life Cycle.

  • New − Potential defect that is raised and yet to be validated.

  • Assigned − Assigned against a development team to be addressed.

  • Active − The Defect is being addressed by the developer and investigation is under progress. At this stage, there are two possible outcomes – Deferred or Rejected.

  • Test / Fixed / Ready for Retest − The Defect is fixed and ready for testing.

  • Verified − The Defect that is retested and the test has been verified by QA.

  • Closed − The final state of the defect that can be closed after the QA retesting or can be closed if the defect is duplicate or considered as NOT a defect.

  • Reopened − When the defect is NOT fixed, QA reopens/reactivates the defect.

  • Deferred − When a defect cannot be addressed in that particular cycle it is deferred to future release.

  • Rejected − A defect can be rejected for any of the three reasons – duplicate defect, NOT a Defect, Non Reproducible.

What is a Test Case?

A Test Case is a set of actions executed to verify a particular feature or functionality of your software application. A Test Case contains test steps, test data, precondition, postcondition developed for specific test scenario to verify any requirement. The test case includes specific variables or conditions, using which a testing engineer can compare expected and actual results to determine whether a software product is functioning as per the requirements of the customer.

https://youtu.be/BBmA5Qp6Ghk

https://www.youtube.com/watch?v=g0PrXoWKM2Y

Best Practice for writing good Test Case Example.

Test Cases need to be simple and transparent:

Create test cases that are as simple as possible. They must be clear and concise as the author of the test case may not execute them.

Use assertive language like go to the home page, enter data, click on this and so on. This makes the understanding the test steps easy and tests execution faster.

Create Test Case with End User in Mind:

The ultimate goal of any software project is to create test cases that meet customer requirements and is easy to use and operate. A tester must create test cases keeping in mind the end user perspective

Avoid test case repetition.

Do not repeat test cases. If a test case is needed for executing some other test case, call the test case by its test case id in the pre-condition column

Do not Assume

Do not assume functionality and features of your software application while preparing test case. Stick to the Specification Documents.

Ensure 100% Coverage

Make sure you write test cases to check all software requirements mentioned in the specification document. Use Traceability Matrix to ensure no functions/conditions is left untested.

Test Cases must be identifiable.

Name the test case id such that they are identified easily while tracking defects or identifying a software requirement at a later stage.

Implement Testing Techniques

It’s not possible to check every possible condition in your software application. Software Testing techniques help you select a few test cases with the maximum possibility of finding a defect.

Boundary Value Analysis (BVA): As the name suggests it’s the technique that defines the testing of boundaries for a specified range of values. Equivalence Partition (EP): This technique partitions the range into equal parts/groups that tend to have the same behavior. State Transition Technique: This method is used when software behavior changes from one state to another following particular action. Error Guessing Technique: This is guessing/anticipating the error that may arise while doing manual testing. This is not a formal method and takes advantages of a tester’s experience with the application

Self-cleaning

The test case you create must return the Test Environment to the pre-test state and should not render the test environment unusable. This is especially true for configuration testing.

Repeatable and self-standing

The test case should generate the same results every time no matter who tests it

Peer Review.

After creating test cases, get them reviewed by your colleagues. Your peers can uncover defects in your test case design, which you may easily miss.

Test Case Management Tools

Test management tools are the automation tools that help to manage and maintain the Test Cases. Main Features of a test case management tool are

  • For documenting Test Cases: With tools, you can expedite Test Case creation with use of templates

  • Execute the Test Case and Record the results: Test Case can be executed through the tools and results obtained can be easily recorded.

  • Automate the Defect Tracking: Failed tests are automatically linked to the bug tracker, which in turn can be assigned to the developers and can be tracked by email notifications.

  • Traceability: Requirements, Test cases, Execution of Test cases are all interlinked through the tools, and each case can be traced to each other to check test coverage.

  • Protecting Test Cases: Test cases should be reusable and should be protected from being lost or corrupted due to poor version control. Test Case Management Tools offer features like

  • Naming and numbering conventions

  • Versioning

  • Read-only storage

  • Controlled access

  • Off-site backup

  • Popular Test Management tools are: Quality Center and JIRA

While Drafting a Test Case to Include the following Information

  • The Description of what requirement is being tested
  • The Explanation of how the system will be tested
  • The test setup like a version of an application under test, software, data files, operating system, hardware, security access, physical or logical date, time of day, - prerequisites such as other tests and any other setup information pertinent to the requirements being tested
  • Inputs and outputs or actions and expected results
  • Any proofs or attachments
  • Use active case language
  • Test Case should not be more than 15 steps
  • An automated test script is commented with inputs, purpose and expected results
  • The setup offers an alternative to pre-requisite tests
  • With other tests, it should be an incorrect business scenario order

What Is Test Scenario:

A Test Scenario is defined as any functionality that can be tested. It is also called Test Condition or Test Possibility. As a tester, you should put yourself in the end user’s shoes and figure out the real-world scenarios and use cases of the Application Under Test. https://youtu.be/wMN0pCyjQ9E

  • Consider a hypothetical situation: There is a vast ocean. You have to travel across the ocean from one seashore to another. For example, from Mumbai, India Seashore to Colombo, Srilanka seashore.
  • The mode of travel you can opt for are:
  • (i) Airways: Take a flight to Colombo

image

(ii) Waterways: Prefer a ship to travel to Colombo

image

(iii) Railways: Take a train to Srilanka

image

Now for the Test Scenarios:

Traveling from Mumbai seashore to Colombo seashore is a functionality that is to be tested.

The Test Scenarios include:

  • Traveling by Airways,
  • Traveling by Waterways or
  • Traveling by Railways.
  • These test scenarios will have test cases.

Test cases that can be written for the above Test Scenarios include:

  • Test Scenario: Travelling By Airways

Test cases can include scenarios like:

  • The flight is as per the scheduled time.

  • The flight is not as per the scheduled time.

  • An emergency situation has ensued (heavy rainfall and storm).

  • In the same way, a separate set of test cases can be written for other remaining scenarios.

  • Now let’s get to the technological test scenarios.

  • Anything that can be tested is a Test Scenario. Thus we can state that any software functionality that is under test can be divided into multiple smaller - functionalities and can be termed a ‘Test Scenario’.

  • Before delivering any product to the client, the quality of the product needs to be appraised and evaluated. Test scenario aids in assessing the functional quality of a software application that is in conformance with its business requirements.

  • A tester scenario is a process wherein the tester tests a software application from an end-user perspective. The performance and quality of the software application are thoroughly assessed before implementation in the production environment.

Importance Of Test Scenario:

  • One Test Scenario can have multiple ‘Test Cases’. It can be figured as a big panoramic image and test cases are the small parts that are important to complete the panorama.
  • It is a single line statement and test cases comprise step-wise description to complete the purpose of the test scenario statement.

Example:

Test Scenario: Make the payment for the cab service availed.

This will have multiple test cases as stated below:

(i) Payment method to be used: PayPal, Paytm, Credit/Debit Card. (ii) The payment done is successful. (iii) Payment done is unsuccessful. (iv) The payment process aborted in between. (v) Not able to access payment methods. (vi) The application breaks down in between.

  • Test Scenarios thus assist in evaluating the software application as per the real-world situations.
  • Test scenarios when determined, help in bifurcating the scope of testing.
  • This bifurcation is termed prioritization which helps in determining the important functionalities of the software application.
  • Prioritized testing of the functionalities, assists to a great extent in the successful implementation of the software application.
  • As the test scenarios get prioritized, the most important functionalities can be easily identified and tested on priority. This ensures that the majority of the - - - crucial functionalities are working fine and defects related to it are duly captured and rectified.
  • Test scenarios determine the business process flow of the software and thus end-to-end testing of the application is possible.

Difference Between Test Scenario And Test Case:

image

Test Scenario Test Cases
Test scenario is a concept Test cases are the solutions to verify that concept
Test Scenario is a high level functionality Test cases are detailed procedure to test the high level functionality
Test Scenarios are derived from Requirements/ User Stories Test cases are derived from Test Scenarios
Test scenario is ‘What functionality is to be tested Test Cases are ‘ How to test the functionality
Test Scenarios have multiple test cases Test case may or may not be associated to multiple Test scenarios
Single test scenarios are never repeatable Single test case may be used for multiple times in different scenarios
Brief documentations required Detailed documentation is required
Brainstorming sessions are required to finalize a Test Scenario Detailed technical knowledge of the software application is required
Time saver as minute details is not required Time consuming as every minute detail needs to be taken care of
Maintenance cost is low as resources required are low Maintenance cost is high as resources required are high

Why Is Test Scenarios Indispensable?

Test scenarios are derived from requirements or user stories.

  • Take the example of a test scenario for Cab booking.
  • The scenarios could be cab booking options, payment methods, GPS tracking, road map displayed correctly or not, cab and driver details displayed correctly or not, - etc all are listed in the test scenario template.
  • Now suppose the test scenario is to check whether the location services are turned on, if not turned on, display the message ‘Turn on-location services. This - scenario is missed and not listed in the test scenarios template.
  • The ‘Location service’ scenario gives rise to other test scenarios related to it.

Why create Test Scenarios?

Test Scenarios are created for the following reasons,

  • Creating Test Scenarios ensures complete Test Coverage 0- Test Scenarios can be approved by various stakeholders like Business Analyst, Developers, Customers to ensure the Application Under Test is thoroughly tested. It ensures that the software is working for the most common use cases.
  • They serve as a quick tool to determine the testing work effort and accordingly create a proposal for the client or organize the workforce.
  • They help determine the most important end-to-end transactions or the real use of the software applications.
  • For studying the end-to-end functioning of the program, Test Scenario is critical.

How to Write Test Scenarios

As a tester, you can follow these five steps to create Test Scenarios-

Step 1:

  • Read the Requirement Documents like BRS, SRS, FRS, of the System Under Test (SUT). You could also refer uses cases, books, manuals, etc. of the application to be tested.

Step 2:

  • For each requirement, figure out possible users actions and objectives. Determine the technical aspects of the requirement. Ascertain possible scenarios of system abuse and evaluate users with hacker’s mindset.

Step 3:

  • After reading the Requirements Document and doing your due Analysis, list out different test scenarios that verify each feature of the software.

Step 4:

  • Once you have listed all possible Test Scenarios, a Traceability Matrix is created to verify that each & every requirement has a corresponding Test Scenario

Step 5:

  • The scenarios created are reviewed by your supervisor. Later, they are also reviewed by other Stakeholders in the project.

Defect Report in Software Testing:

Defect:

  • A defect in a software product is also known as a bug, error or fault which makes the software produce an unexpected result as per the software requirements.
  • For example; - incorrect data, - system hangs, - unexpected errors, - missing or incorrect requirements.

Defect Report:

  • A defect report is a document that has concise details about what defects are identified, what action steps make the defects show up, and what are the expected results instead of the application showing error (defect) while taking particular step by step actions.

  • Defect reports are usually created by the Quality Assurance team and also by the end-users (customers).

  • Often customers detect more defects and report them to the support team of the software development since the majority of the customers curiously tries out every feature in the application. Now, you know what actually defect and defect reports are.

So let’s understand, why do they create defect reports ? What do they do with them?

  • The reason behind why defect reports are created is to help developers to find out the defects easily and fix them up.

  • A defect report is usually assigned by QA to a developer who then reads the report and reproduces the defects on the software product by following the action steps mentioned in the report.

  • After that, the developer fixes the defects in order to get the desired outcome specified in the report.

  • That is why the defect reports are important and created carefully.

  • Defect reports should be short, organized, straight to the point and covers all the information that the developer needs to detect the actual defects in the report by doing what and how the one written the defect report detected the defects.

It is usual for QA teams to get defect reports from the clients that are either too short to reproduce and rectify or too long to understand what actually went wrong.

For example,

Defect Description : The application doesn’t work as expected.

  • Now, how in the world does a developer or QA know what went wrong which doesn’t meet the client expectation?

  • In such a case, the developer report to the QA that he couldn’t find any problem or he may have fixed any other error but not the actual one client detected. So that’s why it’s really important to create a concise defect report to get bugs fixed.

  • All right. You have a pretty good idea about what, whys and how’s of a defect report. So it’s time for what is inside the report.

A typical defect report contains the information in an xls Sheet as follows.

  1. Defect ID : Nothing but a serial number of defects in the report.

  2. Defect Description : A short and clear description of the defect detected.

  3. Action Steps : What the client or QA did in an application that results in the defect. Step by step actions they took.

  4. Expected Result : What results are expected as per the requirements when performing the action steps mentioned.

  5. Actual Result : What results are actually showing up when performing the action steps.

  6. Severity : Trivial (A small bug that doesn’t affect the software product usage).

  • Low – A small bug that needs to be fixed and again it’s not going to affect the performance of the software.
  • Medium – This bug does affect the performance. Such as being an obstacle to do a certain action. Yet there is another way to do the same thing.
  • High – It highly impacts the software though there is a way around to successfully do what the bug cease to do. Critical – These bugs heavily impacts the performance of the application. Like crashing the system, freezes the system or requires the system to restart for working properly.
  1. Attachments : A sequence of screenshots of performing the step by step actions and getting the unexpected result. One can also attach a short screen recording of performing the steps and encountering defects. Short videos help developers and/or QA to understand the bugs easily and quickly.

  2. Additional information : The platform you used, operating system and version. And other information which describes the defects in detail for assisting the developer understand the problem and fixing the code for getting desired results.

Defect Triage Report Format:

Defect Triage Meeting:

  • Defect Triage Meeting is generally called to resolve and fix defect.
  • Different participants i.e. Test Lead, Project Manager, Technical Lead, and Development Team Lead are important participants of meeting. Without them, no decision can be taken and meeting cannot be completed.
  • In three different phases i.e. pre-meeting, during meeting, and post-meeting, defect triage meeting is completed.
  • After the meeting, a triage report is generated that contains full descriptions and detail about each of everything that happened during meeting.
  • This triage report contains all information starting from identification of defect until root cause of defect.
  • This report is shared with all participants of meeting

Sample report format is shown below :

  • Various Fields in a Defect Triage Report

image

Defect ID :

Defect ID is an identity document that is generally used to verify or identify defects. Defect ID is basically a unique identification number that is given to each defect to differentiate them from each other.

Defect Description :

Defect description generally includes detailed description of defect. It also includes information regarding module in which defect was identified. It also includes defect causes and how it affects working of the system.

Creation Date :

Creation date is the date on which defect was identified or found or raised. On creation date, defect was reported for first time.

Creator :

Creator is the tester who has raised or identified defects. Creator might include name or ID of tester who has reported defect.

Severity :

Severity basically explains impact of defect on system or application. It includes how defect affects system. It simply measures degree of severity i.e., how severe defect is.

Priority :

Priority is basically related to resolving or fixing defect. Priority code simply indicates effects of particular defect on system. Priority code can be high, medium, or low.

  • High – If priority code is high, that means defect is needed to resolved or fixed immediately. Without resolving this particular defect, project cannot be successful.
  • Medium – If priority code is medium, that means particular defect is not needed to resolved or fixed immediately. It can be resolved later as it doesn’t require any immediate action. Defect causes less impact on the system.
  • Low – If priority code is low, that means defect is not needed to resolved or fixed. It may or may not be resolved. Defect causes very low and negligible impact on system.

Status :

This indicates present status of defect i.e., whether defect is new, or is in progress, or completed.

Assignment Date :

Assignment date is the date on which defect was given further for fixing or resolving it. On this date, defect was assigned to particular team or person for resolution.

Assigned To/Developer :

Developer is the tester who has fixed or resolved defects. Developer might include name or ID of tester who has fixed defect.

Resolution :

Resolution generally includes detailed description of how defect is being resolved. It includes what all things are done to resolve defect.

Date of Resolution :

Date of resolution is the date on which resolution of defect is to be done i.e. date on which defect will be resolved or fixed completely by developers.

Estimated Time :

Estimated time is basically value expressed in hours of work required to complete resolution i.e., estimated time required to fix or resolve defect.

Actual Time :

Actual time is basically value expressed in hours of work taken by developers to complete resolution i.e. actual time taken to fix or resolve defect.

Root Cause Description :

This field explains what is the main cause of defect to arise. It explains why defect appeared and raised.