Software Testing: 1. SDLC (Software Development Life Cycle) : It
Software Testing: 1. SDLC (Software Development Life Cycle) : It
Software Testing: 1. SDLC (Software Development Life Cycle) : It
a. Project Initiation: Begins when a sponsor identifies a need or an opportunity. Concept proposal is created. b. Requirement Management: Define the Scope and boundary of the proposal. Include documents such as BRS, SRS. It requires individuals/teams from client as well as service provider sides to get detailed and accurate requirements; often there has to be a lot of communication to and from to understand these requirements. Requirement gathering is the most crucial aspect as many times communication gaps arise in this phase and this leads to validation errors and bugs in the software program. c. Project Planning: Develop a Project Management plan and other planning documents. Provides the basis for acquiring the resources needed to achieve a solution. d. Project Design: In this stage, functions and operations are described in detail, including screen layouts, business rules, process diagrams and other documentation. The output of this stage will describe the new system as a collection of modules or subsystems. e. Coding: Converts a design into a complete Information System. It includes acquiring and installing systems, coding, compiling, and refining programs.
f.
Testing: This stage demonstrates that developed system conforms to requirements as specified in the Software or Functional Requirements Document. It is done by Quality Assurance and Software Testers.
g. Implementation & Maintenance: It includes implementation of the system into production environment. It also includes the tasks to operate and maintain information systems in a production environment.
2. Process Models:
a. Waterfall: The waterfall model is a sequential design process, often used in software development processes, in which progress is seen as flowing steadily downwards (like a waterfall) through the phases of Conception, Initiation, Analysis, Design, Construction, Testing, Production/Implementation and Maintenance.
b. Iterative: It is the heart of a cyclic software development process developed in response to the weaknesses of the waterfall model. It starts with an initial planning and ends with deployment with the cyclic interactions in between.
c. Prototype: It refers to the activity of creating prototypes of software applications, i.e., incomplete versions of the software program being developed. d. Spiral: It is an SDLC combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. It is also known as the spiral lifecycle model (or spiral development). This model of development combines the features of the prototyping model and the waterfall model.
e. V-model: It is considered an extension of the waterfall model. Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing.
6. STLC (Software Testing Life Cycle): Software testing life cycle identifies what test activities to
carry out and when (what is the best time) to accomplish those test activities. Even though testing differs between organizations, there is a testing life cycle.
a. Requirement/Test Plan: It is a document which contains the strategy that will be used to verify and ensure that a product or system meets its design specifications and other requirements. A test plan is usually prepared by or with significant input from Test Engineers. It generally contains: i. Scope of Testing (What to Test?) ii. Test Strategy (How to Test?) iii. Test Environment iv. Test Designing and Technologies to be used v. Risk and Risk Planning vi. Test Deliverables b. Test Design: It is the act of creating and writing test cases/suites for testing software. c. Test Execution: In this stage we execute the Test Cases written/designed earlier. d. Test Result: Here we collect the results of Test executions. e. Result Analysis: The Test Results Analysis is an analysis of the results of executed tests. f. Final Report
7. Stages of Testing:
a. Unit Testing: It is a method by which individual units of source code are tested to determine if they are fit for use. A unit is the smallest testable part of an application. Generally, it is performed by developers. b. Integration Testing: Objective of Integration testing is to make sure that the interaction of two or more components produces results that satisfy functional requirement. In integration testing, test cases are developed with the express purpose of exercising the interface between the components. i. Incremental Integration Testing 1. Top-Down Testing: It is an approach to integrated testing where the top integrated modules are tested and the branch of the module is tested step by step until the end of the related module. 2. Bottom-Up Testing: It is an approach to integrated testing where the lowest level components are tested first, then used to facilitate the testing of higher level components. The process is repeated until the component at the top of the hierarchy is tested. 3. Sandwich Testing: It is an approach to combine top down testing with bottom up testing. ii. Non-Incremental Integration Testing 1. Big Bang Testing: In this approach, all or most of the developed modules are coupled together to forms a complete software system or major part of the system and then used for integration testing. The Big Bang method is very effective for saving time in the integration testing process. However, if the test cases and their results are not recorded properly, the entire integration process will be more complicated and may prevent the testing team from achieving the goal of integration testing. c. System Testing: It is probably the most important phase of complete testing cycle. This phase is started after the completion of other phases like Unit, Component and Integration testing. During the System Testing phase, non functional testing also comes in to picture and performance, load, stress, scalability all these types of testing are performed in this phase.
By Definition, System Testing is conducted on the complete integrated system and on a replicated production environment. System Testing also evaluates that system compliance with specific functional and non functional requirements both. Smoke Testing is considered as the entry criteria for the System testing, whereas End to End testing is considered as the exit criteria. Some important types of System Testing are: i. Usability Testing: Testing the user friendliness of application. ii. GUI Testing: Testing the look and feel of application. iii. Performance: Testing the response time of the application for a particular workload. iv. Load: It is usually conducted to understand the behavior of the application under a specific expected load. This load can be the expected concurrent number of users on the application performing a specific number of transactions within the set duration. v. Soak/Endurance: This testing is done to check the system behavior or ability to run for a long period of time under a given (maximum/minimum) load or tolerance. vi. Stress: It is normally used to understand the upper limits of capacity within the application landscape. This kind of test is done to determine the application's robustness in terms of extreme load and helps application administrators to determine if the application will perform sufficiently if the current load goes well above the expected maximum. Here we determine the stress point of an application. vii. Volume: Volume testing refers to testing a software application with a certain amount of data. viii. Compatibility/Configuration: Testing the applications compatibility with different Hardware and Software configurations. ix. Fail-Over Recovery: It is the activity of testing where we check that how well an application is able to recover from crashes, hardware failures and other similar problems.
x.
Security Testing: It is a process to determine that an information system protects data and maintains functionality as intended.
xi. Scalability Testing: It is a testing process to determine the maximum number of users or maximum amount of data an application can handle without degrading its performance. xii. Smoke/Sanity Testing: Smoke test determines whether the program launches and whether its interfaces are accessible and responsive. If the smoke test fails, it is impossible to conduct a sanity test. In contrast, the ideal sanity test exercises the smallest subset of application functions needed to determine whether the application logic is generally functional and correct. If the sanity test fails, it is not reasonable to attempt more rigorous testing. Both sanity tests and smoke tests are ways to avoid wasting time and effort by quickly determining whether an application is too flawed to merit any rigorous testing. Smoke testing is also called as Build verification testing. It is also defined as the horizontal testing of the application where the particular scenario is taken in such a manner that it traverse through all the module of an application. Sanity testing is referred as vertical testing, where a single module is taken and we travel and test through its minute atomic functionality.
xiii. Globalization/Cross Browser Testing: It is mainly performed for web applications where we test the functionality of the application with various browsers. xiv. Installation/Un-installation Testing: It is a kind of quality assurance work that focuses on what customers will need to do to install and set up the new software successfully. The testing process may involve full, partial or upgrades install/uninstall processes. xv. Retesting/Regression Testing: It is done to ensure that a change in existing functionality did not introduce new faults. xvi. Ad-hoc Testing: Ad hoc testing is a commonly used term for software testing which is performed without planning and documentation. The tests are intended to be run only once, unless a defect is discovered. It is the least formal test method and generally performed by experienced Test Engineers. As such, it has been criticized because it is not structured and hence defects found using this method may be harder to reproduce (since there are no written test cases).
xvii. End to End Testing: It is the last phase of the System Testing which has to pass in order to enter the User acceptance testing. d. UAT Testing: User Acceptance Testing is the final testing stage before rolling out the application. It is done using real world scenarios and perceptions relevant to the end users. i. Alpha Testing: In this stage of testing, the execution of application will happen by testers or business analyst in the presence of client where client will be the spectator. ii. Beta Testing: It is carried out after Alpha Testing is successfully over. The application is released to the client side and it is tested by the client where tester or business analyst will be spectator. If a bug is found out at the client side then it is the typical example of Defect Leakage.