3. Functional Testing Types
→ functional requirement → a requirement that specifies a function that a system or component must be
able to perform
→ WHAT the product does
Types:
1. Unit testing
2. Integration testing
3. System Testing
4. Acceptance Testing (UAT)
5. Smoke Testing
6. Sanity Testing
7. Regression Testing
8. Alpha Testing
9. Beta Testing
4. Non-functional Testing Types
→ nonfunctional requirement → requirement that specifies the system’s quality characteristics or attributes
→ HOW WELL the system behaves
“Measure what is measurable, and make measurable what is not so. “ - Galileo Galilei
Types:
1. Usability
2. Security
3. Efficiency → Performance
- Load
- Endurance
- Volume
- Stress
- Spike
- Scalability
4. Portability
5. Internationalization
6. Localization
7. Installation
8. Migration
5. Functional Vs. Non-Functional Testing
Functional Testing Non-Functional Testing
→ performed using the functional specification
provided by the client and verifies the system
against the functional requirements.
→ checks the performance, reliability,
scalability and other non-functional aspects of
the software system.
Manual testing or automation tools can be used
Business requirements are the inputs to
functional testing
Performance parameters like speed, scalability
are inputs to non-functional testing.
→ describes what the product does → describes how good the product behaves
→ is based on client requirements → is based on client expectations
7. 1. Unit Testing
→ individual modules are tested to determine if there are any issues, to isolate each unit of the system to identify,
analyze and fix the defects. Individual software modules are integrated logically and tested as a group.
WHEN: after module is coded
WHO: developer
METHOD: white box techniques
Eg.
- Check whenever the login functionality/ module works
Module
Login
8. 2. Integration Testing
→ is a level in software testing in which unit tested individual software modules are
combined and tested as a whole. The purpose of integration testing is to verify the
functional, performance, and reliability between the modules that are integrated.
FOCUS: on the integrated interfaces and the data flow between this interfaces and
modules
WHEN: after module testing (unit testing)
WHO: Developer and Tester
METHODS: White Box and Black Box techniques
Eg.
- Check the interface link between the Login module to email and Mailbox module
- Check the interface link between the Mailbox and Delete Mails Module
Module
Login
Module
Mailbox
9. 3. System Testing
→ the complete testing of a fully integrated application. The purpose of
this test is to evaluate the system’s compliance with the specified
requirements.
WHEN: after integration testing
WHO: Developer and Tester
METHOD: Black Box Techniques
Eg.
- If the site launches properly with all the relevant pages, features
and logo
- If the user can register/login to the site
- If the site launches properly in all major browsers and their latest
versions
- If session timeout is implemented and working as expected
Module
Login
Module
Mailbox
Module
Create Emails
Module
Delete Emails
10. 4. User Acceptance Testing
→ is a level of the software testing where a system is tested for acceptability. The purpose of this test is to evaluate
the system’s compliance with the business requirements and assess whether it is acceptable for delivery.
WHEN: after system testing
WHO: Users and Customer Product team
METHOD: Black Box Techniques
→ Alpha and Beta testing
Module
Login
Module
Mailbox
Module
Create Emails
Module
Delete Emails
11. 5. Smoke Testing
→ is performed to ascertain that the critical functionalities of the program is working fine
→ the purpose is to verify the "stability" of the system in order to proceed with more rigorous testing
WHEN: after new functionality is added or fixes or done (new builds) - unstable builds
WHO: Developer and Tester
Eg.
- If the user can access the software application
- If the user can log in
- If the user can navigate through the modules
- If the GUI is responsive
12. 6. Sanity Testing
→ performed after receiving a software build, with minor changes in code, or functionality,
to ascertain that the bugs have been fixed and no further issues are introduced due to
these changes
→ follows narrow and deep approach with detailed testing of some limited features.
→ to check the planned functionality is working as expected, instead of doing the whole
regression testing the Sanity testing is performed.
WHEN: minor changes - stable builds
WHO: Developer and Tester
Module
Login
updates/
changes
14. 7. Regression Testing
→ is performed to verify that the defect fixes made to the software works as expected and does not break the
existing functionality.
→ Purpose to make sure that new code changes should not have side effects on the existing functionalities
WHEN:
● Change in requirements and code is modified according to the requirement
● New feature is added to the software
● Defect fixing
● Performance issue fix
WHO: Developer and Tester
Techniques:
- Complete regression - Run entire regression suite
- Regression test selection
- Prioritized regression
15.
16. 8. Alpha Testing
→ is a type of acceptance testing; performed to identify all possible issues/bugs before releasing the
product to everyday users or public.
→ Improve the quality of the product and ensure beta readiness
→ performed at developer's site
WHEN: Toward the end of a development process when the product is in a near fully-usable state.
WHO: Tester, Developers and maybe other internal employees of the organization
HOW: Black box techniques
17. 9. Beta Testing
→ Improve the quality of the product, integrate customer input on the complete product, and ensure release
readiness; is performed by "real users" of the software application in a "real environment" and can be
considered as a form of external user acceptance testing.
→ is performed at client location or end user of the product
WHEN: After alpha testing, just prior to launch, sometimes ending within weeks or even days of final
release.
WHO: Tested in the “real world” with “real customers”
HOW: Black box techniques
20. Usability Testing
→ a way to see how easy the application is to use by real users
→ user centered interaction to evaluate a product from users perspective
Usability: the capability of the software product to be understood, learned, used and attractive
to the user, when used under specified conditions.
Components:
● Learnability - How easy is it for users to accomplish basic tasks the first time?
● Efficiency - How fast can experienced users accomplish tasks?
● Memorability - Does the user remember enough to use it effectively the next time?
● Satisfaction - How much does the user like using the system?
● Errors - How many errors do users make, how severe are these errors and how easily
can they recover from the errors?
Eg.
- Test how easy a user can navigate through the app main flow
- How easy can a user do certain actions - How intuitive the functionality is
- We check how easy it is for him/her to find all the information he/she needs.
21. Performance Testing
→ determine the system parameters in terms of responsiveness and
stability
PERFORMANCE TESTING = how fast & stable is the system?
OBJECTIVE IS TO FIND THE BOTTLENECK IN THE SYSTEM
Eg.
- Editing a very large document for testing of word processor
- Continuously reading and writing data into hard disk.
- Testing of mail server by accessing thousands of mailboxes
- Running multiple applications simultaneously on server.
- Testing database response time by sending complex queries
for processing
Load
Testing
Stress
Testing
Capacity
or Volume
Testing
Soak or
Endurance
Testing
Spike
Testing
22. Security Testing
→ determine if an information system protects data and maintains functionality as intended.
→ Goal → is to identify the threats in the system and measure its potential vulnerabilities.
Eg.
● Log into the web application. Log out of the web application.
Click the BACK button of the browser (Check if you are asked to log in again)
● For financial sites, Browser back button should not work
● Cookies / session time
● Password (check for hard coded data, should be encrypted, etc)
● Application/System should not allow invalid users
● URL Manipulation
● SQL injection
● XSS
Read more → Owasp Top 10 Vulnerabilities 2017 - https://www.owasp.org/index.php/Top_10_2017-Top_10
23. Portability Testing
→ ease with which a computer software component or application can be
moved from one environment to another
- Portability over different operating systems and versions
- Portability over different browser and browser versions
- Portability over different resolutions
- Portability over different mobile platforms
- Portability over hardware platforms (servers, network connectivity
devices, input devices, and output devices)
Eg.
- moving of any application from Windows 2000 to Windows 10
24. Localization & Internationalization
Testing
Localization → checking the localized version of a product for that particular
culture or locale settings. The areas affected by localization testing
are UI and content.
→ adapting internationalized software for a specific region or
language by adding locale-specific components and translating
text.
→ specific features for a specific locale
Internationalization → Can your code travel? When the time comes, will it be able to
handle different character sets? Will it be able to display a right to
left layout?
→ application so that it can potentially be adapted to various
languages and regions without engineering changes.
→ adapting product to be used everywhere
25. Localization & Internationalization
Testing
Eg.
- Untranslated messages in the original language may be left hard coded in the
source code
- Software may use a keyboard shortcut which has no function on the source
language keyboard layout
- Date and time formats (including numeric formats)
- Currency used
- Keyboard usage
- Sorting, aligning and collating data
- Colors schemes, symbols and icons
- Text and graphics which, in a given culture, may be viewed as sensitive or can be
misinterpreted.
- Diverse legal requirements
- Software may display images with text that wasn't localized
26. Migration Testing
→ is the process of transferring data between computer storage types or file
formats.
Eg.
Consider database migration for a online shop we should ensure following:
- All users were migrated successfully
- User accounts and associated orders
- Associated settings
- All products and associated items were migrated successfully
- Tables have the correct structure
- Constraints, keys
- Data formats are transferred correctly
- Content is not missing
- Content is not duplicated
- Edge cases
27. Installation Testing
→ performed to verify if the software has been installed with all the necessary
components and the application is working as expected.
Eg.
- Verify if there are any prerequisites that need to be met before installation
- Verify installation without/ with administration privileges
- Verify is .exe is executing smoothly
- Verify that user should able to install software from different location like over
network, online installation, installation from CD, etc
- Verify the GUI screen presented and if there’s any need of user input
- Verify the software installation on all required platforms
- Verify that after successful installation of software is it working as expected
- Verify that is user able to uninstall or repair the software application