An Introduction to Runtime Analysis with Rational PurifyPlus
|
|
- Stuart Mills
- 5 years ago
- Views:
Transcription
1 Copyright Rational Software An Introduction to Runtime Analysis with Rational PurifyPlus by Goran Begic Technical Marketing Engineer, Development Solutions Rational Software There are some people you can never understand, even if you try your best. One moment they're happy and friendly but the next they're moody and angry. And the harder you work to figure out what's going on, the worse it gets. Sometimes understanding a software application under development can be just as frustrating. One moment it produces seemingly positive results, and the next moment it crashes. But understanding software behavior is not as hard as penetrating the psyche of those moody people. A practice called "runtime analysis" can help. Runtime analysis is not a new term; it has been in use for years. However, the term and the software development activities behind it have not been clearly defined or explained. This article will attempt to do so by placing runtime analysis in the context of other Rational best practices and outlining its enormous benefits to software developers, testers, and managers. What Is Runtime Analysis? Let's begin with a simple definition: Runtime analysis is a practice aimed at understanding software component behavior by using data collected during the execution of the component. The term itself points to the main elements of this practice: Runtime. The analysis does not include static ways of analyzing the source code of developed software and relationships between the software's building blocks. Rather, it provides valuable information about how the developed component -- or the whole application -- behaves when it runs, either in the test environment or in the final deployment environment.
2 Analysis. The activity is designed to provide explanations for various exposed or potential misbehaviors. Users play the most important role, because they will combine their logic, intelligence, and knowledge about software development with available data in order to provide answers to questions about what prevents the application from functioning correctly, or running in a timely fashion, or simply failing in some atypical situations. Runtime analysis provides understanding of the following aspects of application execution: Execution paths Code coverage Runtime tracing Memory utilization Memory errors and memory leaks in native applications Memory leaks in.net managed code and Java applications Execution Performance Performance bottlenecks Threading problems Runtime Analysis: An Extension of Debugging Debugging is a well-known activity, practiced by all software developers on a regular basis. Often we assume that an application will work as long as the source code is written with the correct syntax and the component compiles and links without any errors or warnings. That assumption is wrong! Even if the compiler didn't report any errors, the application may not be ready to ship to the customer. Typically, when writing code, we test the basic functionality of a component first and make sure that all requirements are satisfied. Later on in the development cycle, QA (Quality Assurance) teams usually test the software. Such QA tests often focus on the functionality of main use-case scenarios. So, if the functionality of all major use-case scenarios is confirmed, then is the application ready to be shipped to the customer? The answer is still no. The application might still crash on some machines, in some combination of scenarios, or in some untested scenarios -- and its performance might not be satisfactory. The task of all development roles should be to minimize the probability of shipping faulty code to the customer, and the best way to do this is to perform tests as early in the development cycle as possible. It is helpful to think of runtime analysis as an extension of standard debugging tools and methods that can help teams uncover peculiar -- and sometimes very difficult to resolve -- problems. Data Collection During Development Testing
3 Data that allows runtime analysis of every detail of application execution is collected while the application is being tested. This testing can be developer testing: The person who implements features runs basic tests of the developed component's functionality -- by running either unit tests or component tests. Software runtime analysis data can also be collected during QA testing of the application. This type of data collection is often referred to as white-box testing, because the goal is to collect information about the (visible) application internals, whereas functional testing without any insight into the application internals is called black-box testing. Testers who perform black-box testing may not be interested in runtime analysis logs and reports, but testers can collect white-box testing data during black-box testing and use white-box information for describing and reporting either functionality or performance problems to developers. You can increase the quality of the runtime analysis data you collect during testing by using testing automation tools, such as Rational Robot, which can record testing scenarios and play them back over and over again. You can also analyze the runtime analysis data you collect on the same use cases for different iterations of the developed software components. This will give you a better understanding of not only one iteration of the developed software, but also of the impact of newly introduced changes on product quality. If software quality drops between two consecutive iterations of the component, runtime analysis data makes it very easy to find the responsible feature or code change. Runtime Analysis in the Software Development Lifecycle One can argue about the best way to develop software, but I think we can all agree that a methodical approach is more likely to deliver high quality results than an ad hoc approach without planning or role assignments. And whether you design first and then implement features, write tests before working on the code, or even skip process steps and just start with code, the final result -- the developed component or application -- has to be tested for functionality. It should also be associated with requirements to ensure that the final product matches users' needs. And sooner rather than later, it will require debugging. If you have ever developed software, you know that it can easily run off course. To deliver reliable software, you need to understand exactly how the application executes. This understanding should encompass not only the application's logic, but also its performance and memory considerations. Requirements First Requirements often focus on functionality. But, as many who use Rational RequisitePro -- Rational's automated requirements management tool -- have discovered, it's also important to establish requirements that ensure the application quality, both internally and from the perspective of your customer application. For example, two such requirements might be stated as follows: The server component should use the same amount of memory before and after each client session.
4 And The memory used by the application before and after use-case scenario #13 should be the same. Both of these requirements sound logical, don't they? But I have seen applications in use for years that don't meet either one. This might be due to a memory leak, which can seriously damage the final product's quality and the vendor's reputation. In some extreme cases (e.g., a memory leak in the server side component), it can even cause the application -- or the whole system -- to crash. Fortunately, you can use runtime analysis to detect memory leaks during development, so that you can meet these requirements and deliver a high quality product. Here is another example of a vital quality requirement, this time for a Web application: The response time of the component for use-case scenario #91 must be less than or equal to five seconds. Again, runtime analysis can help ensure that you meet this requirement. (And if you do not, the user may well start looking for the information on some other Web site.) And finally, here is an example of a vital requirement for testing: The software is not ready for release if the QA team doesn't test more than 60 percent of the available source code base. Again, this requirement may sound trivial, but think about it. When you released products in the past, did you really know how much code in your application was tested and how much was left for users to "test" in their daily work? With runtime analysis, you can ensure that the source code is thoroughly tested. Software Modeling Personally, I like to dive into coding as soon as possible and work on a small team rather than in a large development group. However, I find that at some point in my own software development process, I have to start documenting the most important scenarios and interfaces in my application as well as dependencies in legacy code that I'm reusing, and so forth. To do this, I could use a piece of paper, or maybe a shiny new tablet PC, and start drawing class and sequence diagrams with my own symbols. But if it is a serious development project, I can get help from an automated modeling tool such as Rational Rose, Rational Rose RealTime, or Rational XDE. TM Using the Unified Modeling Language (UML), I can create models that are easily understandable not just to me, but also to my colleagues and managers and the final users. I can use these models to define roles in my development team and document the application that will meet the requirements given to my group. I can also update my models from the code on a need- to-have basis.
5 So where does software modeling meet runtime analysis? Theoretically, I could imagine several intersections, but let's stay with one common problem that runtime analysis solves. Creating sequence diagrams for existing code can be tiresome. To do it effectively, you need to understand exactly how your application should execute -- and this is where runtime analysis can really help. Rational PurifyPlus for Linux and the Rational Test RealTime family of products provide unique capabilities for creating UML sequence diagrams "on the fly," using runtime analysis information collected during testing (see Figure 1). click here to enlarge Figure 1: UML Sequence Diagram Created by Rational PurifyPlus for Linux The benefits of this particular feature -- runtime tracing -- are obvious during debugging: It lets you visualize objects, method calls, and raised exceptions as you do development testing in a debugger. Writing Code: Implementation and Debugging At some point in the development lifecycle, the projected features need to be implemented into code; this code, in turn, needs to be compiled and linked into either a component that will be executed with the help of unit testing, or a debug version of the standalone application. Start with basic functionality that works, and start adding features in order to avoid functionality flaws later in the process. The same applies for performance and memory utilization problems: The earlier you detect performance and memory bottlenecks, the easier it will be to fix them and to deliver software of higher quality. If you write tests even before you implement the code, you can define verification points not just for the component's functionality, but also for its performance and memory usage. This is where runtime analysis comes into play. Since you have to test the functionality anyway, runtime analysis will provide you exact information about the root cause of the problem, based on the information collected during functionality testing.
6 All major programming languages host features that provide collections of additional information about the application's execution. Using programming language features such as assert and trace, and keywords for exception handling, can help inform you about what has happened during application execution. The system APIs for timing can also help you gain information about performance, but as a data collection vehicle they can quickly become very ineffective, and they influence the performance of the tested application too much to be reliable. In the code sample below, for example, assert will confirm or decline the assumption that you've made in the code about the result of a certain operation. FILE* p = fopen("worddoc.doc"); assert( p ); If the opening of this file fails for some reason, then the value returned by fopen( ) will be 0. If you don't assert this return value, the application could continue executing, and you might never find out whether the file opening operation actually succeeded. Note that in this example, assert is only checking your assumption about the correct functioning of a certain method. In more complicated situations you can easily either lose sight of a certain scenario or make the wrong assumption, which would result in a runtime error. The advantage of this debugging method is obvious, but there are some disadvantages as well: You can't assert every single condition in your code. That would make the code extremely slow and difficult to maintain. Numerous other errors can occur without any visible effects on the code execution; even if you combine all of the language capabilities we've mentioned, it may not be enough. Sometimes the root cause of the error occurs much earlier in the application execution, and it is difficult to trace back to the problem. As we mentioned earlier, it is also possible to measure application performance from within the code. Here is an example: time = System.currentTimeMillis(); DoSomething(); time = System.currentTimeMillis() - time; System.out.prntln("Measured time is " + time); However, this profiling method doesn't allow you to profile the whole application and still discover details about each method, not to mention specific lines of code. The collected time is also not reliable because it may be influenced by other processes running on the same machine -- user interaction and so forth. For more detailed, reliable performance profiling, you need a specialized performance profiling tool like Rational Quantify, or Rational PurifyPlus.
7 Another basic debugging tool is a debugger including Visual Studio Debugger and GNU gdb. A debugger allows you to stop the execution of an application at virtually any line of code. Debuggers can also replace the machine instruction on the line of code where you've set the breakpoint with a special instruction that will "freeze" execution of the application in the processor and allow you to examine the content of objects, variables, function stacks, and registries at that point of application execution. However, the debugger will not tell you whether you have a memory or performance problem. It will assist you in finding one if you have a hunch that it exists. A specialized runtime analysis tool such as Rational Purify or Rational PurifyPlus, on the other hand, will record every memory error -- with all the details -- as the error happens. It will put the breakpoints at the exact place where a memory violation happens, or it will allow you to examine the application internals after the run via the recorded runtime analysis data. Runtime analysis removes the guesswork from debugging! Advanced Debugging with Runtime Analysis The major goals of debugging are to find the root cause of defects and understand application behavior. Runtime analysis provides additional capabilities that supplement traditional debugging: Visualization of application execution. Measurement of vital runtime parameters, including memory usage, performance, and code coverage. Error detection in user code. Documentation of runtime behavior. We will examine these capabilities below. Visualization of Application Execution To understand this capability, we'll look at five examples. Visualization Example 1: Runtime Tracing First, let's see how a runtime analysis tool (Rational PurifyPlus for Linux does runtime tracing) visually represents important runtime elements of the tested application. As Figure 1 shows, this capability means users can step through the code and see the interactions between objects at the same time.
8 click here to enlarge Figure 1: Runtime Tracing with Rational PurifyPlus for Linux Visualization Example 2: Code Coverage Runtime analysis with a tool such as Rational PureCoverage (included in Rational PurifyPlus) provides various views to code coverage information, one of them being Annotated Source. This particular view shows the source file of the examined application; the color of the line indicates the line's status after the executed test case: hit, missed, dead, or partially hit. As Figure 2 shows, the user can see code coverage and the execution path for this test case. click here to enlarge Figure 2: Rational PurifyPlus Display of Annotated Source for the C#.NET application in Visual Studio.NET The code fragment in Figure 2 shows the exact path the application took when
9 executing the switch statement on line 111. This particular line is marked as partially hit because line 122 hasn't been executed. Visualization Example 3: Threads A runtime analysis tool such as Rational Quantify (included in Rational PurifyPlus) provides thread visualization, which can assist in detecting multithreading problems by marking the state of each of the threads while debugging. As Figure 3 shows, this allows you to examine the status of threads visually, while debugging. click here to enlarge Figure 3: Rational Quantify Thread Analysis View in Visual Studio 6 Visualization Example 4: Call Graph Runtime analysis tools can also detect and display performance bottlenecks. The big advantage of this approach, compared to traditional methods, is that you can get an excellent overview of the execution path as well as precise information about the number of calls to the methods involved in the scenario. As Figures 4A and 4B show, the Call Graph in Rational Quantify highlights a chain of calls in the most time-consuming execution path; that is the performance hotspot. The thickness of the line connecting methods is proportional to the ratio between the time (or memory if you are using Purify) spent in this chain of calls and the rest of the application.
10 click here to enlarge Figure 4A: Rational Quantify Call Graph of a Mixed VB.NET and C#.NET Application in Visual Studio.NET click here to enlarge Figure 4B: Rational Quantify Call Graph of a C/C++ application on Solaris Visualization Example 5: Memory Usage The first step in handling memory leaks is to detect them. One very intuitive way to do this is to visualize overall memory usage and take snapshots of memory in the program under test (PUT). This lets you see potential memory leaks in the running application. (This feature is available in Rational Purify for Java and.net managed applications.) For example, if snapshots of memory usage for the component running on the server show that overall memory usage increases after each client session, then it is very likely that this component leaks memory (see Figure 5).
11 click here to enlarge Figure 5: Overview of Thread Status and Memory Usage in Rational Purify for Windows Measurement of Vital Runtime Parameters. Visual error detection is just the first stage of runtime analysis. We also need to understand exactly what happens during the run. For that purpose, runtime analysis should be based on exact measurements of parameters vital for the application's execution: Runtime performance Memory usage Code coverage Again, we will look at examples to understand this runtime analysis capability. Measurement Example 1: Function List View Function List View is a typical runtime analysis view that can be generated with a specialized Runtime analysis tool such as Rational Quantify (see Figure 6). It presents all important methods and/or objects of an application in tables that can be sorted by number of measured parameters; this allows developers analyzing code to find what methods used the most available memory at that point in time, as well as the slowest functions, the age of objects, and so forth. This view provides exact information about the number of calls to methods, time spent in methods only, time spent and memory accumulated in selected methods and all their descendants, and so on.
12 click here to enlarge Figure 6: Rational Quantify Function List View for a Visual C++ Application Measurement Example 2: Function Detail View A runtime analysis tool such as Rational Quantify can also extend the information in Measurement Example 1 to include information about the distribution of measured data between calling methods and descendants. This is shown in the Function Detail View (Figure 7). This view highlights callers and descendants that contribute to a performance or memory hotspot -- information that can help detect the exact cause of a performance or memory bottleneck. click here to enlarge Figure 7: Rational Quantify Function Detail View for a Visual C#.NET Application in Visual Studio.NET (with Rational XDE) Measurement Example 3: Method Coverage Module View
13 As we explained earlier, in some cases -- and especially when assessing the value of available testing methods -- it is useful to measure the percentage of code covered while testing, or simply to mark all the methods that haven't been tested after a series of tests. You can do this with a tool such as Rational PureCoverage, which yields precise information about untested and dead code vs. tested code (Figure 8). click here to enlarge Figure 8: Rational PureCoverage Display of Code Coverage on the Method Level for a Mixed C#.NET and VB.NET Application in Visual Studio.NET (with Rational XDE) Runtime Memory Corruption Detection in User Code. This is the crowning glory of runtime analysis for native C/C++ applications. Runtime analysis can not only help to detect problems by displaying performance, memory, thread, and code coverage data in different views, but it can also pinpoint the exact location in the user code where the error is generated, or/and caused. Runtime memory corruption detection is essential to ensure proper functioning and high quality of native C and C++ applications on all platforms. Rational tools for runtime memory detection are Rational Purify and Rational PurifyPlus. Again, let's look at some examples. Error Detection Example 1: Rational Purify Memory Error and Memory Leak Reports Rational Purify can pinpoint the exact line of code where a developer has created a memory error. It doesn't even need source files to provide this information; Rational Purify detects errors in memory and uses debug information to trace these errors back to the responsible lines of code (see Figure 9).
14 click here to enlarge Figure 9: Rational Purify Memory Error and Memory Leak Report for a Visual C++ Application In this particular example, the developer forgot to take the termination string into consideration when building an array variable. This error was causing the release build of the application to crash, whereas the debug build worked fine. This example is just one of the many ways in which runtime analysis significantly reduces debugging time for C/C++ development. Error Detection Example 2: Quantify Annotated Source Rational Quantify has a unique capability to measure distribution of time recorded for each of the user methods per line of code. Quantify annotated source displays times measured for each line of code, along with times spent and inside functions called on the line. This information can help you narrow the performance bottleneck down to an individual line of code (Figure 10).
15 click here to enlarge Figure 10: Rational Quantify Annotated Source for a Mixed Visual Basic 6 and Visual C++ Application in Visual Studio 6 Error Detection Example 3: Purify Object and Reference Graph In Java and.net managed code, it is not possible to make runtime memory errors such as out of bounds reads and writes and free memory reads and writes, because the automatic memory management in the runtime subsystem prevents developers from directly accessing allocated memory. However, this automated memory management doesn't prevent programmers from forgetting references to the objects' allocated memory. As long as there is a reference to such dynamically allocated objects somewhere in the code, they will stay in memory and will not be cleaned by the automatic memory management (garbage collector). The net effect of such errors is the same as the effect of C/C++ leaks: The memory becomes unavailable for this and all other processes running on the host operating system. By doing a runtime analysis with Rational Purify, however, you can pinpoint the exact line of code where the reference to the object in question has been created (Figure 11). click here to enlarge Figure 11: Rational Purify Object and Reference Graph for a Java Application Documentation of Runtime Behavior. Yet another way to leverage runtime analysis is by documenting the application's runtime behavior for future use. This helps you assess the overall quality of the project and measure the influence of newly introduced features and code changes on overall application performance, reliability, and test harness completeness. This advanced way of practicing runtime analysis involves collecting runtime data for each iteration of the component or application under development and analyzing the data at different stages in the project lifecycle. This information can help in determining overall project quality as well as the effect of new feature additions and bug fixes on overall
16 quality. When you use runtime analysis data together with source control tools such as Rational ClearCase, you can easily detect which changes to the source code database are responsible for a faulty build and/or failure of automated tests; you will know which portions of the source code base were changed between the successful set of tests and the set of tests that failed. Not only that: You can identify the owner of those code changes and the exact times and dates they were introduced. Advanced runtime analysis tools such as Rational PurifyPlus provide features to analyze multiple test runs by, for example, allowing the user to merge code coverage data from various tests or test harnesses, or to create separate data sets for comparisons of consecutive iterations of test measurements, as shown in Figure 13. click here to enlarge Figure 13: Rational Quantify Compare Runs Report In Figure 13, Rational Quantify compares two data sets and highlights chains of calls where performance has improved (green line) and chains of calls where performance has dropped (red line). The calculated data is available in both the Call Graph view and in the more detailed Function List view. Even if you are not in a position to create an automated test environment, you can still automate data analysis by taking advantage of runtime analysis data saved as ASCII files. Figure 14 shows an example of a performance profile imported into Microsoft Excel.
17 click here to enlarge Figure 14: Rational Quantify Performance Report Imported into Excel You can easily automate data analysis in Excel by creating simple Visual Basic applications, or with any of the popular scripting languages: Perl, WSH, JavaScript, and so on. PurifyPlus for UNIX comes with a set of scripts that can help you manage and analyze data collected from various tests. Runtime Analysis: The Emphasis Is on Quality Runtime analysis expands standard software development activities along one key dimension: concern for quality. It paves the way for achieving higher software quality through better understanding of the internal workings of an application under development. Remember: Source code that compiles is not proof of quality; detailed, reliable, and precise runtime performance, memory utilization, and thread and code coverage analysis data are the only way to determine that an application is free of serious errors and will perform efficiently. References Rational PurifyPlus documentation Rational requirements and analysis documentation Rational visual modeling and development documentation
18 Rational automated testing documentation Articles in The Rational Edge: "Memory Profiling in Java" (January 2001) "Monitoring Object Creation in Java Application Profiling with Rational PurifyPlus" (June 2001) "Runtime Analysis in Visual Studio.NET" (March 2002) t_runtimeanalysis_gb.jsp "Runtime Debugging with Microsoft Visual Studio and Rational Purify" (April and May 2001) "Power C/C++ Debugging: Using Rational Purify with GDB" t_powerdebugging_gb.html For more information on the products or services discussed in this article, please click here and follow the instructions provided. Thank you! Copyright Rational Software 2002 Privacy/Legal Information
Introducing the PurifyPlus Family: PurifyPlus for Windows PurifyPlus for UNIX PurifyPlus for Linux PurifyPlus RealTime
Introducing the PurifyPlus Family: PurifyPlus for PurifyPlus for UNIX Product version 2002 Release 2 Document version 1.5 Last revision: November 29, 2002 1 High level overview: A. Intro an introduction
More informationSystems software design. Software build configurations; Debugging, profiling & Quality Assurance tools
Systems software design Software build configurations; Debugging, profiling & Quality Assurance tools Who are we? Krzysztof Kąkol Software Developer Jarosław Świniarski Software Developer Presentation
More informationRational PurifyPlus Rational Purify Rational PureCoverage Rational Quantify
Rational Software Corporation Rational PurifyPlus Rational Purify Rational PureCoverage Rational Quantify Getting Started VERSION: 2002.05.20 PART NUMBER: 800-025734-000 WINDOWS support@rational.com http://www.rational.com
More informationProject Plan. In this section the various tools used at different phases of the software life cycle will be described. 3.
Project Plan Subject: Project Plan Issue 1.0 Date: 09 June 2005 From: Daniel Calder Mark Marwil 1. Project Goal The project being developed is a library tool. Using various software tools that comply with
More informationOracle Developer Studio Code Analyzer
Oracle Developer Studio Code Analyzer The Oracle Developer Studio Code Analyzer ensures application reliability and security by detecting application vulnerabilities, including memory leaks and memory
More informationPromoting Component Architectures in a Dysfunctional Organization
Promoting Component Architectures in a Dysfunctional Organization by Raj Kesarapalli Product Manager Rational Software When I first began my career as a software developer, I didn't quite understand what
More informationDeliver robust products at reduced cost by linking model-driven software testing to quality management.
Quality management White paper September 2009 Deliver robust products at reduced cost by linking model-driven software testing to quality management. Page 2 Contents 2 Closing the productivity gap between
More informationVisual Studio 2008 Load Symbols Manually
Visual Studio 2008 Load Symbols Manually Microsoft Visual Studio 2008 SP1 connects to the Microsoft public symbol are loaded manually if you want to load symbols automatically when you launch. Have you
More informationDebugging. CSE 2231 Supplement A Annatala Wolf
Debugging CSE 2231 Supplement A Annatala Wolf Testing is not debugging! The purpose of testing is to detect the existence of errors, not to identify precisely where the errors came from. Error messages
More informationDesigning and debugging real-time distributed systems
Designing and debugging real-time distributed systems By Geoff Revill, RTI This article identifies the issues of real-time distributed system development and discusses how development platforms and tools
More informationWelcome to this IBM Rational podcast, enhanced. development and delivery efficiency by improving initial
IBM Podcast [ MUSIC ] GIST: Welcome to this IBM Rational podcast, enhanced development and delivery efficiency by improving initial core quality. I'm Kimberly Gist with IBM. Catching defects earlier in
More informationJ2EE Application Development : Conversion and Beyond Osmond Ng
IBM Software Group J2EE Application Development : Conversion and Beyond Osmond Ng IBM Software Group Practitioner View Point IBM Rational Application Developer J2EE/EJB Tooling J2EE construction tools
More informationIntel Parallel Studio 2011
THE ULTIMATE ALL-IN-ONE PERFORMANCE TOOLKIT Studio 2011 Product Brief Studio 2011 Accelerate Development of Reliable, High-Performance Serial and Threaded Applications for Multicore Studio 2011 is a comprehensive
More informationBuilding a New Rational Web Site with Rational Suite
Building a New Rational Web Site with Rational Suite by Christina Howe Director of Internet Services Rational Software In April of last year, Rational Software determined that its Web site no longer measured
More informationDiscover, Relate, Model, and Integrate Data Assets with Rational Data Architect
Discover, Relate, Model, and Integrate Data Assets with Rational Data Architect Niels C. Jacobsen (nielsj@dk.ibm.com) Associate IT Architect, IBM Software Group Rational IBM Software Group 2005 IBM Corporation
More informationOracle Developer Studio 12.6
Oracle Developer Studio 12.6 Oracle Developer Studio is the #1 development environment for building C, C++, Fortran and Java applications for Oracle Solaris and Linux operating systems running on premises
More informationIBM Rational Rose XDE Developer
Extend Your Development Experience Developer Highlights Model-driven development Assisted modeling with UML support Multiple model support for Roundtrip engineering Java, Model-Driven Architecture C++,
More informationInternational Journal of Computer Engineering and Applications, Volume XII, Special Issue, April- ICITDA 18,
International Journal of Computer Engineering and Applications, Volume XII, Special Issue, April- ICITDA 18, www.ijcea.com ISSN 2321-3469 SOFTWARE TESTING Rajat Galav, Shivank Lavania Student, Department
More informationInternational Journal of Computer Engineering and Applications, Volume XII, Special Issue, September 18, ISSN SOFTWARE TESTING
International Journal of Computer Engineering and Applications, Volume XII, Special Issue, September 18, www.ijcea.com ISSN 2321-3469 SOFTWARE TESTING Rajat Galav 1, Shivank Lavania 2, Brijesh Kumar Singh
More informationMITOCW watch?v=9h6muyzjms0
MITOCW watch?v=9h6muyzjms0 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To
More informationSoftware Testing and Maintenance
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
More informationNews in RSA-RTE 10.2 updated for sprint Mattias Mohlin, May 2018
News in RSA-RTE 10.2 updated for sprint 2018.18 Mattias Mohlin, May 2018 Overview Now based on Eclipse Oxygen.3 (4.7.3) Contains everything from RSARTE 10.1 and also additional features and bug fixes See
More informationDebugging Runtime Scripts in Operations Manager and Essentials 2007 The third installment in the System Center Forum Scripting Series
Debugging Runtime Scripts in Operations Manager and Essentials 2007 The third installment in the System Center Forum Scripting Series Author: Neale Brown, MCSE (Messaging) Contributor, System Center Forum
More informationEnhanced Debugging with Traces
Enhanced Debugging with Traces An essential technique used in emulator development is a useful addition to any programmer s toolbox. Peter Phillips Creating an emulator to run old programs is a difficult
More information.Net and Rational s XDE from the trenches Tony Grout FMI Solutions
.Net and Rational s XDE from the trenches.net and Rational s XDE from the trenches Tony Grout FMI Tony Solutions Grout FMI Solutions Agenda! Who are FMI Solutions?! Setting the Scene! Getting the Project
More informationEnterprise Architect. User Guide Series. Profiling
Enterprise Architect User Guide Series Profiling Investigating application performance? The Sparx Systems Enterprise Architect Profiler finds the actions and their functions that are consuming the application,
More informationEnterprise Architect. User Guide Series. Profiling. Author: Sparx Systems. Date: 10/05/2018. Version: 1.0 CREATED WITH
Enterprise Architect User Guide Series Profiling Author: Sparx Systems Date: 10/05/2018 Version: 1.0 CREATED WITH Table of Contents Profiling 3 System Requirements 8 Getting Started 9 Call Graph 11 Stack
More informationMemory Analysis tools
Memory Analysis tools PURIFY The Necessity TOOL Application behaviour: Crashes intermittently Uses too much memory Runs too slowly Isn t well tested Is about to ship You need something See what your code
More informationTesting. ECE/CS 5780/6780: Embedded System Design. Why is testing so hard? Why do testing?
Testing ECE/CS 5780/6780: Embedded System Design Scott R. Little Lecture 24: Introduction to Software Testing and Verification What is software testing? Running a program in order to find bugs (faults,
More informationBenefits of object-orientationorientation
ITEC 136 Business Programming Concepts Week 14, Part 01 Overview 1 Week 14 Overview Week 13 review What is an object? (three parts) State (properties) Identity (location in memory) Behavior (methods) 2
More informationQuickly Pinpoint and Resolve Problems in Windows /.NET Applications TECHNICAL WHITE PAPER
Quickly Pinpoint and Resolve Problems in Windows /.NET Applications TECHNICAL WHITE PAPER Table of Contents Executive Overview...1 Problem Resolution A Major Time Consumer...2 > Inefficiencies of the Problem
More informationJ2EE Development Best Practices: Improving Code Quality
Session id: 40232 J2EE Development Best Practices: Improving Code Quality Stuart Malkin Senior Product Manager Oracle Corporation Agenda Why analyze and optimize code? Static Analysis Dynamic Analysis
More information9 th CA 2E/CA Plex Worldwide Developer Conference 1
1 Introduction/Welcome Message Organizations that are making major changes to or replatforming an application need to dedicate considerable resources ot the QA effort. In this session we will show best
More informationTesting is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered.
Testing Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered. System stability is the system going to crash or not?
More informationOverview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Performance, memory
SCRIPTING Overview Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Reflection Bindings Serialization Performance, memory Rationale C++ isn't the best choice
More informationTerminology. There are many different types of errors and different ways how we can deal with them.
Testing Terminology Reliability: The measure of success with which the observed behavior of a system confirms to some specification of its behavior. Failure: Any deviation of the observed behavior from
More informationEliminate Memory Errors to Improve Program Stability
Introduction INTEL PARALLEL STUDIO XE EVALUATION GUIDE This guide will illustrate how Intel Parallel Studio XE memory checking capabilities can find crucial memory defects early in the development cycle.
More informationRapid Bottleneck Identification A Better Way to do Load Testing. An Oracle White Paper June 2008
Rapid Bottleneck Identification A Better Way to do Load Testing An Oracle White Paper June 2008 Rapid Bottleneck Identification A Better Way to do Load Testing. RBI combines a comprehensive understanding
More informationOliopäivät Modelling Now and in the Future, with Acronyms or without = RSA
IBM Software Group Oliopäivät 28-29.11.2006 Modelling Now and in the Future, with Acronyms or without = RSA rami.talme@fi.ibm.com 2006 IBM Corporation IBM Software Group Rational software The business-driven
More informationWHY THE WORLD S LEADING.NET DEVELOPMENT TEAMS RELY ON CODE COVERAGE AND WHAT IT MEANS TO YOUR TEAM CODE COVERAGE FOR THE TEAM
CODE COAGE FOR THE WHY THE WORLD S LEADING.NET S RELY ON CODE COAGE AND WHAT IT MEANS TO YOUR MISSION CRITICAL.NET CODE Quality code is a team effort Throughout the planning, development and testing process,
More informationADT: Eclipse development tools for ATL
ADT: Eclipse development tools for ATL Freddy Allilaire (freddy.allilaire@laposte.net) Tarik Idrissi (tarik.idrissi@laposte.net) Université de Nantes Faculté de Sciences et Techniques LINA (Laboratoire
More informationEliminate Threading Errors to Improve Program Stability
Introduction This guide will illustrate how the thread checking capabilities in Intel Parallel Studio XE can be used to find crucial threading defects early in the development cycle. It provides detailed
More informationEnabling Performance & Stress Test throughout the Application Lifecycle
Enabling Performance & Stress Test throughout the Application Lifecycle March 2010 Poor application performance costs companies millions of dollars and their reputation every year. The simple challenge
More informationOptimizing Emulator Utilization by Russ Klein, Program Director, Mentor Graphics
Optimizing Emulator Utilization by Russ Klein, Program Director, Mentor Graphics INTRODUCTION Emulators, like Mentor Graphics Veloce, are able to run designs in RTL orders of magnitude faster than logic
More informationcsc444h: so(ware engineering I matt medland
csc444h: so(ware engineering I matt medland matt@cs.utoronto.ca http://www.cs.utoronto.ca/~matt/csc444 tes2ng top- 10 infrastructure source code control including other types of testing reproducible builds
More informationIBM Rational Rose Technical Developer
Accelerating Complex Software Systems Development IBM Rational Rose Technical Developer Highlights Model-Driven Development Ensures meeting stringent with the Unified Modeling requirements for latency,
More informationTesting. Prof. Clarkson Fall Today s music: Wrecking Ball by Miley Cyrus
Testing Prof. Clarkson Fall 2017 Today s music: Wrecking Ball by Miley Cyrus Review Previously in 3110: Modules Specification (functions, modules) Today: Validation Testing Black box Glass box Randomized
More informationCS 536 Introduction to Programming Languages and Compilers Charles N. Fischer Lecture 11
CS 536 Introduction to Programming Languages and Compilers Charles N. Fischer Lecture 11 CS 536 Spring 2015 1 Handling Overloaded Declarations Two approaches are popular: 1. Create a single symbol table
More informationChapter 9. Software Testing
Chapter 9. Software Testing Table of Contents Objectives... 1 Introduction to software testing... 1 The testers... 2 The developers... 2 An independent testing team... 2 The customer... 2 Principles of
More informationChapter 15 Debugging
Chapter 15 Debugging Known, but unfixed errors Just ignore errors at this point. There is nothing we can do except to try to keep going. -A comment in XFS (xfs_vnodeops.c, line 1785) Error, skip block
More information12. Debugging. Overview. COMP1917: Computing 1. Developing Programs. The Programming Cycle. Programming cycle. Do-it-yourself debugging
COMP1917 12s2 Debugging 1 COMP1917: Computing 1 12. Debugging Overview Programming cycle Do-it-yourself debugging Debugging withgdb Nastier bugs Memory leaks COMP1917 12s2 Debugging 2 Developing Programs
More informationWeb Applications (Part 2) The Hackers New Target
Web Applications (Part 2) The Hackers New Target AppScan Source Edition Terence Chow Advisory Technical Consultant An IBM Rational IBM Software Proof of Technology Hacking 102: Integrating Web Application
More informationNew IDE Application Profiler Enhancements
New IDE Application Profiler Enhancements Authored by: Elena Laskavaia The new Application Profiler features are currently under development for the next release of QNX Momentics. Use the forum and provide
More information1: Introduction to Object (1)
1: Introduction to Object (1) 김동원 2003.01.20 Overview (1) The progress of abstraction Smalltalk Class & Object Interface The hidden implementation Reusing the implementation Inheritance: Reusing the interface
More informationOverview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++
Scripting 1 Overview Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Rationale C++ isn't the best choice for all problems Complicated feature set, syntax Low-level,
More informationIntroduction to Mobile Development
Introduction to Mobile Development Building mobile applications can be as easy as opening up the IDE, throwing something together, doing a quick bit of testing, and submitting to an App Store all done
More informationAn Introduction to Tilde
An Introduction to Tilde Presentation on a FOSS tool for Lua development By Andrew Bailey, CTO, Tantalus & Allen Weeks, Lead Programmer, Tantalus. mailto:andrew@tantalus.com.au mailto:aweeks@tantalus.com.au
More informationInternational Journal of Current Research and Modern Education (IJCRME) ISSN (Online): ( Volume I, Issue II, 2016
A CASE STUDY OF IMPLEMENTING A GDB INTERFACE BETWEEN AN ARM BASED IC SIMULATOR AND GNU DEBUGGER H. S. Sachin Kumar* & Trisila Devi Nagavi** Department of Computer Science & Engineering, Sri Jaya Chamarajendra
More informationDEBUGGING ON FERMI PREPARING A DEBUGGABLE APPLICATION GDB. GDB on front-end nodes
DEBUGGING ON FERMI Debugging your application on a system based on a BG/Q architecture like FERMI could be an hard task due to the following problems: the core files generated by a crashing job on FERMI
More informationTESTING AND DEBUGGING
TESTING AND DEBUGGING zombie[1] zombie[3] Buuuuugs zombie[4] zombie[2] zombie[5] zombie[0] Fundamentals of Computer Science I Outline Debugging Types of Errors Syntax Errors Semantic Errors Logic Errors
More informationWindows Script Host Fundamentals
O N E Windows Script Host Fundamentals 1 The Windows Script Host, or WSH for short, is one of the most powerful and useful parts of the Windows operating system. Strangely enough, it is also one of least
More informationExploring Performance Tradeoffs in a Sudoku SAT Solver CS242 Project Report
Exploring Performance Tradeoffs in a Sudoku SAT Solver CS242 Project Report Hana Lee (leehana@stanford.edu) December 15, 2017 1 Summary I implemented a SAT solver capable of solving Sudoku puzzles using
More informationUsing Intel VTune Amplifier XE and Inspector XE in.net environment
Using Intel VTune Amplifier XE and Inspector XE in.net environment Levent Akyil Technical Computing, Analyzers and Runtime Software and Services group 1 Refresher - Intel VTune Amplifier XE Intel Inspector
More informationSoftware Testing Strategies. Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only
Chapter 22 Software Testing Strategies Slide Set to accompany Software Engineering: A Practitioner s Approach, 8/e by Roger S. Pressman and Bruce R. Maxim Slides copyright 1996, 2001, 2005, 2009, 2014
More informationAre you covered? New tooling for Quality Assurance
Are you covered? New tooling for Quality Assurance Edmund Reinhardt IBM i Application Development Tooling Edmund.Reinhardt@ca.ibm.com TUG TEC Agenda Key: 23C Agenda What is code coverage Code Coverage
More informationBrochure. Security. Fortify on Demand Dynamic Application Security Testing
Brochure Security Fortify on Demand Dynamic Application Security Testing Brochure Fortify on Demand Application Security as a Service Dynamic Application Security Testing Fortify on Demand delivers application
More informationSample Exam. Advanced Test Automation - Engineer
Sample Exam Advanced Test Automation - Engineer Questions ASTQB Created - 2018 American Software Testing Qualifications Board Copyright Notice This document may be copied in its entirety, or extracts made,
More informationComputer Science II Lab 3 Testing and Debugging
Computer Science II Lab 3 Testing and Debugging Introduction Testing and debugging are important steps in programming. Loosely, you can think of testing as verifying that your program works and debugging
More informationDebugging with gdb and valgrind
Debugging with gdb and valgrind Dr. Axel Kohlmeyer Associate Dean for Scientific Computing, CST Associate Director, Institute for Computational Science Assistant Vice President for High-Performance Computing
More informationA Technical Overview: Voiyager Dynamic Application Discovery
A Technical Overview: Voiyager Dynamic Application Discovery A brief look at the Voiyager architecture and how it provides the most comprehensive VoiceXML application testing and validation method available.
More informationSeminar report Java Submitted in partial fulfillment of the requirement for the award of degree Of CSE
A Seminar report On Java Submitted in partial fulfillment of the requirement for the award of degree Of CSE SUBMITTED TO: www.studymafia.org SUBMITTED BY: www.studymafia.org 1 Acknowledgement I would like
More informationCYSE 411/AIT 681 Secure Software Engineering. Topic #6. Seven Software Security Touchpoints (III) Instructor: Dr. Kun Sun
CYSE 411/AIT 681 Secure Software Engineering Topic #6. Seven Software Security Touchpoints (III) Instructor: Dr. Kun Sun Reading This lecture [McGraw]: Ch. 7-9 2 Seven Touchpoints 1. Code review 2. Architectural
More informationJUnit Test Patterns in Rational XDE
Copyright Rational Software 2002 http://www.therationaledge.com/content/oct_02/t_junittestpatternsxde_fh.jsp JUnit Test Patterns in Rational XDE by Frank Hagenson Independent Consultant Northern Ireland
More informationHere's how you declare a function that returns a pointer to a character:
23 of 40 3/28/2013 10:35 PM Violets are blue Roses are red C has been around, But it is new to you! ANALYSIS: Lines 32 and 33 in main() prompt the user for the desired sort order. The value entered is
More information4. Risk-Based Security Testing. Reading. CYSE 411/AIT 681 Secure Software Engineering. Seven Touchpoints. Application of Touchpoints
Reading This lecture [McGraw]: Ch. 7-9 CYSE 411/AIT 681 Secure Software Engineering Topic #6. Seven Software Security Touchpoints (III) Instructor: Dr. Kun Sun 2 Seven Touchpoints Application of Touchpoints
More informationChapter 1 Getting Started
Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different
More informationIntroduction to Problem Solving and Programming in Python.
Introduction to Problem Solving and Programming in Python http://cis-linux1.temple.edu/~tuf80213/courses/temple/cis1051/ Overview Types of errors Testing methods Debugging in Python 2 Errors An error in
More informationLaboratory Assignment #4 Debugging in Eclipse CDT 1
Lab 4 (10 points) November 20, 2013 CS-2301, System Programming for Non-majors, B-term 2013 Objective Laboratory Assignment #4 Debugging in Eclipse CDT 1 Due: at 11:59 pm on the day of your lab session
More informationBoot Camp. Dave Eckhardt Bruce Maggs
Boot Camp Dave Eckhardt de0u@andrew.cmu.edu Bruce Maggs bmm@cs.cmu.edu 1 This Is a Hard Class Traditional hazards 410 letter grade one lower than other classes All other classes this semester: one grade
More informationAHHHHHHH!!!! NOT TESTING! Anything but testing! Beat me, whip me, send me to Detroit, but don t make me write tests!
NAME DESCRIPTION Test::Tutorial - A tutorial about writing really basic tests AHHHHHHH!!!! NOT TESTING! Anything but testing! Beat me, whip me, send me to Detroit, but don t make me write tests! *sob*
More information1 Getting used to Python
1 Getting used to Python We assume you know how to program in some language, but are new to Python. We'll use Java as an informal running comparative example. Here are what we think are the most important
More informationUsing a Profiler Efficiently
Using a Profiler Efficiently Strategies that Help you to Find Performance Problems and Memory Leaks Tim Wellhausen kontakt@tim-wellhausen.de http://www.tim-wellhausen.de May 24, 2009 Proceedings of the
More informationHOW TO TURN A GREAT APP INTO A KILLER APP Trade secrets from Red Gate Software
HOW TO TURN A GREAT APP INTO A KILLER APP Trade secrets from Red Gate Software By Red Gate Software Introduction Developing a.net application is a bit like running the gauntlet. You spend months solving
More informationVb Net Tutorial For Beginners Visual Studio 2010 Express Windows Service Template
Vb Net Tutorial For Beginners Visual Studio 2010 Express Windows Service Template Visual Studio Express for Windows Desktop also offers that template, but Visual about how to use Visual Studio Express
More informationCS354 gdb Tutorial Written by Chris Feilbach
CS354 gdb Tutorial Written by Chris Feilbach Purpose This tutorial aims to show you the basics of using gdb to debug C programs. gdb is the GNU debugger, and is provided on systems that
More informationTesting! Prof. Leon Osterweil! CS 520/620! Spring 2013!
Testing Prof. Leon Osterweil CS 520/620 Spring 2013 Relations and Analysis A software product consists of A collection of (types of) artifacts Related to each other by myriad Relations The relations are
More informationIntro to Segmentation Fault Handling in Linux. By Khanh Ngo-Duy
Intro to Segmentation Fault Handling in Linux By Khanh Ngo-Duy Khanhnd@elarion.com Seminar What is Segmentation Fault (Segfault) Examples and Screenshots Tips to get Segfault information What is Segmentation
More informationLecture 15 Software Testing
Lecture 15 Software Testing Includes slides from the companion website for Sommerville, Software Engineering, 10/e. Pearson Higher Education, 2016. All rights reserved. Used with permission. Topics covered
More informationWelcome to this IBM podcast, Realizing More. Value from Your IMS Compiler Upgrade. I'm Kimberly Gist
IBM Podcast [ MUSIC ] Welcome to this IBM podcast, Realizing More Value from Your IMS Compiler Upgrade. I'm Kimberly Gist with IBM. System z compilers continue to deliver the latest programming interfaces
More informationLearning Objectives. A Meta Comment. Exercise 1. Contents. From CS61Wiki
From CS61Wiki Contents 1 Learning Objectives 2 A Meta Comment 3 Exercise 1 3.1 Questions 3.2 Running code and using GDB 3.3 Compiler Optimizations 3.4 hexdump: a handy function 3.4.1 Questions 3.5 Checkpoint
More informationHi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides
Hi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides for both problems first, and let you guys code them
More informationInside Windows Debugging (Developer Reference) PDF
Inside Windows Debugging (Developer Reference) PDF Use Windows debuggers throughout the development cycleâ and build better software Rethink your use of Windows debugging and tracing toolsâ and learn how
More informationCSCI0330 Intro Computer Systems Doeppner. Lab 02 - Tools Lab. Due: Sunday, September 23, 2018 at 6:00 PM. 1 Introduction 0.
CSCI0330 Intro Computer Systems Doeppner Lab 02 - Tools Lab Due: Sunday, September 23, 2018 at 6:00 PM 1 Introduction 0 2 Assignment 0 3 gdb 1 3.1 Setting a Breakpoint 2 3.2 Setting a Watchpoint on Local
More informationIntroduction to IBM Rational Functional Tester 6.1 Mike Kelly
Introduction to IBM Rational Functional Tester 6.1 Mike Kelly (Mike@MichaelDKelly.com) First published on IBM developerworks: http://www-130.ibm.com/developerworks/ IBM Rational Functional Tester is an
More informationUsing Static Code Analysis to Find Bugs Before They Become Failures
Using Static Code Analysis to Find Bugs Before They Become Failures Presented by Brian Walker Senior Software Engineer, Video Product Line, Tektronix, Inc. Pacific Northwest Software Quality Conference,
More informationEliminate Threading Errors to Improve Program Stability
Eliminate Threading Errors to Improve Program Stability This guide will illustrate how the thread checking capabilities in Parallel Studio can be used to find crucial threading defects early in the development
More informationChapter 14 Testing Tactics
Chapter 14 Testing Tactics Moonzoo Kim CS Division of EECS Dept. KAIST moonzoo@cs.kaist.ac.kr http://pswlab.kaist.ac.kr/courses/cs550-07 Spring 2007 1 Overview of Ch14. Testing Tactics 14.1 Software Testing
More informationSecond assignment came out Monday evening. Find defects in Hnefetafl rules written by your classmates. Topic: Code Inspection and Testing
Announcements Second assignment came out Monday evening Topic: Code Inspection and Testing Find defects in Hnefetafl rules written by your classmates Compare inspection, coverage testing, random testing,
More informationFinding and Fixing Bugs
C Finding and Fixing Bugs C.1 Introduction As you will quickly find the BUG is the pain of all programmers existence. This section looks at the most common types of BUGS and some of the strategies for
More informationHeap Management. Heap Allocation
Heap Management Heap Allocation A very flexible storage allocation mechanism is heap allocation. Any number of data objects can be allocated and freed in a memory pool, called a heap. Heap allocation is
More information