28
Software Quality Assurance Lecture #8 By: Faraz Ahmed

Software Quality Assurance Lecture #8 By: Faraz Ahmed

Embed Size (px)

Citation preview

Page 1: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Software Quality Assurance

Lecture #8By: Faraz Ahmed

Page 2: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Contents

0Course Outline0Marks Distribution0Fundamentals of Quality Assurance0Discussion0Reference

Page 3: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Static Testing

0 Uses a checklist to identify whether standards are being followed.

0 Code is not actually run for this testing. Skimming of code is done.

0 Can occur in Coding, integrating and deploying.

0 Walkthroughs and inspections are types of static testing

Page 4: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Static Testing

0 Usually done to check completeness (verification aspect)

0Cost of bugs in this phase?

0List of Static testing tools can be found in wikipedia

0TASK #1: Show me how to use any one of the tools available for static testing.

Page 5: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Dynamic Testing

0 Involves actually running the software

0Part of the validation aspect

0Examples include Unit tests, Integration tests, System tests and acceptance tests.

Page 6: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Black box testing

0Takes an external perspective of the software

0Assumes that the complexities do not exist, and just test the system using inputs and checking the outputs.

Page 7: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Black box testing

0Should make use of randomly generated inputs.

0An input range should be provided by the developer.

0Extreme cases should be checked.

0Outliers should be checked for robustness.

0Stress and crash testing should also be performed.

Page 8: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Black box testing

0Also known as functional testing

0Examples are stress testing, recovery testing and user acceptance testing.

0Divided into two types: User required and User not required.

Page 9: Software Quality Assurance Lecture #8 By: Faraz Ahmed

BB where user not required!

0Functional Testing: the software is tested for the functional requirements.

0Stress Testing: The application is tested against heavy load such as complex numerical values, large number of inputs, large number of queries etc.

Page 10: Software Quality Assurance Lecture #8 By: Faraz Ahmed

BB where user not required!

0Functional Testing: the software is tested for the functional requirements.

0Stress Testing: The application is tested against heavy load such as complex numerical values, large number of inputs, large number of queries etc. while depriving the system of resources.

Page 11: Software Quality Assurance Lecture #8 By: Faraz Ahmed

BB where user not required!

0Load Testing : The application is tested against heavy loads (representative loads/ Maximum sustainable loads) or inputs such as testing of web sites in order to find out at what point the web-site/application fails or at what point its performance degrades.

Page 12: Software Quality Assurance Lecture #8 By: Faraz Ahmed

BB where user not required!

0Ad-hoc Testing: This type of testing is done without any formal Test Plan or Test Case creation. helps testers in learning the application prior starting with any other testing.

0Usability Testing

Page 13: Software Quality Assurance Lecture #8 By: Faraz Ahmed

BB where user not required!

0Smoke Testing: is done in order to check if the application is ready for further major testing and is working properly without failing up to least expected level.

0Recovery Testing: done in order to check how gracefully the application can recover against any type of crash or hardware failure etc.

Page 14: Software Quality Assurance Lecture #8 By: Faraz Ahmed

BB where users required!

0User Acceptance Testing: the software is handed over to the user in order to find out if the software meets the user expectations and works as it is expected to.

Page 15: Software Quality Assurance Lecture #8 By: Faraz Ahmed

BB where users required!

0Alpha Testing: the users are invited at the development center where they use the application and the developers note every particular input or action carried out by the user. Any type of abnormal behavior of the system is noted and rectified by the developers.

Page 16: Software Quality Assurance Lecture #8 By: Faraz Ahmed

BB where users required!

0Beta Testing: In this type of testing, the software is distributed as a beta version to the users and users test the application at their sites. As the users explore the software, in case if any exception/defect occurs that is reported to the developers.

0How are the defects reported?

Page 17: Software Quality Assurance Lecture #8 By: Faraz Ahmed

White box testing

0Knowledge of how the system is implemented.

0Analyses data flow, control flow, coding practices and exception handling.

0Focus on security testing and looking for vulnerabilities like sql injection

0A tester has to think like an attacker/hacker.

Page 18: Software Quality Assurance Lecture #8 By: Faraz Ahmed

White box testing

0TASK #2: What do you understand by Gray-box testing?

0Testing techniques: 0 Data-Flow Analysis0 Code-based fault injection0 Abuse cases (utilizing known attack patterns) 0 Code Coverage Analysis (eliminate risks such as trojan

horse)

Page 19: Software Quality Assurance Lecture #8 By: Faraz Ahmed

White box testing

0TASK #3: Explore a coverage analysis tool.

Page 20: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Unit Testing

0The goal of unit testing is to isolate each part of the program and show that the individual parts are correct

0Test driven development ?

Page 21: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Requirements Testing

0 If the requirements are wrong, there would be no outcome of testing the application.

0The quality gateway: as soon as we get a requirement, we outline its possible defects and try to gauge whether they would disrupt our design.

0Make the requirements measurable.

Page 22: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Quantifiable requirements

0Make the requirement quantifiable, so that the solution can be measured.

0Example might be the time it takes a page to load.

0Consider the question, what would it take to not meet the requirement?

Page 23: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Non-Quantifiable requirements

0We can convert these into quantifiables by going through what the client might mean from them.

0Consider the question, what would it take to not meet the requirement?

Page 24: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Regression Testing

0Regression testing : testing which seeks to uncover bugs. Regression bugs occur whenever software functionality that previously worked as desired, stops working or no longer works in the same way that was previously planned.

0Common methods of regression testing include re-running previously run tests

Page 25: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Regression Testing

0Local - changes introduce new bugs.

0Unmasked - changes unmask previously existing bugs.

0Remote - Changing one part breaks another part of the program

Page 26: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Error handling testing

0 It determines the ability of applications system to process the incorrect transactions properly

0Errors encompass all unexpected conditions.

0 In some system approx. 50% of programming effort will be devoted to handling error condition.

Page 27: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Manual testing

0To test the system more thoroughly

0There is no alternative to it.

Page 28: Software Quality Assurance Lecture #8 By: Faraz Ahmed

Quiz

0Why doesn’t the developer do the black box testing?