software testing
TRANSCRIPT
Software Testing
What is Testing?
Testing is the process of evaluating a system or its component(s) with the intent to find that whether it satisfies the specified requirements or not. This activity results in the actual, expected and difference between their results. In simple words testing is executing a system in order to identify any gaps, errors or missing requirements in contrary to the actual desire or requirements.
Testing can be defined as “A process of analyzing a software item to detect the differences between existing and required conditions (that is defects/errors/bugs) and to evaluate the features of the software item”.
Who does Testing?It depends on the process and the associated stakeholders of
the project(s). In the IT industry, large companies have a team with responsibilities to evaluate the developed software in the context of the given requirements. Moreover, developers also conduct testing which is called Unit Testing. In most cases, following professionals are involved in testing of a system within their respective capacities:
Software Tester Software Developer Project Lead/Manager End User
Diff between V&V Verification Validation Are you building it right? Are you building the right thing? Ensure that the software system meets all the functionality.
Ensure that functionalities meet the intended behavior.
Verification takes place first and includes the checking for documentation, code etc.
Validation occurs after verification and mainly involves the checking of the overall product.
Done by developers. Done by Testers. Have static activities as it includes the reviews, walkthroughs, and inspections to verify that software is correct or not.
Have dynamic activities as it includes executing the software against the requirements.
It is an objective process and no subjective decision should be needed to verify the Software.
It is a subjective process and involves subjective decisions on how well the Software works.
QA QC TESTINGActivities which ensure the implementation of processes, procedures and standards in context to verification of developed software and intended requirements.
Activities which ensure the verification of developed software with respect to documented (or not in some cases) requirements.
Activities which ensure the identification of bugs/error/defects in the Software.
Focuses on processes and procedures rather then conducting actual testing on the system.
Focuses on actual testing by executing Software with intend to identify bug/defect through implementation of procedures and process.
Focuses on actual testing.
Process oriented activities.
Product oriented activities.
Product oriented activities.
Preventive activities It is a corrective process.
It is a preventive process
It is a subset of Software Test Life Cycle (STLC)
QC can be considered as the subset of Quality Assurance.
Testing is the subset of Quality Control.
Diff between QA,QC & TESTING
Diff between Testing & Debugging
Testing: It involves the identification of bug/error/defect in the software without correcting it. Normally professionals with a Quality Assurance background are involved in the identification of bugs. Testing is performed in the testing phase.
Debugging: It involves identifying, isolating and fixing the problems/bug. Developers who code the software conduct debugging upon encountering an error in the code. Debugging is the part of White box or Unit Testing. Debugging can be performed in the development phase while conducting Unit Testing or in phases while fixing the reported bugs.
Testing TypesManual Testing
This type includes the testing of the Software manually i.e. without using any automated tool or any script. In this type the tester takes over the role of an end user and test the Software to identify any un-expected behavior or bug. There are different stages for manual testing like unit testing, Integration testing, System testing and User Acceptance testing.
Testers use test plan, test cases or test scenarios to test the Software to ensure the completeness of testing. Manual testing also includes exploratory testing as testers explore the software to identify errors in it.
Testing TypesAutomation Testing
Automation testing which is also known as “Test Automation”, is when the tester writes scripts and uses another software to test the software. This process involves automation of a manual process. Automation Testing is used to re-run the test scenarios that were performed manually, quickly and repeatedly.
Tools are, Selenium (Functional, Database, Security, Performance & Web service
Testing)QTP (Functional, Database, Security, Performance & Web service
Testing)Load Runner (Stress & Load Testing)SoapUI (JSON & XML Web Service Testing)
Testing MethodsS.no Black Box Testing Gray Box Testing White Box Testing
1 The Internal Workings of an application are not required to be known
Somewhat knowledge of the internal workings are known
Tester has full knowledge of the Internal workings of the application
2 Also known as closed box testing, data driven testing and functional testing
Another term for grey box testing is translucent testing as the tester has limited knowledge of the insides of the application
Also known as clear box testing, structural testing or code based testing
3 Performed by end users and also by testers and developers
Performed by end users and also by testers and developers
Normally done by testers and developers
4 Testing is based on external expectations -Internal behavior of the application is unknown
Testing is done on the basis of high level database diagrams and data flow diagrams
Internal workings are fully known and the tester can design test data accordingly
5 This is the least time consuming and exhaustive
Partly time consuming and exhaustive
The most exhaustive and time consuming type of testing
6 Not suited to algorithm testing
Not suited to algorithm testing
Suited for algorithm testing
7 This can only be done by trial and error method
Data domains and Internal boundaries can be tested, if known
Data domains and Internal boundaries can be better tested
Introduction to SDLC
What is SDLC?
The software development life cycle (SDLC) is the entire process of formal, logical steps taken to develop a software product.
Levels of SDLC
Requirements GatheringSystems DesignCode GenerationTestingMaintenance/Evolution
Waterfall ModelWaterfall ModelThe waterfall model derives its name due to the cascading
effect from one phase to the other as is illustrated in Figure. In this model each phase well defined starting and ending point, with identifiable deliveries to the next phase.
Prototyping Model
Prototyping Model The Prototyping Model is a systems development method
(SDM) in which a prototype (an early approximation of a final system or product) is built, tested, and then reworked as necessary until an acceptable prototype is finally achieved from which the complete system or product can now be developed.
Incremental Model
This model combines the elements of the waterfall model with the iterative philosophy of prototyping. However, unlike prototyping the IM focuses on the delivery of an operational product at the end of each increment.
Spiral Model
The spiral model is a software development model combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts.
Agile ModelAgile software development is a group of
software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
Levels of Testing
Functional Testing. Non- functional Testing.
Functional Testing This is a type of black box testing that is based on the
specifications of the software that is to be tested. The application is tested by providing input and then the results are examined that need to conform to the functionality it was intended for. Functional Testing of the software is conducted on a complete, integrated system to evaluate the system's compliance with its specified requirements. There are five steps that are involved when testing an application for functionality.
Step I - The determination of the functionality that the intended application is meant to perform.
Step II - The creation of test data based on the specifications of the application.
Step III - The output based on the test data and the specifications of the application.
Step IV - The writing of Test Scenarios and the execution of test cases.
Steps V - The comparison of actual and expected results based on the executed test cases.
Functional Testing Types
Unit TestingIn Unit testing user is supposed to check each and every micro
function.All field level validations are expected to test at the stage of
testing.In most of the cases Developer will do this.Integration TestingThe primary objective of integration testing is to discover errors in
the interfaces between Modules/Sub-Systems (Host & Client Interfaces).
Minimizing the errors which include internal and external Interface errors
Types of Integration TestingTop-Down ApproachBottom-Up Approach
Functional Testing TypesSystem TestingThe primary objective of system testing is to discover errors when
the system is tested as a hole.System testing is also called as End-End Testing.User is expected to test from Login-To-Logout by covering various
business functionalities.Acceptance TestingThe primary objective of acceptance testing is to get the
acceptance from the client.Testing the system behavior against customer’s requirements Customers undertake typical tasks to check their requirements Done at the customer’s premises on the user environment
Types of Acceptance Testing:Alpha TestingBeta Testing
Non-Functional Testing TypesPerformance TestingPrimary objective of the performance testing is “to demonstrate the
system works functionally as per specifications with in given response time on a production sized database.
Types of Performance Testing:Load TestingStress TestingLoad TestingEstimating the design capacity of the system within the resources
limitApproach is Load ProfileStress TestingEstimating the breakdown point of the system beyond the resources
limit.Repeatedly working on the same functionality
Non-Functional Testing TypesUsability TestingTo test the Easiness and User-friendliness of the system.Reliability TestingReliability is considered as the probability of failure-free operation
for a specified time in a specified environment for a given purpose To find Mean Time between failure/time available under specific load
pattern. Mean time for recovery.Regression Testing• Objective is to check the new functionalities has incorporated
correctly with out failing the existing functionalities.• RAD – In case of Rapid Application development Regression Test plays
a vital role as the total development happens in bits and pieces.• Testing the code problems have been fixed correctly or not.
Non-Functional Testing Types
Security TestingTesting how well the system protects against unauthorized internal
or external access.Verify how easily a system is subject to security violations under
different conditions and environmentsDuring Security testing, password cracking, unauthorized entry into
the software, network security are all taken into consideration.
STLC- Software Testing Life Cycle
Practical:
WebsiteWeb ApplicationMobile Application
Ex Web Application: Facebook (login, Dashboard, Messages, Profile, Settings functionalities)
Sample Websites