Sunteți pe pagina 1din 25

Software Testing Concept and Methodologies Fundamentals of Software Testing Some of you are from IT background and some

of you are from Non-IT, however there is no difference in the work that you will be doing once you are assigned to a project. Software/Application?? Group of programs designed for end user using operating system and system utilities. A self contained program that performs well- defined set of tasks under user control. Programs, procedures, rules, and any associated documentation pertaining to the operation of a system.

Evolution of software product What is a software product? A software product is made up of software packages that are separately installable. Ex. Word, online sales application, What are the activities involved when you think about developing a project? Marketing Survey is done by marketing people in the market for various product and benchmark the product. MRS( Marketing requirement survey) is created at the end of the survey. Software Requirement Analysis This is also known as feasibility study. In this phase, the development team visits the customer and studies their system. For a few projects, technical feasibility is a significant concern: Is it technically feasible to build a Star Wars missile defense system? Is it technically feasible to build a natural language English-to-French translator? For most projects, however, feasibility depends on non-technical issues: Are the projects cost and schedule assumptions realistic? Does the project have an effective executive sponsor? Does the company have a business case for the software when the real costrather than the initial blue-sky, wishful-thinking cost is considered? Ex- Contractor A and B made flyover at Domlur but they did not exchange/discuss their blueprints hence there is a gap of around 6 mtrs. By the end of the feasibility study, the team furnishes a document that holds the different specific recommendations for the candidate system. It also includes the personnel assignments, costs, project schedule, and target dates. The requirements gathering process is intensified and focussed specially on software. To understand the nature of the program(s) to be built, the system engineer ("analyst") must understand the information

domain for the software, as well as required function, behavior, performance and interfacing. The essential purpose of this phase is to find the need and to define the problem that needs to be solved . System Analysis and Design In this phase, the software development process, the software's overall structure is defined. In terms of the client/server technology, the number of tiers needed for the package architecture, the database design, the data structure design etc are all defined in this phase. A software development model is created. Analysis and Design are very crucial in the whole development cycle. Any gap in the design phase could be very expensive to solve in the later stage of the software development. Much care is taken during this phase. The logical system of the product is developed in this phase. Code Generation The design must be translated into a machine-readable form. The code generation step performs this task. If the design is performed in a detailed manner, code generation can be accomplished without much complication. Programming tools like Compilers, Interpreters, Debuggers are used to generate the code. Different high level programming languages like C, C++, Pascal, Java are used for coding. With respect to the type of application, the right programming language is chosen. Formal reviews are conducted after every 500 lines of code e.g. Code Inspection and code walkthrough What happen if we send this software directly to production? What all issues we may face? If we send the software directly to production without thorough testing, system may fail at the initial stage itself, and even if it doesnt there may be some functionality which was not even thought of and tested. e.g. in online shopping system add products to cart and one page can hold description of ten carts only and then next page appears with additional product added to cart, but it was never tested, every time cart with less than 10 products was tested, hence testing of more than 10 products in a cart was skipped and leads to bad impression on customer. Will the customer again want to visit the site?? Off course NO What else a customer expect from any application other than perfect functionality? Look and Feel:- If the application is very dull, not very well presentable then also customer would not like to visit that site again. user-friendly:- If the application is not user friendly, instead of common language understood by people some other language is used or it is not easy to browse it, searching is not convenient etc then even though functionality of the application is perfect still this application would be a failure as the end- user is not at all satisfied.

Testing Once the code is generated, the software program testing begins. Different testing methodologies are available to unravel the bugs that were committed during the previous phases. Different testing tools and methodologies are already available. Some companies build their own testing tools that are tailor made for their own development operations. Maintenance Software will definitely undergo change once it is delivered to the customer. There are many reasons for the change. Change could happen because of some unexpected input values into the system. In addition, the changes in the system could directly affect the software operations. The software should be developed to accommodate changes that could happen during the post implementation period. Marketing Survey is done by marketing people for various product and benchmark the products. Create MRS( Marketing Requirement survey) Requirement analysis Feasibility study (social, economical etc) investigate the need for possible software automation in the given system. Domain expert Create URS ( User Requirement specification) Design software's overall structure is defined. Software architecture, interdependence of modules, interfaces, database etc is defined. System analyst Create SRS( High level design, Low level design etc) Code Generation design must be translated into a machine-readable form taking input as SRS. Done by Team of developers. Reviews after every 500 lines of code Code Inspection Code Walkthrough Testing New/patched build is tested by Test engineers for stability of the application. Maintainence Software is maintained due to changes ( unexpected values into the system)

Software development life cycle

Requirement Analysis High level design

Review/Test

Operational Testing Integration Testing

Detailed Specifications

Unit Testing

Coding
Requirement analysis:As we were talking about feasibility study, which also includes working in team, work cohesively with other people engaged in the similar or other activities. Eg. The flyover that is being constructed at Domlur airport. Contract was given to 2 contractors, they started constructing flyover without exchanging their blue prints, result was that once they finished their part of flyover there was a gap of almost 6 mtrs in height. Had they have exchanged their blueprints they would have constructed it much earlier and without any disruption and disturbance and loss of money and effort. Now they have to do some workaround as it has to be completed somehow Why these situations occur??? Majorly due to lack of proper testing. Overconfidence Even the software developed by best of the developers may fail. It is not only the system that is being developed is tested but the system with which our product is interfaced that is also tested for interfacing not the product as a whole. System An inter-related set of components, with identifiable boundaries, working together for some purpose. Analysis The process of identifying requirements, current problems, constraints ,Opportunities for improvement , timelines and Resources costs .

Design The business of finding a way to meet the functional requirements within the specified constraints using the available technology Software Development life cycle Phases or stages of a project from inception through completion and delivery of the final product and maintenance too! As per IEEE Standards, SDLC broadly consist of 3 phases: Definition Development Maintainence Definition Phase Focuses on WHAT What information to be processed? What functions and performances are desired? What interfaces are to be established? What design constraints exists? What validation criteria are required to define a success system? Development Phase Focuses on How the database should be designed ? How the software architecture to be designed ? How the design will be translated in to a code ? How testing will be performed ? Three specific steps in Development Phase are: a. Design b. Coding c. Testing (ignored due to lack of time, due time to market, additional cost involved, lack of testing requirement understanding etc.) ) Maintenance Phase Maintainability is defined as the ease with which software can be understood, corrected, adapted and enhanced Maintenance phase focuses on CHANGE that is associated with Error correction Adaptation required as the software environment evolves Enhancements brought about by changing customer requirements Reengineering carried out for performance improvements SDLC Phases

Identify Problems/Objectives Determine information Requirements Analyze System needs Design the recommended system Develop and Document software Testing the System Implementation and maintaining the system

SDLC Phases : Requirement Identification & Analysis Phase Request for Proposal Proposal Negotiation Contract User Requirement Specification Software Requirement Specification Software Requirement Specifications IEEE 830 : Software Requirement Specification is a means of translating the ideas in the minds of the clients(the inputs) into a set of formal document (the output) of the requirement phase The Role Bridge the communication gap between the client the user and the developer SDLC Phases- Design High Level Design HLD Document contains items in a macro level List of modules and a brief description of each Brief functionality of each module Interface relationship among modules Dependencies between modules Database tables identified with key elements Overall architecture diagrams along with technology details Low Level Design Detailed functional logic of the module, in pseudo code Database tables, with all elements, including their type and size All interface details All dependency issues

Error MSG listing Complete input and output format of a module

HLD and LLD phases put together called Design phase SDLC Phases `Code Generation o design must be translated into a machine-readable form taking input as SRS. o Done by Team of developers. o Reviews after every 500 lines of code Code Inspection Code Walkthrough Testing New/patched build is tested by Test engineers for stability of the application. Maintainence Software is maintained due to changes ( unexpected values into the system) Get Started with Testing !!!!!!! What is testing? We Test !! We Test !! Why? Testing Defined Is Product Successful Product Success criteria Testability Test factors

As we have talked about that we cannot launch any product successfully without testing. Even the product designed by best of the best developers needs to be tested and verified under various circumstances. The U.S. space shuttle Columbia with a seven-member crew, disintegrated in flames over central Texas shortly before it was scheduled to land at Cape Canaversal in Florida. On February 1, 2003, at an altitude of 63 kilometers and a velocity of 20,000 km/hr, Columbia disintegrated killing 7 astronauts. Columbia was designed and developed by most of the intelligent people employed in NASA. And the product was tested very well before its launch, still it failed leading to disaster and taking lives of 7 best astronauts that includes Kalpana Chawla from India. The product failed not because it was not tested well but it could have been tested more to avoid this disaster. Hence testing is very vital in all application/products however more aggressive where lives are involved for e.g medical equipments, space shuttles etc. What is Testing?

process used to help identify the correctness, completeness and quality of developed computer software. Find out difference between actual and expected behavior. The process of exercising software to verify that it satisfies specified requirements of end user and to detect errors The process of revealing that an artifact fails to satisfy a set of requirements What Is Software Testing? Software testing is a process used to help identify the correctness, completeness and quality of developed computer software. With that in mind, testing can never completely establish the correctness of computer software. Only the process of formal verification can prove that there are no defects. What is the expected behavior of the system? Testing is to check if there is no difference between actual output and expected output. It is to put software under various test to check that it satisfies some requirements of end user/Client and hence detecting errors if it fails to satisfy a set of requirements.

What Is Software Testing? Software testing is a process used to help identify the correctness, completeness and quality of developed computer software. With that in mind, testing can never completely establish the correctness of computer software. Only the process of formal verification can prove that there are no defects. What is the expected behavior of the system? Testing is to check if there is no difference between actual output and expected output. It is to put software under various test to check that it satisfies some requirements of end user/Client and hence detecting errors if it fails to satisfy a set of requirements. Testing is to establish confidence that a system does what it is supposed to do and even if it misbehaves it should not crash, it should do it decently. It is to confirm that system performs its intended functions correctly, moreover testing does not guarantee bug free product and good testing cannot be a substitute for good programming ex. If I do a very poor programming assuming that if there are any bugs my testers would find it and I would fix them later. This idea would take more time plus more effort in debugging those many number of bugs and in all the cost would be much higher than it would have been if the code has been developed effectively. Testing is not a debugging or preventing process, it is only to ensure that within an application I have found/detect these many number of bugs and rest debugging/fixing of bugs is done by developers. It improves quality and identify risks as well. We Test !! We Test !! Why Detect programming errors - programmers, like anyone else, can make mistakes. To catch bugs/defect/errors. To check program against specifications

Cost of debugging is higher after release Client/end user should not find bugs Some bugs are easier to find in testing Challenge to release a bug-free product. Verifying Documentation. To get adequate trust and confidence on the product. To meet organizational goals Like meeting requirements, satisfied customers, improved market share, Zero Defects etc Since the software can perform 100000 correct operations per second, it has the same ability to perform 100000 wrong operations per second, if not tested properly. Ensuring that system is ready for use Understanding limits of performance. Learning what a system is not able to do Evaluating capabilities of system

As we were discussing about the need of software testing hence we test our software to :Detect programming errors:- Even though we have best developers developing the product still there may be flaws somewhere due to misconception, due to lack of understanding in integrating modules of 2 great developers. Most of the time developers think that their code is perfect, it cannot have bugs and thats where the problem is. They think that finding bugs in their code means that some one is proving them inefficient. Hence we test code not to prove a developer inefficient but to find bug in code not in developer. Testing at earlier stage is much cheaper than testing at later stage. If Client find bugs which were uncovered earlier then we loses credibility and may lose business as well. There are several functionality related that occur in real life scenarios related only so while testing at customer site during beta testing we can uncover these defects there and then. To release a bug free product seems to be a dream yet to be fulfilled, hence it is a real challenge to release a product that is bug-free. Testing defined !! Def-1 Process of establishing confidence that a program or system does what it is supposed to. Def-2 Process of exercising or evaluating a system or system component by manual or automated means to verify that it satisfies specified requirement (IEEE 83a) Def-3 Testing is a process of executing a program with the intent of finding errors (Myers)

Def-4 Testing is any activity aimed at evaluating an attribute or capability of a program or system and determining that it meets its required results.

Testing is defined in a number of ways by various veterans. Of course, none of these definitions claims that testing shows that software is free from defects. Testing can show the presence, but not the absence of problems. Is Product successful ??? When Client/Customer perceives it as value-added to his business. Timeliness of delivery of the product within budget and scope. The business perceives that the system satisfactorily addresses the true business goals. End user feels that look, feel, and navigation are easy. Team is prepared to support and maintain the delivered product. What is the criteria for a successful product? A product is successful only when it is adding any value to customer business, only if it increases its revenue, credibility in the market and so on. To develop a product we set a target time for completion and released to customer. If we can stick to that time without increasing budget and scope of the product then the product is successful. Using the developed product true business goals should be met else the product developed can be a failure leading to finance loss, customer satisfaction loss, and loss of business further from that client as well as associates. Look and feel should be accepted by user who will be finally using that product. Product Success Criteria Functionality Usability Likeability Configurability Maintainability Interoperability Product Success Criteria (PSC) so as to address the following. These criteria, once arrived at the initial stage of the project, shall be the basis for strategy and planning. Functionality: The business perceives that the system satisfactorily addresses the true business goals. The system is functionally compliant. The system was delivered on time and within budget and scope.

Usability: The user perceives the system as value-added to his or her job and is easy to learn and use. Likeability: End user feels that look, feel, and navigation are easy. Configurability: All changes to project scope, schedule, and budget were handled under a well-defined and visible change control process. Maintainability: The operations staff is prepared to maintain and support the delivered system. Interoperability: The organizational interoperability groups perceive that the solution is consistent with interoperability and reusability standards and goals. Testability Operability Controllability Observability Understandability Suitability Stability Accessibility Navigability Editorial Continuity Scalability Context Sensitivity Structural Continuity Testability and Product Success Criteria Testability is the possible extent to which the software product under consideration can be evaluated to determineOperability: The better it works; the more efficiently it can be tested. Controllability: The better we can control it, the more the Software Testing can be automated & optimized Observability: What you see is what you test. Simplicity: The less there is to test, the more quickly we can test. Understandability: The more information we have, the smarter we will test.

Suitability: The more we know about the intended use of the system, the better we can organize our Software Testing to find important bugs Stability: The fewer the changes, the fewer the disruptions to Software Testing Accessibility: Web site shall be accessible when incorporating frames, JavaScript, Cascading Style Sheets, Dynamic HTML, and multimedia technology such as QuickTime or Flash. Navigability: Site's architecture is firmly represented by the visually designed interface for ease of motion within the site. Editorial Continuity: Ensure that users can easily move from page to page in a multipage section within your web site and still retain a sense of location. Scalability: Modular interface design structure to support major edits and visual design overhauls. Context Sensitivity: Interface reinforcing the content of the web site and enhances the overall brand presentation strategy. Structural Continuity: Ensuring that users are able to understand and utilize every component of the navigational system in order to move throughout the web site. Software Testing shall be aligned with software project and shall meet Test Factors Functionality (exterior Engineering (interior quality) quality) Correctness Reliability Usability Efficiency Testability Documentation Adaptability (future quality) Flexibility Reusability Maintainability

Integrity

Structure

Correctness

To claim that software is correct, we have to assure that the data entered, processed, and outputted is accurate and complete. We can achieve this through controlling data element across the entire transaction. This requires that: Well defined Functional specifications. Design conformance with user requirements. Program conformance to design specifications. Testing to ensure requirements are properly implemented. Availability of right programs and data in the released system. Proper management change requests Reliability This will ensure that the system will perform its intended function with the required precision over an extended period of time. This shall ensure: Establishing the system in operational environment to meet the expected level of accuracy and completeness. Designing and implementing process tolerance through the data integrity controls. Performing manual, regression, and functional tests to ensure proper functioning of the data integrity controls. Verification of the installation for system accuracy and completeness. Maintaining accuracy of system requirements and also, system updation. Ease of Use This will address effort required to learn, operate, prepare input for, and interpret output from the system. This test factor deals with the how quickly and easily the people interfacing with the application system will learn to use it. The points addressed here are: Defining the usability specifications for the application system. Design to optimize the usability related requirements Conformance of programs to the design in order to optimize the ease of use. Testing to ensure that the application is easy to use. Proper presentation and communication of usability instructions to appropriate individuals. Preserving usability as and when the system is maintained. File integrity This ensures appropriate storage and maintenance of data. This requires that: Defined file integrity requirements. Controls in design that ensure the integrity of the file. Proper implementation of specified file integrity controls. Proper testing to ensure proper functioning of the file integrity. Verification of file integrity to ensure delivery of right riles prior to system release. Preserving integrity of the files during the maintenance phase. Maintainability This factor addresses effort required to locate and fix an error in an operational system so that system operates smoothly. This addresses:

Specification of the desired level of maintainability of the system. Development of design and program to achieve the desired level of maintainability. Inspection of system to ensure that it is maintainable. Verifying system documentation for completeness. Maintainability is preserved as the system is updated.

Software Testing Life Cycle The development process must be iterative-- lets see how that works The traditional development process involves a long building phase after youve specifiedd the application. After the app is built, you move to a testing phase where you find bugs and fix them. Many people view testing as a washing machine that you clean your code with at the end of the development phase. STLC-V Model
Execute System Tests

Requireme nt Req. Review

Develop Acceptance Tests Review Acceptance tests

Design Design Review

Execute Integration tests Develop integration Tests Review Integration Tests Execute Unit Test Develop Unit Test Review Unit Test

Code Code Review

The responsibility for testing Unit Test is the responsibility of the Development Team System Testing is the responsibility of SQA User Acceptance Testing is the Responsibility of the User Representatives Team Technology Compliance Testing is the responsibility of the Systems Installation & Support Group.

STLC:- Activities Scope/Requirement Base line inventory Acceptance criteria Schedule Prioritization Test references Sign off req Plan Approach Process and Tools Methodology Delivery Models Risk Plan Project Overflow Quality Objectives Configuration Plan

Design Test Design Specifications Test Scenarios Test Cases Test Data Tool Development Execution Implement Stubs Test Data Feeders Batch Processes Execute Testing Collate Test Data Identify Bugs Defect Analysis Check Unexpected Behavior Identify defective application areas Identify erroneous test data Identify defect trends/patterns Test Approach

Test Process :- The project under development or incorporation of accepted changes in the project or project under maintenance which implemented changes, use the testing process. Based on the nature of the project, adequate testing shall be arrived at the project level. The Test Approach sets the scope of system testing the overall strategy to be adopted the activities to be completed the general resources required the methods and processes to be used to test the release. details the activities, dependencies and effort required to System Test

conduct the

Test approach will be based on the objectives set for testing Test approach will detail the way the testing to be carried out Types of testing to be done viz Unit, Integration and system testing the general resources required The method of testing viz Blackbox, White-box etc., Details of any automated testing to be done Details the activities, dependencies and effort required to conduct the System Test

Software Testing Life Cycle- Phases 1. Requirement Analysis 2. Prepare Test Plan 3. Test Case Designing 4. Test Case Execution 5. Bug Reporting, Analysis and Regression testing 6. Inspection and release 7. Client acceptance and support during acceptance 8. Test Summary analysis Requirement Analysis Objective The objective of Requirement Analysis is to ensure software quality by eradicating errors as earlier as possible in the developement process, as the errors noticed at the end of the software life cycle are more costly compared to that of early ones, and there by validating each of the Outputs. The objective can be acheived by three basic issues: Correctness Completeness

Consistency

Type of Requirement Functional Data Look and Feel Usability Performance Operational Maintainability Security Scalability Etc. Evaluating Requirements What Constitutes a good Requirement? Clear: Unambiguous terminology Concise: no unnecessary narrative or non-relevant facts Consistent requirements that are similar are stated in similar terms. Requirements do not conflict with each other. Complete all functionality needed to satisfy the goals of the system is specified to a level of detail sufficient for design to take place.

Requirement Analysis Difficulties in conducting requirement analysis Analyst not prepared Customer has no time/interest Incorrect customer personnel involved Insufficient time allotted in project schedule Prepare Test Plan- Activities Scope Analysis of project Document product purpose/definition Prepare product requirement document Develop risk assessment criteria Identify acceptance criteria Document Testing Strategies.

Define problem - reporting procedures Prepare Master Test Plan

Design-Activities Setup test environment Design Test Cases: Requirements-based and Code-based Test Cases Analyze if automation of any test cases is needed Execution- Activities Initial Testing, Detect and log Bugs Retesting after bug fixes Final Testing Implementation Setup database to track components of the automated testing system, i.e. reusable modules Bug Reporting, Analysis, and Regressing Testing Activities Detect Bugs by executing test cases Bug Reporting Analyze the Error/Defect/Bug Debugging the system Regression testing Inspection and Release-Activities Maintaining configuration of related work products Final Review of Testing Metrics to measure improvement Replication of Product Product Delivery Records Evaluate Test Effectiveness Client Acceptance Software Installation Provide Support during Acceptance Testing Analyze and Address the Error/Defect/Bug Track Changes and Maintenance Final Testing and Implementation Submission, client Sign-off Update respective Process Support during Acceptance-Activities Pre-Acceptance Test Support

Installing the software on the clients environment Providing training for using the software or maintaining the software Providing hot-fixes as and when required to make testing activity to continue Post Acceptance Test Support Bug Fixing

During acceptance lets see what do we mean by hot-Fixes. In acceptance phase product is installed and executed in users environment. There may be some failure to software might be due to some configuration files mismatch or some other interface. When Bill Gates was giving Live demo for Microsoft windows new version suddenly a Unwanted popup appears and whole world was watching this demo, Bill did some changes to config files and it worked fine. This is termed as HOT_FIX( to make small changes to software to continue testing activity) Test Summary Analysis- Requirement Quantitative measurement and Analysis of Test Summary Evaluate Test Effectiveness Test Reporting o Report Faults (off-site testing) o Report Faults (on-site/ field testing) Testing Life Cycle - Team Structure An effective testing team includes a mixture of members who has o Testing expertise o Tools expertise o Database expertise o Domain/Technology expertise The testing team must be properly structured, with defined roles and responsibilities that allow the testers to perform their functions with minimal overlap. There should not be any uncertainty regarding which team member should perform which duties. The test manager will be facilitating any resources required for the testing team.

Testing Life Cycle - Roles & Responsibilities Clear Communication protocol should be defined with in the testing team to ensure proper understanding of roles and responsibilities. The roles chart should contain both on-site and off-shore team members. Test Manager Single point contact between Wipro onsite and offshore team Prepare the project plan Test Management

Test Planning Interact with Wipro onsite lead, Client QA manager Team management Work allocation to the team Test coverage analysis Co-ordination with onsite for issue resolution. Monitoring the deliverables Verify readiness of the product for release through release review Obtain customer acceptance on the deliverables Performing risk analysis when required Reviews and status reporting Authorize intermediate deliverables and patch releases to customer.

Test Lead Resolves technical issues for the product group Provides direction to the team members Performs activities for the respective product group Review and Approve of Test Plan / Test cases Review Test Script / Code Approve completion of Integration testing Conduct System / Regression tests Ensure tests are conducted as per plan Reports status to the Offshore Test Manager Test Engineer Development of Test cases and Scripts Test Execution Result capturing and analysing Defect Reporting and Status reporting

Software Testing Phases Software Testing Phases Unit Testing Functional Testing Integration Testing System Testing Acceptance Testing Interface Testing Regression Testing Special Testing Unit Testing

Unit Testing is a verification effort on the smallest unit of the software design the software component or module. Why Unit Testing? Testing early for each component and prevent the defect from being carried forward to next stage. To ensure that the design specifications have been correctly implemented. Approach Uses the component-level design description as a guide. Important control paths are tested to uncover errors within the boundary of the module. Unit testing is white-box oriented, and this can be conducted in parallel for multiple components. the relative complexity of tests and uncovered errors are limited by the constraints scope established for unit testing. Unit Testing module interfaces are tested to ensure that the information properly flows into and out of the program unit under test. The local data structure is examined to ensure that data stored temporarily maintains its integrity during all steps in an algorithms execution. Boundary conditions are executed to ensure that the module operates properly at boundaries established to limit or restrict processing. All independent paths (basis paths) through the control structure are exercised to ensure that all statements in a module have been executed at least once All error handling paths are tested. Unit testing to uncover errors like Comparison of different data types Incorrect logical operators or precedence Expectation of equality when precision errors makes equality unlikely. Incorrect comparison of variables Improper or nonexistent loop termination Failure to exit when divergent iteration is encountered. Improperly modified loop variables, etc. Some of the Computational Errors uncovered while Unit Testing Misunderstood or incorrect arithmetic precedence Mixed mode operations Incorrect initialization Precision inaccuracy Incorrect symbolic representation of an expression

Potential errors while error handling is evaluated Error description is unintelligible Error notes does not correspond to error encountered Error condition causes system intervention prior to error handling Exception- condition processing is incorrect Error description does not provide enough information to assist in the location of the cause of error. Unit Testing Procedure Unit testing is normally considered as an adjunct to the coding step. Unit test case design begins ,once the component level design has been developed, reviewed and verified. A review of design information provides guidance for establishing test cases that are likely to uncover errors. Each test case should be coupled with a set of expected results. Unit Test Steps The Unit test criteria, the Unit test plan, and the test case specifications are defined. A code walkthrough for all new or changed programs or modules is conducted. Unit Test data is created, program or module testing is performed, and a Unit test report is written. Sign-offs to integration testing must be obtained, Sign-off can be provided by the lead programmer, project coordinator, or project administrator.

Step1. Unit test criteria is a narrative describing what will be done to verify that the program code operates properly and according to specifications. The unit test plan is doc that defines the process for testing the code, including descriptions and procedures for all tests and evaluations. These above items and test specifications are prepared before the program or module is coded. Step2. Code walk through is done to review to the requirements, design, and coding before the testing to ensure compliance to the IS standards. Step3. Unit test data are specific values or transactions that are created for the purpose of testing the code.Test data should be meticulously prepared so that a full range of data values and combinations are considered, and all instruction paths within the module are executed. The unit test report records the results and findings of the test and provides the basis for determining if the unit is ready for system testing. Unit Testing Example A Sample Source code

Eg: login.java check for syntactical error, variable usages, Coverage observed.

Functional Testing Functional Testing is a kind of black box testing because a programs internal structure is not considered. Give the inputs, check the outputs without concentrating on how the operations are performed by the system. When black box testing is conducted , the SRS plays a major role and the functionality is given the utmost importance.

Select test data to exercise each aspect of functionality identified in the programs requirements specifications Functional Testing of word processor calls for using each required feature of of the program at least once. Such features include editing, formatting, search etc Functional Testing Focus on system functions developed from the requirements Behavior testing Should know expected results test both valid and invalid input Unit test cases can be reused New end user oriented test cases have to be developed as well. Tests module against functional and non-functional specifications Specification used to derive test cases Do not look at module code (except to debug) Attempt to force behavior that doesn't match specification Problem how to select inputs that have a high probability of causing error User Interface This stage will also include Validation Testing which is intensive testing of the new Front end fields and screens. Windows GUI Standards; valid, invalid and limit data input; screen & field look and appearance, and overall consistency with the rest of the application.

Vertical First Testing: - When the complete set of functionality is taken for one module and tested it is called Vertical First testing.

Horizontal First Testing : - If a similar function is taken across all the modules and it is tested, it is called horizontal-first testing. Integration testing testing with the components put together. Why integration Testing ? Data can be lost across an interface. One module can have an inadvertent, adverse effect on another. Sub-functions, when combined, may not produce the desired major function. Individually acceptable imprecision may be magnified to unacceptable levels. Global data structures can create problems, and so on

Types of approaches- Top-Down

A 1 x y z 2

is an incremental approach to testing of the program structure. Modules are integrated by moving downward through the control hierarchy, beginning with the main control module, this could be done as depth- first or breadth-first manner. Type of Approaches- Bottom-Up

A 1 x y z 2

as the name implies, begins construction and testing with atomic modules i.e., from the components at the lowest levels in the program structure Integration testing- Example E.g.: Login.java and ConnectionPool.java Login class calls the ConnectionPool object , Integration testing identifies errors not observed while code Debugging or Reviews.

S-ar putea să vă placă și