Software Testing and Maintenance Testing Strategies Black Box Testing, also known as Behavioral Testing, is a software testing method in which the internal structure/ design/ implementation of the item being tested is not known to the tester. These tests can be functional or non-functional, though usually functional. This method is named so because the software program, in the eyes of the tester, is like a black box; inside which one cannot see. This method attempts to find errors in the following categories: Incorrect or missing functions Interface errors Errors in data structures or external database access Behavior or performance errors Initialization and termination errors For Example: A tester, without knowledge of the internal structures of a website, tests the web pages by using a browser; providing inputs (clicks, keystrokes) and verifying the outputs against the expected outcome. Black Box Testing, method is applicable to the following levels of software testing: Integration Testing System Testing Acceptance Testing The higher the level, the bigger and complex, the Black Box Testing method becomes.
Following are some techniques that can be used for designing black box tests. Equivalence partitioning: It is a software test design technique that involves dividing input values into valid and invalid partitions and selecting representative values from each partition as test data. Boundary Value Analysis: It is a software test design technique that involves determination of boundaries for input values and selecting values that are at the boundaries and just inside/ outside of the boundaries as test data. Cause Effect Graphing: It is a software test design technique that involves identifying the cases (input conditions) and effects (output conditions), producing a Cause-Effect Graph, and generating test cases accordingly. Advantages Tests are done from a user s point of view and will help in exposing discrepancies in the specifications. Tester need not know programming languages or how the software has been implemented. Tests can be conducted by a body independent from the developers, allowing for an objective perspective and the avoidance of developer-bias. Test cases can be designed as soon as the specifications are complete. Disadvantages Only a small number of possible inputs can be tested and many program paths will be left untested. Without clear specifications, which are the situation in many projects, test cases will be difficult to design. Tests can be redundant if the software designer/ developer has already run a test case. Ever wondered why a soothsayer closes the eyes when foretelling events? So is almost the case in Black Box Testing. White Box Testing is a software testing method in which the internal structure/ design/ implementation of the item being tested is known to the tester. The tester chooses inputs to exercise paths through the code and determines the appropriate outputs. Programming know-how and the implementation knowledge is essential. White box testing is testing beyond the user interface and dives into the details of a system. This method is named so because the software program, in the eyes of the tester, is like a white/ transparent box; inside which one clearly sees.
For example: A tester, usually a developer as well, studies the implementation code of a certain field on a webpage, determines all legal (valid and invalid) AND illegal inputs and verifies the outputs against the expected outcomes, which is also determined by studying the implementation code. White Box Testing method is applicable to the following levels of software testing: Unit Testing Integration Testing System Testing Advantages Testing can be commenced at an earlier stage. One need not wait for the GUI to be available. Testing is more thorough, with the possibility of covering most paths. Disadvantages Since tests can be very complex, highly skilled resources are required, with thorough knowledge of programming and implementation. Test script maintenance can be a burden if the implementation changes too frequently. Since this method of testing is closely tied with the application being testing, tools to cater to every kind of implementation/platform may not be readily available.
Testing Architecture Software Testing Life Cycle (STLC) defines the steps/ stages/ phases in testing of software. However, there are no fixed standards for STLC and it varies as per the organization. Software Testing Life Cycle comprises of the following phases:
Note that the STLC phases mentioned above do not necessarily have to be in the order as listed above; some phases can sometimes run in parallel. And, in extreme cases, the phases might also be reversed. Testing Tools Following are the examples of the Testing Tools: HP & Mercury Winrunner: HP Winrunner software was an automated functional GUI testing tool that allowed a user to record and play-back user interface (UI) interactions as test scripts. As a functional test suite, it worked with HP Quick Test Professional and supported enterprise quality assurance. It captured, verified and replayed user interactions automatically, in order to identify defects and determine whether business processes worked as designed. Quick Test Professional: HPE Unified Functional Testing software, formerly known as HP Quick Test Professional (QTP), provides functional and regression test automation for software applications and environments. HPE Unified Functional Testing can be used for enterprise quality assurance.hpe Unified Functional Testing supports keyword and scripting interfaces and features a graphical user interface. It uses the Visual Basic Scripting Edition (VBScript) scripting language to specify a test procedure, and to manipulate the objects and controls of the application under test. Test Director: Test Director is a; Mercury Interactive software, test management tool. It helps quality assurance personnel, plan and organize the testing process. With Test Director you can create a database of manual and automated tests, build test cycles, run tests, and report and track defects. You can also create reports and graphs to help review the progress of planning tests, running tests, and tracking defects before a software release. Quality Center: HP Quality Center is a quality management software solution offered by the HP Software Division of Hewlett Packard Enterprise, with many capabilities acquired from Mercury Interactive Corporation. HP Quality Center offers software quality assurance, including requirements management, test management and business process testing for IT and application environments. HP Quality Center is a component of the HP Application Lifecycle Management software solution set.
IBM Rational Rational Robot: Rational Robot is an automated functional, regression testing tool for automating Windows, Java, IE and ERP applications under windows platform. Rational Robot provides test cases for common objects such as menus, lists, bitmaps and specialized test cases for objects, specific to the development environment. Rational Performance Tester: Rational Performance Tester is a tool for automated performance testing of web and server based applications, from the Rational Software division of IBM. It allows users to create tests that mimic user transactions between an application, client and server. During test execution, these transactions are replicated in parallel to simulate a large transaction load on the server. Server response time measurements are collected to identify the presence and cause of any potential application bottlenecks. It is primarily used by Software Quality Assurance teams to perform automated software performance testing. Rational Functional Tester: Rational Functional Tester is a tool for automated testing of software applications from the Rational Software division of IBM. It allows users to create tests that mimic the actions and assessments of a human tester. It is primarily used by Software Quality Assurance teams to perform automated regression testing. Rational Test Manager: Rational Test Manager is a testing tool that encompasses all aspects of test analysis from test management to execution to reporting. It supports all kinds of testing from pure manual test approaches to various automated paradigms including unit testing, functional regression testing and performance testing. Borland/Segue/Micro Focus Silk Test: Silk Test is a tool for automated function and regression testing of enterprise applications. It was originally developed by Segue Software which was acquired by Borland in 2006. Borland was acquired by Micro Focus International in 2009. Silk Test is the industry s leading functional testing product for e-business applications, whether Window based, Web, Java, or traditional client/server-based. Silk Performer: Silk Performer is a software performance testing tool across web, mobile and enterprise applications. It was originally developed by Segue Software which was acquired by Borland in 2006. Borland was acquired by Micro Focus International in 2009. Silk Performer ensures that applications and server up times are maintained when faced with peak customer usage. Silk Performer allows identification of such problems using integrated diagnostics and trending reports.
Maintenance Although Software does not show aging or wear or tear with use, but with upcoming advanced technologies and changing user requirements, Software products get outdated or fail to support the changes in their environment. Maintenance can only happen efficiently if the earlier phases are done properly. Maintenance costs developers time, effort and money. Hence, Maintenance phase should be as efficient as possible. There are four major problems that can slow down the maintenance process: Unstructured Code Maintenance Programmers having insufficient knowledge of the system. Documentation not available or Out of date. The success of the Maintenance phase relies on these problems fixed earlier. Maintenance consists of four parts: Corrective Maintenance Adaptive Maintenance Perfective Maintenance Preventive Maintenance Corrective Maintenance: Corrective Maintenance deals with the repair of faults or defects found. A defect can result from design error, coding error or logic error. Defects are also caused by data processing errors and system performance errors. All these errors sometimes called as residual errors or bugs, prevent the software from conforming to its agreed specification. The need for Corrective Maintenance is usually initiated by the bug reports drawn up by the end users. Adaptive Maintenance: It consists of adaptation of Software to the changing environment, such as hardware or operating system. The term environment refers to the totality of all conditions, which act from outside upon the system. The need for Adaptive Maintenance can be recognized only by monitoring the environment. Perfective Maintenance: This type of Maintenance is for accommodating, new or changed requirements of the users. Perfective Maintenance is concerned with functional enhancements to the system, activities to increase the system
performance or activities to enhance user interface. This is based on the premise that, as the software becomes useful; the users tend to experiment with new features, which are beyond the scope of, initial purpose of the developed Software. Preventive Maintenance: Here, activities intended at increasing system s maintainability, such as updating documentation, adding comments, improving the modular structure of the system, are executed. As a large program is continuously changed, its complexity increases; unless work is done to reduce or maintain it. This work is known as Preventive Change. The change is usually initiated from within the maintenance organization, with the intention of making programs easier to understand and also to, facilitate future maintenance work. Examples of Preventive Maintenance include: Restructuring code Optimizing code Updating documentation Risks in Software Maintenance Software Maintenance leads to correction and enhancements in software, but it also bears the major risk of partial or complete failure of the software. While correcting the residual errors in the software, modifications can, in-turn introduce new bugs, in other linked parts too. Detecting this needs rigorous testing of all the altered areas of the software and all its linked components. The cost, efforts and time consumption for these activities are usually very high, leading to high maintenance cost. Hence, initialization of any maintenance thread needs highly mature analysis, conclusive decisions, established management and prime technical expertise.
Defect Analysis A Software Defect or a Bug is a condition in a software product which does not meet a software requirement or end-user expectations. In other words, a defect is an error in coding or logic that causes a program to malfunction or to produce incorrect or unexpected results. In other words: Any deviation from the specification Anything that causes user dissatisfaction Incorrect output Software does not do that, what is intended from it Categories of Defects Defect categorization helps the software developers to prioritize their tasks. That means this kind of priority helps the developers, in fixing those defects first, that are highly crucial.
Examples of Defects User gives wrong or incomplete requirements Analyst interprets requirement incorrectly Requirements are not recorded correctly Incorrect Design Specification Incorrect Program Specification Errors in Coding Data entry errors Errors in testing i.e. falsely detect an error or fail to detect existing error Mistakes in error corrections Different Levels of Testing Unit Testing Unit Testing is a level of software testing where individual units/ components of a software are tested. The purpose is to validate, that each unit of the software performs as designed. A unit is the smallest testable part of software. It usually has one or a few inputs and usually a single output. In procedural programming a unit may be an individual program, function, procedure, etc. In object-oriented programming, the smallest unit is a method, which may belong to a base/ super class, abstract class or derived/ child class.
Integration Testing Integration Testing is a level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units. Test drivers and test stubs are used to assist in Integration Testing. System Testing System Testing is a level of the software testing where a complete and integrated software is tested. The purpose of this test is to evaluate the system s compliance with the specified requirements.
Acceptance Testing The purpose of this test is to evaluate the system s compliance with the business requirements and assess whether it is acceptable for delivery. Ref: (Click Here)