Saturday 25 January 2020

Manual Testing Tutorial

Software Testing 

We do Software testing to support the business.

What is Software Testing?

Software testing is a process of identifying the correctness of software by considering its all attributes (Reliability, Scalability, Portability, Re-usability, Usability) and evaluating the execution of software components to find the software bugs or errors or defects.

Testing is the process of evaluating a system or its component(s) with the intent to find whether it satisfies the specified requirements or not. In simple words, testing is executing a system in order to identify any gaps, errors, or missing requirements in contrary to the actual requirements.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SDLC
Software Development Life Cycle

Requirement Collection
Feasibility Study
Designing-HLD, LLD
Coding
Testing
Installation
Maintenance

REQUIREMENT COLLECTION:
Gathering The information or requirement from the customer to provide business-related features.

Service And Product

Product - If sony company want to launch a new product like music system they do servey and get customer views about music system (which features they are looking for like music with record or DJ mixing system etc.) Done by PA(Product Analyst) Create CRS(Customer Requirement Specification).

Service - Requirement Collection done by Domain Expert BA(Business Analyst) 
EX- Customers like BOA need banking software for their bank. They go to company like Infosys for develop banking software for their bank. Now Infosys hire a domain expert like bank manager then they trained him. Now BA goto America for audiance need analysis and make crs report and send to project analyst then Infosys starting develop software.  

Feasibility Study:

Analyzing the requirement whether we can develop the software or not. 

On the basis:
Technical Architect - Experience, Technology, OS
Financial Team - Total Capital, Scale of project
H.R - Resources -experience, freshers, skilled, unskilled.
Project Manager - Technical, Investment, Resources

DESIGN:

HLD:- Here we define the basic structure of the product. Decide what we require (process, logic) in order to develop.

LLD - We implement the logic that we have develop naturally. LLD act as reference during coding.

CODING:
Implementation of design. In this section, developer implement the logic or develop features of application.

TESTING:
Varifying the functionality of an application according to requirement specification.


Types of Testing

Black Box Testing
Functional Testing
Integration Testing
System testing 
Acceptance Testing
Smoke Testing
Sanity Testing
Adhoc Testing
Monkey/ Gorilla Testing
Exploratory Testing
Regression Testing

INSTALLATION:

Setting up of an environment at the client space and installing the final stable build at the client space on the production server is called installation.
It is done by release engineer or build engineer.

MAINTENANCE:

Finding Bug and doing minor changes.

USABILITY TESTING:
Testing the application to check whether it is user-friendly or not is called usability testing.

User-Friendly:
Good in look and feel:
User Interface must be attractive having good color combinations.
Simple to use:
The navigation should be so simple and easily any layman can understand.
Easy to understand:
Same as above
Consistent Terminology:
Develop based on the similar name of feater in different applications also the name should be so simple. 
ex- compose in Gmail can be written as write mail in a similar email application.

Provde Functionality with less efforts:
Navigation shuld finish with acceptable no. of clicks 
All the important links and tabs should be at left part of the screen.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SDLC Process/ MODELS

Water Fall Model - Back Tracking Not Possible
Spiral Model - Dependency Required on every operation
V-Model - every stage should be tested
Prototype Model - Pictorial representation of User Interface
Agile Model - Product or part of product release in a short period of time.

Water Fall Model:
Once the requirement freeze, we can not go back and add for or make changes in the features.
It is simple and easy to implement the model.
Testing done by developer
Never test in negative way
utilising time of testing for development
Use- College Projects
Disadventage - Testing done by developer
it is not a flixible model because backtracking is not possible
testing is small phase only after coding.
++++++++++++++++++++++++++++++++++++++++++++++++++++

Spiral Model:
In this model, every operation is dependent on one another.
If customer wants to add a new feater in this model we will simply add another cycle. Like Requirement collection, Design, Coding, Testing.
This model is used when a customer gives requirement in stages (one by one) we use the spiral model.

Advantage 
Flexible model as requirement change and addition both possible.
Customers can see his product in stages
hire stability of the product as compared to the waterfall model.
testing is done by test engineer.

Disadventage:
Time consuming model
If the code component failentair software fail.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

V-Model:
The purpose of the v model is to test every phase.
Following work done by test engineer in this model is:-
Review CRS and write an acceptance test plan
Review SRS and write a system test plan
Review HLD and write an integration test plan
Review LLD and write a functional test plan
then do white box testing

Advantage
Testing start from early stages of development
Deliverable documents are parallel
The total investment will be low

Disadvantages -  
Initial Investment is more

Application
Used in large and complex project
ex- CRM, ERP

+++++++++++++++++++++++++++++++++++++++++++++++++

Prototype Model (Blueprint of UI)

It is the pictorial representation of the user interface (UI). also, this prototype is temporary until the approval.
This model is used for understanding customer requirements.

Application
Whenever customers knew the software we can use this model.

Adv-
Customers can see the product in the early stages of development.
we can aspect a high-quality product as we understand the requirement properly.

Disadv-
It is a time-consuming model too much of documentation done.
Once the application is ready there is no use of the prototype.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Agile Methodology
In this model, the product or part of the product will be released in a short period of time.

Agile - Doing something fast way (Quickly)

Scrum: (Framework for SDLC)
Scrum means a set of a task or set of the processor to perform in an organize manner.

Back-Log:
Backlog is a total set of features that is not a decided which features to develop.

Product Backlog:
A product backlog is a priority set of requirements that will be developed.

Sprint:
Sprint means a set of requirements where efforts spent and time taken to develop certain set off features.

SPRINT DAYS;
It is the no. of days within which we develop one sprint.
Each sprint may not have same duration as earliest sprint because 
due to complexity
due to the size of the project
due to the size of the team

Sprint Backlog:
A sprint backlog is a total no. of the sprint that will be in different stages.

SCRUM ROLES:

Product Owner:
Decide which feater have to be develop first
Responsible to give any changes or requirements based on business needs.
Responsible to attend "sprint planning meeting", sprint review meeting.

Project Manager:
Decide How we should develop.
conduct sprint planning meeting.
and sprint review meeting

Scrum Master.
The role of scrum master is to decide who should develop and test.
Allocate work to each developer and test engineer.
Conduct daily scrum meeting or also called as daily standup meeting.

Agile Advantage
The product or part of the product will be release in short period of time.
From the first sprint release, customer can start using it for business.
Testing and development team are cross-functional (multitasking).
At the end, we can aspect high-quality product.

Disadvantages:
If changes are not handled in develop properly it may delay other (further) sprint.

SOFTWARE TESTING
**************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Software Testing Life Cycle (STLC)

The procedure of software testing is also known as STLC (Software Testing Life Cycle) which includes phases of the testing process. The testing process is executed in a well-planned and systematic manner. All activities are done to improve the quality of the software product.

Let's see, the different steps of STLC.

Software testing life cycle contains the following steps:

  • Requirement Analysis
  • Test Plan Creation
  • Environment setup
  • Test case Execution
  • Defect Logging
  • Test Cycle Closure
Finding a defect in software is called software testing.
Verifying the functionality of an application against requirement specification is called software testing.
Process of writing a program with an intention of finding defect.

Types of Software Testing
1. White Box Testing
2. Black Box Testing
3. Grey Box Testing

** White Box Testing**
Testing each and every line of program is called white box testing. It is done by developers before giving it(Build) to testing team.


Unit Testing:
The smallest unit of software is program line of code checking that unit is called unit testing. 

Q> Why we should be done white box testing?
Developer makes sure the develop build not affect other builds in development servers by doing unit testing.

Path Testing:
Checking All individual paths is called as path testing. 
> Which Program calling which program
> Which program has issue
> What is the issue
If p8 have issue they goto p3 starting from main toP1, P3 - p8 if p8 is clear then check p3.

White Box Testing from memory point of view?

If developer write same line of code multiple time it consume more memory. To reduce size of memory developers need to create method and call an every program in this way we reduce size of program.


White box testing from performance point of view.
Don't write too much time same condition in program use alternate function switch to call that function.

** Defect Tracking**
Tracking and maintaining defect at one centralized place is called defect tracking.

Defect:
Anything that does not work according to requirement is called as a defect.

Bug:
Informal name of defect.

Error:
Mistake done by developer during programming is called error.

Fault or Failure:
Deffect leads to failure 
the term fault used by customer.

Deffect/ Bug Life cycle:

Rejected
Duplicate
Not Reproducible
Deferred Or Postponed
Can't Be fix
Enhancement

Rejected (Defect/Bug Report)

Improper defect report
No proper steps to reproduce bug
Modle type of bug details is missing
Language is improper
2. Due to improper installation
Missed installing some supporting files 
Missed some steps to perform
3. Referring old requirement when there is new requirement

Duplicate

1. It is possible that two test engineers are testing same features
2. It is possible due to common features between two test engineers.
ex- signup, login featers testing by two test engineers. If an experienced test engineer report a bug and quit job then new test engineer report these bugs are duplicate and rejected by developers. 
Common features tested by more then two test engineers and reported bug from common features that is duplicate.

Q> How to avoid duplicate bug?
1. communicate with all T.Es.
2. Go to DTT(Defect Tracking Tool) check somebody has reported bug.
3. Go to DTT check somebody has reported same scenario.

Not Reproducible

1. Due to improper defect report
2. Due to improper test data or no test data given. 
(login pwd un details missing)
3. Due to improper test environment 
> Developer is using some other operating system then the test engineer.
> Due to improper browser
> Due to Improper browser version

Q> How do you convince developer it is a bug?
1> Send a screen short
2> Take remote access of developer and show him the bug.
3> Test in other T.E system and confirm it is a bug.
4> Screen record the bug attach it and send it to the developer.

Deferred Or Postponed:

1.Test Engineer report a bug to developer and it is a minor issue which will not have impact on the business thats why developer Postpone the bug.
2. Fixing a issue at the end of the release may cause more issue because of which quality may go down and itis a minor issue.
3. Developer will postpone the bug due to ongoing changes in the current requirement, where bug is reported.

Can't Be Fix:

1.The bug is inconsistent bug some time application open some time not.
2. The bug is in the root feater of the application fixing it will cost more time efforts that is why developers write can't be fixed.

Enhancement:

T.E send a bug to developer denay a bug it is enhancement (feater). 

** Severity And Priority**
Severity means impact of the bug on business.
There are different severity
1. Blocker (functionality should not work)
2. Critical (Impact on business is high)
3. Minor ((Impact on business is minor))
4. Major (Impact on business is low)
5. Trival (Impact on business is low)

Severity is set by T.E

Priority:
Importance to fix the bug.
High, Medium, Low
In Jira tool, it is - Highest, High, Medium, Low, Lowest.

Examples:
1. High severity high priority:
1. suppose we open the doctor application appointment booking section will not work.
2. In a banking application if I try for the loan but in the app interest rate is not available.

2. Low severity High Priority:
1. In a contact form submit and cancel button is too small. (content invisible)

3. High severity Low priority
Paytm help page is not working.
In a payment gateway, we can't select specific card, (like HDFC Credit Card).
In a movie downloading site, there are 8 download links are available but 2 links are broken or not working.
we place an order in an e-commerce site we are unable to track products while my product is delivered.

4. Low severity HighPriority:
Inconsistence bug.
website links are sometimes working sometimes not working.

** Compatibility Testing **
> Testing the application in different hardware and software environments is called compatibility testing.
> Developers develop the application on one platform testing team test the application on the same platform but the end users may use the application on different platforms to check that they are working they will perform compatibility testing.
> Compatibility testing is used when the application is the stable on-base platform.

Q> Why developer wants to develop an application on Windows XP.
Due to his most customers are on Windows XP.

BUG Report

Bug id: (Zop-1)
Product/project: (Zopak)
Module: (Signup)
Reporter: (TE)
Assign: (DE)
CC: (TL)
Severity: (Blocker)
Priority: (High)
Status: (New)
Build: (B01)
OS: (Windows)
Browser: (Chrome)
Browser.Version: (Chrome 6.2)

Summary - Signup - Unable to create signu page A/C even after valid details

Detail Description - Following are the steps to reproduce the bug

1> open browser enter URL - ww.abc.com
2> Click on the signup link
3> Enter FN, LN Un PWD, Mob
FN-Nitin, LN - Sinha, UN - Njoynitin, PWD- Njoy9204, Mob-8340221415

Expected Result- Should SHow Confirmation Page.
Actual Result - Unable to create Account

Attach File - Browse file

Report no. 1.2.12

Report      Cancel


*********


# Compatibility Test

> Testing the application at different hardware and software environments is called Compatibility  Test.

> Developer develops the application on one platform and the testing team tests the application on the same platform but the end-user may use the application on different platforms to check that they are working they will perform  Compatibility Testing.

Compatibility Test is used when the application is the stable on-base platform.

APPROACHES of Compatibility Testing:

4 test engineer testing on different platforms
one test engineer tested at on system at all platform (OS/ Browser)
Use Virtulasition (Vmware tool for multiple os)

Defect we found during Compatibility Testing

1. Change in look and feel
2. Object Overlapping
3. Broken Frame and Tables 
4. Broken link, tabs, functionality
5. Scattered Object
6. Alignment Issue
7. Zoom orientation, Devices, Browser
8. change in font style color size
9. Scroll bar issue

Forward Compatibility

It only goes on the forward way it supports only upgraded version once the application upgraded it not work on the previous version.

Backward Compatibility
In this forward and backward both possible develop applications will work on previous and upgraded versions.

** Functional Testing**

Checking each and every component thoroughly against requirement specifications is called Functional Testing.

Two Type of requirement 
Implicit - common sens
Explicit - GIven by Customer

**Validation**
check each component by entering values according to SRS. given.

** Verification**
Check All component, Spelling, and Title of the page

** Integration Testing**

Testing the data flow between two or more modules is integration testing.
Ex-In an amount transfer page fill details like FAN, TAN, Amount, Transfer after transfer goto amount balance page check available balance then goto transaction page check last transaction. In the way, we will check-in module A data flow (Amount Transferred or not). then logout and login as module B check amount balance then check last transactions.

Lessons;
1. Understand the product
2. Identify the scenario
3. priorities the scenario
4. execute the scenario
5. consider one feater and check all scenarios.

* Types of integration Testing*
1.Incremental Integration Testing 
A. Top Down Approach
B. Bottom-up Approach
C. Sandwich Approach

2. Non-Incremental Testing
Big-Bang Method

Incremental Integration Testing:
Incrementally adds the module and check the data flow from module to module.
* Top-Down Approach:
Incrementally adds the module and checks the data flow from the parent module to the child module.
Ex- In an e-commerce site- search product- select product- add to cart product- buy the product- payment- delivery.
In Paytm - Recharge
In IRCTC- Tkt Booking.

Bottom-Up Approach:
Incrementally adds the module and check the data flow from the child to the parent module.
EX- Forget Password, Cancel TKT, Return Product.

** Non-Incremental Integration :
In this type of testing, you can't determine who is the parent and who is the child.
ex- In Gmail Trash
Inbox delete mail- Goes to trash
Sent mail- Goes to trash
Draft- Goes to trash



Types of Functional Testing

Unit Testing: Unit testing is a type of software testing, where the individual unit or component of the software is tested. Unit testing, examine the different part of the application, by unit testing functional testing also done, because unit testing ensures each module is working correctly.

The developer does unit testing. Unit testing is done in the development phase of the application.


******************************************************************************
Smoke Testing: Functional testing by smoke testing. Smoke testing includes only the basic (feature) functionality of the system. Smoke testing is known as "Build Verification Testing." Smoke testing aims to ensure that the most important function work.

For example, Smoke testing verifies that the application launches successfully will check that GUI is responsive.

******************************************************************************
Sanity Testing: Sanity testing involves the entire high-level business scenario is working correctly. Sanity testing is done to check the functionality/bugs fixed. Sanity testing is little advance than smoke testing.
For example, login is working fine; all the buttons are working correctly; after clicking on the button navigation of the page is done or not.



******************************************************************************
Regression Testing: This type of testing concentrate to make sure that the code changes should not side effect the existing functionality of the system. Regression testing specifies when bug arises in the system after fixing the bug, regression testing concentrate on that all parts are working or not. Regression testing focuses on is there any impact on the system.

******************************************************************************
Integration Testing: Integration testing combined individual units and tested as a group. The purpose of this testing is to expose the faults in the interaction between the integrated units.

Developers and testers perform integration testing

******************************************************************************
User acceptance testing: It is a type of testing performed by the client to certify the system according to requirement. The final phase of testing is user acceptance testing before releasing the software to the market or production environment. UAT is a kind of black-box testing where two or more end-users will involve.

******************************************************************************

Retesting: Retesting is a type of testing performed to check the test cases that were unsuccessful in the final execution are successfully pass after the defects fixed. Usually, tester assigns the bug when they find it while testing the product or its component. 

******************************************************************************

Database Testing: Database testing is a type of testing which checks the schema, tables, triggers, etc. of the database under test. Database testing may involve creating complex queries to load/stress test the database and check its responsiveness. It checks the data integrity and consistency.

Example: let us consider a banking application whereby a user makes a transaction.

******************************************************************************

Ad-hoc Testing: Ad-hoc testing is an informal testing type whose aim is to break the system. This type of software testing is unplanned activity. It does not follow any test design to create the test cases. Ad-hoc testing is done randomly on any part of the application; it does not support any structured way of testing.

******************************************************************************

Recovery Testing: Recovery testing is used to define how well an application can recover from crashes, hardware failure, and other problems. The purpose of recovery testing is to verify the system's ability to recover from testing points of failure.

******************************************************************************

Static Testing: Static testing is a software testing technique by which we can check the defects in software without actually executing it. Static testing is done to avoid errors in the early stage of the development as it is easier to find failure in the early stages. Static testing used to detect the mistakes that may not found in dynamic testing.


No comments:

Post a Comment