Software Development Chapter 4 Software Testing and Tools Testing ► Software testing involves a series of processes to verify that : The finished product meets the original specification The software is robust The software is reliable Testing can only find errors in a program, not prove there are none ► Testing should be systematic ► Test data needs to be planned and the test process needs to record a test log ► The actual test data selected depends on the test strategy used ► Test Strategies ► Recapping testing methods.. ► Module Testing, on all components Integration Testing, where the components function as an entity System Testing or Black Box Testing Acceptance Testing or Beta Testing, ensuring that the system is ready for operational use Software testing is a complex and expensive issue Test Approaches ► There are a number of different testing approaches: By scope By purpose By life-cycle phase Component testing Correctness testing Requirements testing Module testing Performance testing Design testing Integration testing Reliability testing Acceptance testing System testing Security testing Maintenance testing • Testing ‘by scope’ starts at the component level then proceeds through each phase until the final system is tested as a whole • Testing ‘by purpose’ entails the whole reason for testing. It makes sure the program is correct and runs to the original specification • Testing ‘by life-cycle’ phase include the final software development test, acceptance testing where the software is sold to the client Components ► ► ► ► Components are sometimes called units They are the building blocks of software applications They are defined as pieces of software such as sub-routines or procedures that can be compiled and executed on their own A component will be the work of a single programmer and they will also test the code at a basic, White Box, level Component Testing ► ► With White Box testing component code is seen and it is the workings of the code that are tested The component can be tested in Static or Dynamic mode In static mode the component does not require to be executed. A detailed catalogue of reviews and inspections is compiled for each module ► Inspections contain a precise framework for rigorously checking component documentation and code In dynamic testing the component program is executed using test values for normal, extreme and exceptional cases Modules ► ► ► ► Modules are a collection of dependant components or procedures designed to be part of the main program They are not complete programs in themselves, they can not run independently It often happens that a module becomes ready for testing before the main program. It is common practice to write a small program, called a Driver or Test-Harness to run the module and supply it with test data Driver programs are commercially available Stubs ► ► ► ► A stub is a module that has the appropriate interface but does not contain a lot of code It might contain no more than a line of code to display what the module will do when its complete The system as a whole is laid out using stubs to ensure that the overall structure is correct Stubs are then converted into fully functional modules Module Testing ► ► ► ► ► Modules are created and tested within their sub-systems When all modules have been tested the sub-system as a whole is tested then sub-systems are brought together and the whole program is tested At system level the type of testing is Black Box Testing Black box testing takes the program specification as the sole source of test cases One advantage of this is that developers who test a system can be different from those who create it Module Test Progression ► ► ► The testing process involves feedback Testing might indicate errors in a module which would need debugged and tested again The usual strategy is to test software twice The module is first tested within the company, this is Alpha Testing It is followed by Acceptance or Beta Testing Alpha Testing ► ► ► ► Alpha testing can be regarded as ‘Does the software work?’ This is the stage in the development cycle where the software is first able to run This testing takes place on the software developers premises Alpha testing is done for 2 reasons; To reassure the clients the software is working To find errors that can only be found in operational use ► ► Alpha testing is performed on an early version of the code, that might not have all intended functionality Alpha testing should be conducted with as much independence from the development team as possible Beta (Acceptance) Testing ► ► ► ► ► This is for the client to say ‘yes we will pay for the software’ Beta testing is the highest level of testing in the software development cycle and is done prior to commercial release It confirms that the program is as near to correct as possible The software is tested by independent users who log and report back to the development team, this process might be iterative if errors have to be corrected The functionality delivered in beta test releases might not be the final product Debugging ► ► ► ► ► ► A bug is a fault in a program that causes it to function abnormally Debugging is the process of locating and fixing errors Programs that help to do this are called debuggers Most software development tools offer debugging tools Using a compiler the first task of the debugging tool is to link the object code to source code to locate the error The part of the compiler responsible for this is the Link-Loader Debugging Tools ► ► With the debugging features activated a program will run slower, so it is only used when necessary Debugging tools usually take the form of: Dry Runs Trace Tools Watch Statements Break Points Dry Run ► ► ► ► ► Bugs can be difficult to locate and correct, the temptation is to tweak the code until it runs correctly, however this can lead to more errors If a bug does not become apparent a dry run is conducted A dry run is based on the listing of the code that the programmer works through manually A Trace Table is used to store and display program variables as the logic of the algorithm unfolds, the actual output can then be checked against the expected Dry runs are used for locating logic errors and is only practical for simple programs Pupil task Name and describe two methods of locating errors in a puzzle software. Answer Set breakpoints (1) – used to stop execution of the program at predefined point (1) Trace tables (1) – used to record the contents of a variable during manual execution (1) Dry run (1) – stepping through each line of code manually recording variables (1) Trace Tools ► ► ► ► ► Some programming languages have TRACE facilities as a debugging feature Tracing gives access to otherwise invisible information about a program execution allowing the programmer to step through the program line by line and stop at points to examine variable content More enhanced tools allow investigation of memory locations and the content of the stack Programs that use large numbers of procedures use the stack to store all their procedure calls Using trace a program will run slower Program Watch ► ► ► ► A watch takes an identifier and displays its values as the program progresses The programmer steps through the code one line at a time and the variable being traced is display on a watch screen Many programmers prefer to put in watches in the form of output statements that cause the value of the variable to be displayed at points in a program where a bug exists A draw back of program watching is the number of lines of code increase as does programming time Breakpoints ► ► ► ► A break point is a marker set within the code of a program to halt program execution at a predefined spot The statement responsible will be highlighted and can be inspected while the program is temporarily interrupted The program then continues to completion or until another breakpoint is found Breakpoints are often used with traces Pupil task The project team is ready to beta test the software. (i) Give two reasons why beta testing is necessary. (ii) Name the two groups involved at this stage and describe the role of each group. Answers i) • Checks software is reliable on the client’s computer. • Checks client is happy with software and allows increased reliability of testing. • Allows client an opportunity to check that software meets requirements. • Allows programmers to observe the clients using the software determining success of user interface etc. (ii) • End users − provide feedback • Programming team − maintenance CASE Tools Computer Aided Software Engineering ► ► ► ► It refers to the collection of software programs that are designed to automate the development cycle The implementation of new systems requires many different complex tasks to be organised and completed correctly and efficiently Information generated has to be kept in synchronisation The use of CASE tools eases the task of coordinating these activates from analysis to implementation Computer-Aided Software Engineering (CASE), in the field of Software Engineering is the scientific application of a set of tools and methods to a software system which is meant to result in high-quality, defect-free, and maintainable software products. It also refers to methods for the development of information systems together with automated tools that can be used in the software development process Types of CASE Tools Basic categories of CASE tools are available: ► Diagramming tools that represent data models according to system specifications. Screen and Report Generators for creating system specifications. Data Dictionaries that contain a history of changes made to a system Code Generators to be able to generate code from data Diagrams themselves. Documentation generators that make the code more readable. Development of CASE ► ► Sine the early days of writing software there has been a need for automated tools to help the software developer As computer became more powerful ad the software that ran on them grew larger and more complex, power tools with increasing functionality were required Categories of CASE Tools ► CASE tools can be divided into two main groups Those that deal with the first three parts of the system development life cycle (preliminary investigation, analysis, and design) and are referred to as Front-End CASE Tools or Upper CASE Tools Those that deal mainly with the implementation, testing and installation are referred to as Back-End CASE Tools or Lower CASE Tools Upper CASE Tools ► ► ► ► ► ► ► These are basically general-purpose analysis and design specification tools During the initial stages of system development, analysts have to determine system requirements and analyse this information to design the most effective system Computerised CASE tools allow for changes to be made automatically, very quickly and accurately Data Dictionaries are data processing systems products that are specifically designed to hold, maintain and organise information They have facilities for producing a variety of reports They allow developers to be more productive The goal of a CASE tool is to refine the analysis and design stages to allow automated production of code, around 75% Data Dictionaries A data dictionary is an automated tool for collecting and organising detailed information about system components ► A data dictionaries main facility is to document data elements, records, programs, files, users etc ► They also have the facility to cross-reference all system components and contain details of: ► Systems environment Audit trails Reports Forms Functions Processes Lower CASE Tools ► ► ► ► These focus on the architecture of the system and its implementation and maintenance These tools are effective in helping with the generation of the program code and are referred to as Code Generators A code generator is a tool that enables automatic generation of code from the analysis and design specifications Generating code this way ensures that all code is produced with identical naming conventions Code Generators ► ► Code generators produce a high quality of code that is easy to maintain and is portable They are able to interact with Upper CASE tools to aid in the development of code Document Generators ► ► ► A further enhancement to CASE tools is document generators A document generator is a CASE tool that generates technical documentation from source code comments The comments that are produced conform to a standard format Object-Oriented CASE ► ► ► ► CASE tools are well supported in object-oriented programming systems (OOPS) Earlier problems with OOPS focussed on models created for software development systems and their different notations This was overcome by the use of UML, Unified Modelling Language, which is a new standard for producing diagrams and charts All current CASE tools have now adopted UML for specifying, visualising and constructing software systems UML ► ► CASE tools offer automatic code generation from the UML diagram This tool produces a framework for the code which contains objects and classes. An Executable Prototype is produced This is an executable source code program obtained directly from UML ► One of the main features in UML is Reverse Engineering where existing source code is reversed engineered into a set of UML diagrams RUP Rational Unified Process ► ► ► In conjunction with UML developers also employ RUP This is a development process to deliver best practices during each stage of a project Using RUP risks are lowered during all stages Advantages of CASE ► ► ► ► ► Increase Speed CASE tools provide automation and reduce the time to complete tasks Increased Accuracy CASE tools can provide on-going debugging and error checking which is vital for early defect removal Reduced Costs and Maintenance Overall system quality improves using CASE. There is also better documentation so the net effort and cost involved is reduced Better Documentation Using CASE tools vast amounts of documentation are produced. An important aspect is CASE Repository, this is a developers database with information relating to the projects stored. It can be regularly updated Better Communication Information generated from one tool can be passed to another, allowing for important information to be passed efficiently and effectively Limitations Of CASE Tools Although CASE tools are becoming more popular user can be subject to some limitations: ► Choice Over 1000 CASE tools exist and choosing one is difficult, a major project in itself ► Costs CASE tools are not cheap. Hardware, software, training and consulting are all factors in the total cost equation ► Training Users need time to learn the technology. A CASE consulting industry has evolved to support uses of CASE tools Pupil task Describe two benefits of using Computer-Aided Software Engineering (CASE) tools. Answer • Computerised generation of graphical designs and information shared across the system would be monitored. • Automated data dictionaries. • Tools to track dependencies. Do not allow compilers, editors, debuggers or other software development type answers