Software Development Life Cycle(SDLC):
SDLC is a conceptual model or process or set of activities step by step from gathering requirement to development including maintenance state so that software can develop with quality.
SDLC different stages are:
- Requirement phase
- Design phase
- Coding phase (Programming)
- Testing phase
- Release (Production)
- Maintenance(support)
Test Case:
Test case is a single input plus an expected result to verify one single functionality. Both input and expected result should be taken directly from FRS/Story.
Positive test case is a normal walk through of the application which is identically related to the functionality that is written in the Stories.
Ex: Story excepts date of birth field : MM/DD/YY, So enter 12/10/13.
Negative test case (N-Case) is done to verify all other unwanted input that is not accepted by the application. (“Abusing” the application and making sure application doesn’t crash but only displays a friendly “error” or “not allowed” message).
In N-CASES fields validations should be done by :
- Invalid Month (13)
- Invalid Day (32)
- Leap Year
- Different Data type ( symbols, letters, 0000)
- Leaving the field blank
- Length of Date entry.
- Case Sensitivity.
Defect Life Cycle:
When actual result is not the same as expected, is called Defect. During the Sprint or any other testing period QA creates bug report if QA find any bug and assign to developer according to Product Owner’s concern. Developers then fix the bugs and forward to QA. At that point QA should verify all bugs with status “Test in QA”. If bugs are fixed QA changes the status to “closed”. If bugs are not fixed QA changes status to “Re-Open”.
Black Box Testing:
Testing application or front end from the user point if view without looking the code. Black Box testing techniques:
a) Equivalence Partitioning (EP)
b) Boundary Value Analysis (BVA)
c) Decision Table Testing
d) State Transition Testing
e) Use Case Testing Etc…
Security Testing :
Security testing is basically to check that whether the application or the product is secured or not. Can anyone came tomorrow and hack the system or login the application without any authorization. It is a process to determine that an information system protects data and maintains functionality as intended.
Smoke Testing:
Smoke Testing is a kind of software testing performed after software build to ensure the critical functionalities of the application are working fine.It is executed before any detailed or regression testing. The purpose is to reject a badly broken application so that QA team does not waste time for installation and testing the application. Ex: High level positive Test or launches the application/modules successfully.
Sanity Testing:
This kind of testing usually performed after receiving a software build with minor changes in code or functionality to ensure the new functionality or bugs have been fixed.
Regression Testing:
Repeating the large number of same test cases on the new version to make sure nothing been broken any other part of the application after injecting the new codes or changes in functionalities.
Integration Testing:
It a test to check whether all the modules are combined together or not and working successfully as specified in the requirement document. Ex: In a banking application testing money transfer between Checking and Saving account.
System Testing:
Testing which is based on overall requirements specifications and it covers all combined parts of a system. It is also a black box type of testing.
Functional Testing:
Functionality testing is performed to verify that a software application performs and functions correctly according to design specifications. During functionality testing we check the core application functions, text input, menu functions and installation and setup on localized machines, etc.
Non Functional Testing:
In non-functional testing the quality characteristics of the component or system is tested. Non-functional refers to aspects of the software that may not be related to a specific function or user action such as scalability or security. Eg. How many people can log in at once? Here are few examples of non functional Testing:
- Usability testing
- Efficiency testing
- Documentation testing
- Load testing
- Performance testing
- Compatibility testing
- Security testing
- Scalability testing
- Volume testing
- Stress testing
Usability Testing:
In usability testing basically the testers tests the ease with which the user interfaces can be used. It tests that whether the application or the product built is user-friendly or not.
- Learnability: How easy is it for users to accomplish basic tasks the first time they encounter the design?
- Efficiency: How fast can experienced users accomplish tasks?
- Memorability: When users return to the design after a period of not using it, does the user remember enough to use it effectively the next time, or does the user have to start over again learning everything?
- Errors: How many errors do users make, how severe are these errors and how easily can they recover from the errors?
- Satisfaction: How much does the user like using the system?
User Accepting Testing:
UAT-User Acceptance Testing is also called Certification testing. In UAT you have to run all customer composed test cases and then send results directly to the customer for acceptance. This procedure is done on the final stages of the project.
Performance Testing:
It is a test to check the user’s response time of number of users using multiple scenarios of the same application at the same time.
Load Testing:
It is the process of putting demand on an application and measure it’s response and behavior as per both normal and peak load condition.
Stress Testing:
In this type of testing the application is tested against heavy load such as complex numerical values, large number of inputs, large number of queries which checks for stress about the application how it can handle in unusual condition.
Volume Testing:
Volume testing refers to testing a software application or the product with a certain amount of data. E.g., if we want to volume test our application with a specific database size, we need to expand our database to that size and then test the application’s performance on it.
Scalability Testing:
It is the testing of a software application for measuring its capability to scale up in terms of any of its non-functional capability like load supported, the number of transactions, the data volume etc
Compatibility Testing:
Compatibility testing is basically the testing of the application or the product built with the computing environment. It tests whether the application or the software product built is compatible with the hardware, operating system, database or other system software or not.
Retesting Vs Regression:
If a tester found a bug on a module (purchase)and posted. Once the bug is fixed, the tester needs to do Retesting to verify whether the bug related to that module (purchase) is fixed or not and also tester needs to do Regression Testing to test the dependency module (Finance) which depends on the Purchase module.
Trace-ability Matrix:
Interaction document between Epic/Story/requirements and test cases due to confirm test cases are according to requirements .
Documentation testing:
As per the IEEE Documentation describing plans for, or results of, the testing of a system or component, Types include test case specification, test incident report, test log, test plan, test procedure, test report. Hence the testing of all the above mentioned documents is known as documentation testing.
Localization (L10N) Testing: is the software testing process for checking the localized version of a product for that particular culture or local settings. The areas affected by localization testing are UI and content.
Globalization OR Internationalization (I18N) Testing: Is to ensure that application can function in any culture or local (language, territory). It is also called as Internationalization Testing.