Evaluation of AgitarOne
|
|
|
- Bridget Pitts
- 10 years ago
- Views:
Transcription
1 Carnegie Mellon University, School of Computer Science Master of Software Engineering Evaluation of AgitarOne Analysis of Software Artifacts Final Project Report April 24, 2007 Edited for public release by Jonathan Aldrich. Team members Tadashi Tsuji Ayo Akinyele Fabian Hueppi Ed Yampratoom Irandi Upeka Bulumulla
2 Table of Contents INTRODUCTION... 3 MOTIVATION FOR AGITARONE... 3 DESCRIPTION OF AGITARONE... 3 CODE BASES... 3 JUNIT TEST GENERATION... 3 LEGACY CODE... 3 EXPERIMENT DESCRIPTION... 5 RESULTS OF THE EXPERIMENT... 6 EVALUATION... 7 AGITATION... 8 HOW AGITATION WORKS... 8 EXPERIMENT DESCRIPTION... 9 EXPERIMENT RESULTS... 9 EVALUATION CODE RULES EXPERIMENT DESCRIPTION EXPERIMENT RESULT EVALUATION MANAGEMENT DASHBOARD CONCLUSION Page 2 of 15
3 Introduction Motivation for AgitarOne Writing unit test cases manually is a time-consuming task. The test cases that we have written may not cover all invalid, unexpected inputs or call sequences. Moreover, inspecting code for compliance and bugs is also time-consuming. Finally, collecting and presenting test data is a tedious and error prone task that should be automated. Description of AgitarOne AgitarOne is a comprehensive and integrated unit testing tool for Java. The main feature of the tool is that it automatically generates JUnit tests that provide good code coverage. These tests can complement hand-written tests that require deep application knowledge. AgitarOne includes a unique tool called Agitator which exercise code by testing them with a wide range of inputs and observe the code s behavior. Agitator automatically generates test data to exercise the code with a high level of coverage. Agitation results are presented as a short list of observations, which are reviewed by the developer. These observations can be turned into assertions that form the basis of regression tests for the code. AgitarOne also includes a set of code rules that can automatically detect common coding errors and standards violation. These rules can be created and customized to suit the project or organization s requirements. As a management tool, AgitarOne provides a project dashboard which summarizes the project testing status at a glance. The project summary shows complexity, usage, coverage, and test status over time. It also identifies ownership of classes. Code Bases We will evaluate AgitarOne by running it on a number of code bases. Serendipity s code base: This is the sensor placement configuration tool developed by Serendipity team for last year s Studio project that we have to enhance. Crystal Analysis DWP: A static analysis tool built on Crystal. Board Game: The code provided as a test bed for our assignment. JUnit Test Generation AgitarOne s test generation features can be used as regression suites for legacy code or for developers to learn about their code. In this experiment we evaluate the effectiveness of AgitarOne for regression testing. Legacy code AgitarOne is ideal for performing regression testing on legacy code. The generated tests can provide a safety net that developers can use to ensure that their refactoring activities don t have unintended side effects. The first step for using AgitarOne on legacy code is to generate the tests on the existing code. As mentioned, in a legacy code scenario the intent of the generated tests is to prevent breaking the original behavior of the code. So AgitarOne assumes that the Page 3 of 15
4 legacy code is correct and thus creates tests by inspecting the functionality of the code. Therefore, all test cases pass. These tests can be best described as characterization tests 1. They are based not on what the code is supposed to do, but what it actually does. After the tests are generated, the programmer can start with refactoring and modifying the original code base. The generated tests should be rerun after every modification to check if the tests fail. These generated tests can also be included into a regression test suite. Figure 1: If AgitarOne can t cover all the code, it provides advice on how to help improving the coverage. 1 Page 4 of 15
5 Experiment description The objective of this experiment was to evaluate how effective AgitarOne is at catching bugs that are introduced into Serendipity s code base. In this experiment, we used AgitarOne as is recommended for legacy code and made no modifications to the test cases. We ran the test generation for two classes in the code base. These two classes are described in the tables below. Name Description Methods in original class: 10 Generated test methods: 47 Initial test coverage: 93% Comment: Table 1: Data of Utilities.java Name Description Methods in original class: 20 Generated test methods: 7 Initial test coverage: 37% Table 2: Data of JessManager.java bosch.ca.jess.devicepositioner.utilities.java This class does calculations in a 3D coordination system. For example it has methods that calculate the new location of a point if it is moved a certain distance with a certain angle. Since the original code does many calculations, the bugs we introduced were mostly about tampering with some of the intermediate values in the calculation: bosch.ca.jess.jessmanager.java This class manages all operations related to Jess. For example, it has methods for registering objects in Jess, managing the rule engine s focus when it is running etc. Page 5 of 15
6 Results of the experiment We introduced the following bugs into the code and got the following results. bosch.ca.jess.devicepositioner.utilities.java Bug 1 Bug 2 Bug 3 Bug 4 Bug 5 In a method that calculates the slope between two points, we just added a random number to the result. Result: 6 tests failed This method was used in many of the other test methods and thus the change was reflected in many failures. One method needs to find the room in which an object is located. For this the method accepts the object as a parameter and returns the room object. We changed the method so that it returns just a new room object. Result: 1 test failed In another test we just changed a call from Math.tan(param) to Math.cos(param) in one of the branches of an if statement. Result: 3 tests failed One method returns a Point object. We tried to switch the X and Y coordinates of this return value. Result: 1 test failed We changed the calculation so that the Z value of the return object from Bug 4 deviates from its intended value. Result: Bug wasn t found. Reason: For all the methods that did calculations on a point object, the generated tests only asserted the X value. Any changes on other members of the object weren t reflected in failed tests. Table 3: Bugs in Utilities.java Page 6 of 15
7 bosch.ca.jess.jessmanager.java Bug 1 Bug 2 JessManager is a singleton class, and therefore should only be initialized through the getinstance() method. We changed this so that a new instance of JessManager is created each time the constructor is called. Result: Bug wasn t found If intializeengine() method is run more than once it will cause an exception. As such, intializeengine() is run from inside the constructor only. We changed the code so that this is no longer called from within the constructor. Result: 1 test failed Agitar was able to identify this and generate a negative test case for it. Table 4: Bugs in JessManager.java Evaluation Benefits Exploring branches: From the tests for Utilities class, we can summarize that the Agitar tests could find changes in the mathematical calculations even if they were in nested if statements. Agitar created enough tests to cover most of the branches in a method. Negative test cases: In Bug 2 for our JessManager class, AgitarOne was able to identify that the initializeengine() method should not run more than once. Therefore, it created a negative test case which ran this method twice. Save resources: AgitarOne can be very beneficial because creating a regression test suite manually would take up much more resources. No false positives: Since the tool checks whether results match their expectations, it is unlikely that tests will fail, if the behavior of the code didn t change. Small learning curve: It needs little knowledge to start using the tool, and quickly creates a good baseline for the testing. Also the creation of the helper classes does not seem to be difficult and AgitarOne already provides a wizard for creating them. Limitations Handling complex return objects: The problem was that for methods that returned a complex object, only certain members of that object were tested for correctness (see Bug 5 in the Utilities class). This can result in many false negatives. Non deterministic number of test cases: Upon regeneration of test cases for the same class, we received files containing different numbers of test cases. This is a disadvantage because the optimized coverage may not be achieved on the first generation of test cases. The user might have to generate the test cases several times and may not know if the next generation will achieve a higher coverage than the current one. Page 7 of 15
8 Usability for new user: Newly generated tests override the existing tests. This might be cumbersome for new users, since they have to remember to save their existing test cases before regenerating new ones. Handling external programs (Jess): Based on the statistics that we collected about the two classes (see tables 1 and 2), Agitar did not comprehensively test the JessManager class, which is a manager for the external Jess rules engine. Bottom Line Overall the unit tests generated by AgitarOne create a security net for legacy code that can help make developers aware of unintended effects of their modifications. The test cases also provide a framework that can be extended by the developer to achieve better results. The techniques that AgitarOne provides for this are Test data helpers and Assertion helpers. AgitarOne also has its own set of annotations that can be added to the test cases. Although the generated tests are not perfect they provide a very good starting point. Writing all these test cases manually for already existing code is a huge time investment that most projects can t afford. So, for a large legacy code base without test cases, the only reason for not using the tool is its cost. The project would need to evaluate if the time saved for not writing tests manually is bigger than the acquisition cost. Even if the developer needs to add additional helper classes to enhance the tests, the time saved may still be significant. Another alternative would be to not use unit testing at all, and just do peer-reviews for all the changes. This variant however seem to be difficult to apply since the legacy code may be unknown and the effects of changes can t be assessed easily. Also in this case the project would need to make a trade-off between the invested time for the reviews and the cost of AgitarOne. An additional factor in the evaluation of a buy decision, of course is that the tool can be reused in other projects, so that the investment would make sense from an organizational perspective, even if it isn t worthwhile for one project. If we can continue to use this tool, we will use it to create a regression test suite for our legacy code, and then use it during our implementation stage to make sure that our new code does not break any existing functionality. Agitation AgitarOne s agitation feature automatically generates test input data and enables the developer to observe the code s behavior. In this section, we briefly describe how this feature performs this automatic testing; we describe two experiments that we applied this feature to and the results in terms of bugs that were identified. Finally, we evaluate the feature based on our experience with it. How agitation works The agitation feature starts out by creating instances of classes from the code. Then, it automatically performs method calls with those instances using a wide variety of input data. The input data is based on the types of the class and method parameters. This is called exercising or agitating the classes and upon completing this process, results are produced. Results include observations and assertions, which are the behavior of the classes and methods it recorded while exercising with different inputs. In addition, it also Page 8 of 15
9 shows unexpected behavior i.e., when a specific input causes one s code to throw an exception, and this exception was not caught. Essentially, the results produced through agitation are facts about the classes and methods, it is then left up to the developer to decide whether the observations are what were intended. Experiment description The objective of our experiments was to evaluate how effective agitation is at catching bugs in an ongoing project and the Othello board game. In these experiments we applied agitation giving some assistance to the input data to the first project and without assistance to the second. DWP Experiment In the first experiment we applied agitation to DWP, which is a project that applies formal methods to reason about properties and behavior of Java programs. This application uses Dijkstra s Weakest Precondition (DWP), where given a desired post-condition and the source code, a pre-condition is generated. This resulting pre-condition represents what the source code must satisfy so that when it executes, its final state satisfies the desired post-condition. Within the code base of this application, there are two parts in which we applied agitation, a parser and an analyzer. The parser uses Crystal to implement the translation of source code to DWP notation. While the analyzer implements the application of the DWP method to the translated source code. Othello Board Game experiment The second experiment was to apply agitation to the Othello Board game project. This project is an implementation of the board game in which we will agitate all of its classes and see if there are unexpected behavior and errors in the code. Experiment Results DWP Parser In agitating the parser class, a NullPointerException was identified in the constructor. This uncaught exception is a verified bug. In order to test that the parser is actually translating the source code properly, we need to use the factory feature. We were able to use an existing random factory object to create input data for the IAssignmentExpressionNode type (method parameter). This small and limited test did not reveal any issues about the method implemented within this class. Nonetheless, Agitator observed not-null preconditions on field variables in some methods (e.g., this.x!= null). These are useful and valid observations that were then turned into assertions for regression tests. DWP Analyzer We agitated several classes from the analyzer with the following results. Total Warnings Identified 27 Actual Bugs 17 False Positive 10 Time to run test 20 seconds Agitator identified 17 instances of uncaught exceptions which are either a null pointer exception or an array index out of bound exception. These are valid bugs that we Page 9 of 15
10 somehow overlooked while writing the code. They are all located within a specific part (data repository) of the analyzer. We consider the severity of these bugs to be medium. In addition, there were 10 issues that the tool warned about, but we were not concerned with them because they were not real issues. Agitator made several observations that we consider valid such as not-null preconditions on field variables in some methods (e.g., this.x!= null). These observations can be turned into assertions for regression tests. Agitator also observed some relationships that were valid but too weak. For example, it observed that -100 <= ichildnumber <= 100 while DWP notation allows only up to 3 children nodes. However, we are able to edit this observation and turn it into a stronger assertion. Othello Board Game The results of agitating BoardGame are shown in the following table. Total Warnings Identified 47 Actual Bugs 30 False Positive 17 Time spent to run test 30 seconds Agitator identified 30 instances of uncaught exceptions of 8 distinct types (NullPointer, Runtime, AssertionError, NumberFormat, NoSuchElment, ArrayIndexOutOfBounds, and ClassCast). These are valid bugs that were scattered throughout the project. We consider the severity of these bugs to be medium. The tool was not able to test all classes in the project due to timeout issues, especially for the AIThread class. The AgitarOne server timed out when generating the tests because they took too long to compute. The figures in the table could have been higher if we could have agitated the AIThread class successfully. Evaluation Benefits Unexpected behavior: The tool uncovers unexpected behavior more effectively than human methods (i.e., manual unit testing) through its ability to test classes and methods with a variety of inputs. For instance, it was able to identify null pointer exceptions in a critical part of the analyzer, and this was very useful because we overlooked that exception when writing those parts. Efficiency: The tool identified valid observations and possible assertions about the code within a short amount of time. Basically, it identifies what the code actually does rather than what we intended the code to do. Limitations Coverage: The tool did not have 100% code coverage for classes because it could not generate input data for some methods to test it properly. Learning curve: For agitation to be useful in most cases, one will have to write factories to assist the agitation process, so that it guides the creation of input data. However, writing good factories requires some upfront work in learning the factories API. Therefore, given more time to use this tool, we could implement some factories to make the most of applying it to a complex code base like Crystal. Page 10 of 15
11 Bottom Line The agitation feature provided by AgitarOne gives you the ability to assess the quality of your code with concrete evidence. Through some up front work in developing factories to guide agitation, one can benefit later in testing and catching bugs in one s code. In addition, despite this features limitations, it proves to be more effective over manual unit testing because of the difficulty in coming up with a variety of inputs to test methods thoroughly with unit testing. Thus, if we continue to use this tool, we will create factories for testing our code, and then use it for agitation throughout implementation. Code Rules AgitarOne s code rules can inspect code automatically to ensure compliance with standards and detect many simple errors as well. In this experiment we evaluate how useful are the code rules for existing legacy code bases. Given that software applications are not usually maintained for their entire lifetimes by the original authors, the code should follow standards and conventions that improve the readability and reduce the possibility of errors. Code Rules are graded into 4 categories of decreasing severity: error, warning, info, and ignore. The rules are also classified into different groups such as: Coding and naming conventions Formatting not selected as default rules, would be useful in an organization setting. Metrics such as complexity, length, and method counts Object oriented programming best practices Possible bugs these are important since they may indicate hidden bugs Unused code Specialized rules (for J2EE, JUnit, and Javadoc) Experiment description The objective of the experiment was to evaluate how useful AgitarOne code rules are at finding improperly written code in the Serendipity code base. In this experiment we used AgitarOne default selection of code rules. Experiment result Serendipity code base Although the code base is significant (20 KSLOC), we felt that AgitarOne should not flagged it down too much since we have been assured by indicators such as customer acceptance, test results, and the attention paid to quality. The result from running Code Rules mostly confirmed our priori judgment. There are 34 errors, 506 warnings, and 7 infos. Most of these are of the same categories, however. We will describe notable findings as follows. Errors All 34 errors are due to 3 code rules. Combining assignment within an if condition For example, if ((error = Native.deleteSensor(svSensorID))!= 0) { These are not actually errors, but can be confusing. Page 11 of 15
12 A clone method does not call super.clone() Again, these are not actually errors. A class overrides equals() but does not override hashcode() This is a possible source of bug because we may lose data if the class is used as the key in a hash table. Currently, none of these flagged classes are used as hash table keys. Nonetheless, it is a good preventative measure to override their hashcode() methods. Warnings Most of the warnings are due to unused methods, fields, parameters, and local variables. These dead codes are not bugs, but can create confusion for maintainers. The rest of the warnings belong to the following categories: Exceeding metrics o Too many cases (> 10) in a switch statement o Cyclomatic complexity > 15 o A method makes more than 100 method calls These flags indicate a place where we may want to refactor the code, but are not actually bugs. The very complex method that makes more than 100 method calls is a method that creates icons for components in a tool palette. Since there are many components, there are many calls. The methods with high cyclomatic complexity are all user interface handling codes. Using == to compare objects, instead of using equals() Some of these comparisons are not a problem since they compare statically created objects against one another. On the other hand, there are some comparisons that may cause trouble and we should correct them. Interface implementations should be abstract or non-trivial Codes flagged by these simply have empty implementation (do nothing or return null). Some of them are not bugs but some of them are classes that were not finished due to time constraint. All unfinished works that we have known about before running the tool are correctly flagged with this rule. Using StringVar.equals( String literal ) instead of String literal.equals(stringvar) This can be a problem if the string variable is null, resulting in NullPointerException. Infos All infos are due to empty catch blocks. Some of them have comments which note that the catch block should exist without doing anything other than catching the exceptions. But some of them do not have comments, which may mean the implementation is not finished. Crystal We also ran Code Rules on the Crystal code base to see if we can get the same results. Code Rules issued 5 errors, 367 warnings, and 4 infos for Crystal. Most of the issues are similar to the ones we found in Serendipity s code base, with two notable additional issues: Page 12 of 15
13 Class inheritance hierarchy deeper than 5 This flag indicates that Crystal class hierarchy is very complex, which is probably warranted. Subclassing RuntimeException instead of normal (checked) Exception We don t know enough about Crystal implementation to determine whether this is a mistake or an intentional violation of convention. Evaluation Benefits The tool is fast and does not consume much resource. The resulting output provides us with possible location of bugs, dead code, and areas with high complexity. Most of the possible bugs are easy to fix. Limitations The false positives rate can be very high if the chosen rules do not match the coding standards followed by the developers. This problem can be fixed by turning off that specific rule. Bottom Line The Code Rules feature provided by AgitarOne is useful for legacy code. The rules can point out not only the possible location of bugs but also where we should focus the effort of refactoring. The dead code and the methods with high complexity should be priority targets for refactoring. If we can continue to use this tool, we will use it to complement inspection by forcing developers to check against Code Rules before submitting the code for inspection. This automated tool can help increase inspection efficiency. Management dashboard The management dashboard is a view which collects results of tests and shows the summary of the project. Because we did not have data collected over a period of time, we were unable to perform an experiment using this feature. However, because it is a key part of Agitar, we try to evaluate it here. Features: Analyzes the results of JUnit Tests and agitation Reports on code-rule violations Works with existing Ant build/test scripts or AgitarOne project files Automatically associates test classes to project classes Assigns test points for JUnit and AgitarOne assertions Let s you set targets for testing and coverage metrics Shows progress over time Sends executive summary Sends customized reports with each developer s status Page 13 of 15
14 Figure 1: This is an example the project summary view of the management dashboard 2 Benefits Useful for project management: This is because it summarizes the project s testing status at a glance. The project summary shows complexity, usage, coverage, and test status over time. Limitations Server: It needs a dedicated server to run it. Employee morale: Manager may use test performance to evaluate employees. Bottom Line If we can use this tool to manage our projects, we can use it to collect metrics since we are process-oriented. 2 Using the Agitar Management Dashboard, Version 4.1, March 2007 Page 14 of 15
15 Conclusion From the evaluation of each of the features we can conclude that AgitarOne provides many benefits for a project. The test generation feature is especially useful when used in conjunction with a large legacy code base that doesn t have unit tests. It spans a security net that can catch many side effects of refactoring activities. For new development, the Agitation function provides benefits with the intensive test input generation. It helped us to spot some possible problems such as a null pointer exception that could led to an application crash during the production phase. Additional features such as the code rules validation can find further potential problems or inconsistencies. This also can save a lot of manual work during code reviews. The management dashboard is a big plus for projects that want to have good tracking quality assurance. The automated gathering of these metrics adds to accuracy and can largely reduce the time spent to manually elicit this data from the system. Although all these features also have their drawbacks and should not be used blindly, the benefits in our opinion outweigh. Page 15 of 15
Integrated Error-Detection Techniques: Find More Bugs in Java Applications
Integrated Error-Detection Techniques: Find More Bugs in Java Applications Software verification techniques such as pattern-based static code analysis, runtime error detection, unit testing, and flow analysis
Statically Checking API Protocol Conformance with Mined Multi-Object Specifications Companion Report
Statically Checking API Protocol Conformance with Mined Multi-Object Specifications Companion Report Michael Pradel 1, Ciera Jaspan 2, Jonathan Aldrich 2, and Thomas R. Gross 1 1 Department of Computer
CS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions
CS 2112 Spring 2014 Assignment 3 Data Structures and Web Filtering Due: March 4, 2014 11:59 PM Implementing spam blacklists and web filters requires matching candidate domain names and URLs very rapidly
Outline. 1 Denitions. 2 Principles. 4 Implementation and Evaluation. 5 Debugging. 6 References
Outline Computer Science 331 Introduction to Testing of Programs Mike Jacobson Department of Computer Science University of Calgary Lecture #3-4 1 Denitions 2 3 4 Implementation and Evaluation 5 Debugging
Data Flow Static Code Analysis Best Practices
Data Flow Static Code Analysis Best Practices Introduction This paper examines why and how to add flow analysis to your existing testing strategies. After introducing the general concept and benefits of
RUnit - A Unit Test Framework for R
RUnit - A Unit Test Framework for R Thomas König, Klaus Jünemann, and Matthias Burger Epigenomics AG November 5, 2015 Contents 1 Introduction 2 2 The RUnit package 4 2.1 Test case execution........................
Testing Rails. by Josh Steiner. thoughtbot
Testing Rails by Josh Steiner thoughtbot Testing Rails Josh Steiner April 10, 2015 Contents thoughtbot Books iii Contact us................................ iii Introduction 1 Why test?.................................
Accelerate Software Delivery
Accelerate Software Delivery with Continuous Integration and Testing Kevin Lawrence [email protected] Agitar Software, 2009 1 Agenda What is Continuous Integration Continuous Integration Practices Impact
Software Construction
Software Construction Debugging and Exceptions Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Learning Target You know the proper usage
A Practical Guide to Test Case Types in Java
Software Tests with Faktor-IPS Gunnar Tacke, Jan Ortmann (Dokumentversion 203) Overview In each software development project, software testing entails considerable expenses. Running regression tests manually
CS 111 Classes I 1. Software Organization View to this point:
CS 111 Classes I 1 Software Organization View to this point: Data Objects and primitive types Primitive types operators (+, /,,*, %). int, float, double, char, boolean Memory location holds the data Objects
On the Relation between Design Contracts and Errors: A Software Development Strategy
On the Relation between Design Contracts and Errors: A Software Development Strategy Eivind J. Nordby, Martin Blom, Anna Brunstrom Computer Science, Karlstad University SE-651 88 Karlstad, Sweden {Eivind.Nordby,
Formal Software Testing. Terri Grenda, CSTE IV&V Testing Solutions, LLC www.ivvts.com
Formal Software Testing Terri Grenda, CSTE IV&V Testing Solutions, LLC www.ivvts.com Scope of Testing Find defects early Remove defects prior to production Identify Risks Unbiased opinion When Should Testing
Pattern Insight Clone Detection
Pattern Insight Clone Detection TM The fastest, most effective way to discover all similar code segments What is Clone Detection? Pattern Insight Clone Detection is a powerful pattern discovery technology
Baseline Code Analysis Using McCabe IQ
White Paper Table of Contents What is Baseline Code Analysis?.....2 Importance of Baseline Code Analysis...2 The Objectives of Baseline Code Analysis...4 Best Practices for Baseline Code Analysis...4 Challenges
Test-Driven Development and Unit Testing with Parasoft Concerto
Test-Driven Development and Unit Testing with Parasoft Concerto What is Test-Driven Development (TDD)? Test-Driven Development (TDD) was first introduced as a key part of Extreme Programming. In a nutshell,
tools that make every developer a quality expert
tools that make every developer a quality expert Google: www.google.com Copyright 2006-2010, Google,Inc.. All rights are reserved. Google is a registered trademark of Google, Inc. and CodePro AnalytiX
Chapter 5. Regression Testing of Web-Components
Chapter 5 Regression Testing of Web-Components With emergence of services and information over the internet and intranet, Web sites have become complex. Web components and their underlying parts are evolving
Testing Tools Content (Manual with Selenium) Levels of Testing
Course Objectives: This course is designed to train the fresher's, intermediate and professionals on testing with the concepts of manual testing and Automation with Selenium. The main focus is, once the
Software Testing. Knowledge Base. Rajat Kumar Bal. Introduction
Software Testing Rajat Kumar Bal Introduction In India itself, Software industry growth has been phenomenal. IT field has enormously grown in the past 50 years. IT industry in India is expected to touch
Co-Creation of Models and Metamodels for Enterprise. Architecture Projects.
Co-Creation of Models and Metamodels for Enterprise Architecture Projects Paola Gómez [email protected] Hector Florez [email protected] ABSTRACT The linguistic conformance and the ontological
EVALUATION. WA1844 WebSphere Process Server 7.0 Programming Using WebSphere Integration COPY. Developer
WA1844 WebSphere Process Server 7.0 Programming Using WebSphere Integration Developer Web Age Solutions Inc. USA: 1-877-517-6540 Canada: 1-866-206-4644 Web: http://www.webagesolutions.com Chapter 6 - Introduction
Content. Development Tools 2(63)
Development Tools Content Project management and build, Maven Version control, Git Code coverage, JaCoCo Profiling, NetBeans Static Analyzer, NetBeans Continuous integration, Hudson Development Tools 2(63)
Introduction to Programming System Design. CSCI 455x (4 Units)
Introduction to Programming System Design CSCI 455x (4 Units) Description This course covers programming in Java and C++. Topics include review of basic programming concepts such as control structures,
Xcode Project Management Guide. (Legacy)
Xcode Project Management Guide (Legacy) Contents Introduction 10 Organization of This Document 10 See Also 11 Part I: Project Organization 12 Overview of an Xcode Project 13 Components of an Xcode Project
Introduction to Functional Verification. Niels Burkhardt
Introduction to Functional Verification Overview Verification issues Verification technologies Verification approaches Universal Verification Methodology Conclusion Functional Verification issues Hardware
Software testing. Objectives
Software testing cmsc435-1 Objectives To discuss the distinctions between validation testing and defect testing To describe the principles of system and component testing To describe strategies for generating
Experimental Comparison of Concolic and Random Testing for Java Card Applets
Experimental Comparison of Concolic and Random Testing for Java Card Applets Kari Kähkönen, Roland Kindermann, Keijo Heljanko, and Ilkka Niemelä Aalto University, Department of Information and Computer
Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition
Java 6 'th edition Concepts INTERNATIONAL STUDENT VERSION CONTENTS PREFACE vii SPECIAL FEATURES xxviii chapter i INTRODUCTION 1 1.1 What Is Programming? 2 J.2 The Anatomy of a Computer 3 1.3 Translating
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
http://www.wakaleo.com [email protected] Java Software Quality Tools and techniques
Wakaleo Consulting O p t i m i z i n g y o u r s o f t w a r e d e v e l o p m e n t http://www.wakaleo.com [email protected] Java Software Quality Tools and techniques 1 Introduction Agenda tools
Interactive Application Security Testing (IAST)
WHITEPAPER Interactive Application Security Testing (IAST) The World s Fastest Application Security Software Software affects virtually every aspect of an individual s finances, safety, government, communication,
A framework for creating custom rules for static analysis tools
A framework for creating custom rules for static analysis tools Eric Dalci John Steven Cigital Inc. 21351 Ridgetop Circle, Suite 400 Dulles VA 20166 (703) 404-9293 edalci,[email protected] Abstract Code
Chapter 8 Software Testing
Chapter 8 Software Testing Summary 1 Topics covered Development testing Test-driven development Release testing User testing 2 Program testing Testing is intended to show that a program does what it is
Summit Public Schools Summit, New Jersey Grade Level / Content Area: Mathematics Length of Course: 1 Academic Year Curriculum: AP Computer Science A
Summit Public Schools Summit, New Jersey Grade Level / Content Area: Mathematics Length of Course: 1 Academic Year Curriculum: AP Computer Science A Developed By Brian Weinfeld Course Description: AP Computer
Application Test Management and Quality Assurance
SAP Brief Extensions SAP Quality Center by HP Objectives Application Test Management and Quality Assurance Deliver new software with confidence Deliver new software with confidence Testing is critical
Database Studio is the new tool to administrate SAP MaxDB database instances as of version 7.5.
1 2 3 4 Database Studio is the new tool to administrate SAP MaxDB database instances as of version 7.5. It replaces the previous tools Database Manager GUI and SQL Studio from SAP MaxDB version 7.7 onwards
Software Engineering Techniques
Software Engineering Techniques Low level design issues for programming-in-the-large. Software Quality Design by contract Pre- and post conditions Class invariants Ten do Ten do nots Another type of summary
How to test and debug an ASP.NET application
Chapter 4 How to test and debug an ASP.NET application 113 4 How to test and debug an ASP.NET application If you ve done much programming, you know that testing and debugging are often the most difficult
Static Analysis Best Practices
Static Analysis Best Practices This is the first in a series of interviews in which Adam Kolawa Parasoft CEO and Automated Defect Prevention: Best Practices in Software Management (Wiley-IEEE, 2007) co-author
Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53
Preface xvi Part I Introduction and System Engineering 1 Chapter 1 Introduction 2 1.1 What Is Software Engineering? 2 1.2 Why Software Engineering? 3 1.3 Software Life-Cycle Activities 4 1.3.1 Software
FSW QA Testing Levels Definitions
FSW QA Testing Levels Definitions 1. Overview This document is used to help determine the amount and quality of testing (or its scope) that is planned for or has been performed on a project. This analysis
No no-argument constructor. No default constructor found
Every software developer deals with bugs. The really tough bugs aren t detected by the compiler. Nasty bugs manifest themselves only when executed at runtime. Here is a list of the top ten difficult and
Continuous integration for databases using
Continuous integration for databases using Red Wie Sie Gate die tools Microsoft SQL An overview Continuous integration for databases using Red Gate tools An overview Contents Why continuous integration?
CSTE Mock Test - Part I - Questions Along with Answers
Note: This material is for Evaluators reference only. Caters to answers of CSTE Mock Test - Part I paper. 1. A branch is (Ans: d) a. An unconditional transfer of control from any statement to any other
Modeling Guidelines Manual
Modeling Guidelines Manual [Insert company name here] July 2014 Author: John Doe [email protected] Page 1 of 22 Table of Contents 1. Introduction... 3 2. Business Process Management (BPM)... 4 2.1.
Software Testing. System, Acceptance and Regression Testing
Software Testing System, Acceptance and Regression Testing Objectives Distinguish system and acceptance testing o How and why they differ from each other and from unit and integration testing Understand
An Automated Testing Tool Using UI Structure
, March 12-14, 2014, Hong Kong An Automated Testing Tool Using UI Structure Nutharat Harnvorawong, Taratip Suwannasart, Member, IAENG Abstract Testers usually run a new version of software against existing
Chapter 24 - Quality Management. Lecture 1. Chapter 24 Quality management
Chapter 24 - Quality Management Lecture 1 1 Topics covered Software quality Software standards Reviews and inspections Software measurement and metrics 2 Software quality management Concerned with ensuring
FIREWALL CLEANUP WHITE PAPER
FIREWALL CLEANUP WHITE PAPER Firewall Cleanup Recommendations Considerations for Improved Firewall Efficiency, Better Security, and Reduced Policy Complexity Table of Contents Executive Summary... 3 The
TOOL EVALUATION REPORT: FORTIFY
TOOL EVALUATION REPORT: FORTIFY Derek D Souza, Yoon Phil Kim, Tim Kral, Tejas Ranade, Somesh Sasalatti ABOUT THE TOOL Background The tool that we have evaluated is the Fortify Source Code Analyzer (Fortify
PHP Debugging. Draft: March 19, 2013 2013 Christopher Vickery
PHP Debugging Draft: March 19, 2013 2013 Christopher Vickery Introduction Debugging is the art of locating errors in your code. There are three types of errors to deal with: 1. Syntax errors: When code
Agile Development and Testing Practices highlighted by the case studies as being particularly valuable from a software quality perspective
Agile Development and Testing Practices highlighted by the case studies as being particularly valuable from a software quality perspective Iteration Advantages: bringing testing into the development life
Course Title: Software Development
Course Title: Software Development Unit: Customer Service Content Standard(s) and Depth of 1. Analyze customer software needs and system requirements to design an information technology-based project plan.
Testing, What is it Good For? Absolutely Everything!
Testing, What is it Good For? Absolutely Everything! An overview of software testing and why it s an essential step in building a good product Beth Schechner Elementool The content of this ebook is provided
User Stories Applied
User Stories Applied for Agile Software Development Mike Cohn Boston San Francisco New York Toronto Montreal London Munich Paris Madrid Capetown Sydney Tokyo Singapore Mexico City Chapter 2 Writing Stories
Introduction to Automated Testing
Introduction to Automated Testing What is Software testing? Examination of a software unit, several integrated software units or an entire software package by running it. execution based on test cases
White Paper. Software Development Best Practices: Enterprise Code Portal
White Paper Software Development Best Practices: Enterprise Code Portal An Enterprise Code Portal is an inside the firewall software solution that enables enterprise software development organizations
Computing Concepts with Java Essentials
2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann
Adapting C++ Exception Handling to an Extended COM Exception Model
Adapting C++ Exception Handling to an Extended COM Exception Model Bjørn Egil Hansen DNV AS, DT 990 Risk Management Software Palace House, 3 Cathedral Street, London SE1 9DE, UK [email protected]
Software Testing & Analysis (F22ST3): Static Analysis Techniques 2. Andrew Ireland
Software Testing & Analysis (F22ST3) Static Analysis Techniques Andrew Ireland School of Mathematical and Computer Science Heriot-Watt University Edinburgh Software Testing & Analysis (F22ST3): Static
Configuration Management in a Software Product Line
Configuration Management in a Software Product Line John D. McGregor School of Computing Clemson University Clemson, SC 29634 [email protected] Sholom Cohen Software Engineering Institute Carnegie
Logistics. Software Testing. Logistics. Logistics. Plan for this week. Before we begin. Project. Final exam. Questions?
Logistics Project Part 3 (block) due Sunday, Oct 30 Feedback by Monday Logistics Project Part 4 (clock variant) due Sunday, Nov 13 th Individual submission Recommended: Submit by Nov 6 th Scoring Functionality
Meeting DO-178B Software Verification Guidelines with Coverity Integrity Center
Meeting DO-178B Software Verification Guidelines with Coverity Integrity Center May, 2009 Thomas Schultz Director of Product Strategy, Coverity, Inc. Executive Summary Development organizations that create
A Modular Framework Approach to Regression Testing of SQL
UPTEC IT 14 008 Examensarbete 30 hp Juni 2014 A Modular Framework Approach to Regression Testing of SQL Oskar Eriksson Abstract A Modular Framework Approach to Regression Testing of SQL Oskar Eriksson
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Evaluating a new programming language
In G. Kadoda (Ed). Proc. PPIG 13 Pages 275-289 Evaluating a new programming language Steven Clarke Microsoft Corporation 1 Microsoft Way Redmond, WA 98052 USA +1 425 705 5978 [email protected] Keywords:
How To Install An Aneka Cloud On A Windows 7 Computer (For Free)
MANJRASOFT PTY LTD Aneka 3.0 Manjrasoft 5/13/2013 This document describes in detail the steps involved in installing and configuring an Aneka Cloud. It covers the prerequisites for the installation, the
Data Quality Mining: Employing Classifiers for Assuring consistent Datasets
Data Quality Mining: Employing Classifiers for Assuring consistent Datasets Fabian Grüning Carl von Ossietzky Universität Oldenburg, Germany, [email protected] Abstract: Independent
Static Analysis. Find the Bug! 15-654: Analysis of Software Artifacts. Jonathan Aldrich. disable interrupts. ERROR: returning with interrupts disabled
Static Analysis 15-654: Analysis of Software Artifacts Jonathan Aldrich 1 Find the Bug! Source: Engler et al., Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions, OSDI
Business Process Management with @enterprise
Business Process Management with @enterprise March 2014 Groiss Informatics GmbH 1 Introduction Process orientation enables modern organizations to focus on the valueadding core processes and increase
(Refer Slide Time: 01:52)
Software Engineering Prof. N. L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture - 2 Introduction to Software Engineering Challenges, Process Models etc (Part 2) This
Table of Contents. LESSON: The JUnit Test Tool...1. Subjects...2. Testing 123...3. What JUnit Provides...4. JUnit Concepts...5
Table of Contents LESSON: The JUnit Test Tool...1 Subjects...2 Testing 123...3 What JUnit Provides...4 JUnit Concepts...5 Example Testing a Queue Class...6 Example TestCase Class for Queue...7 Example
EVALUATING METRICS AT CLASS AND METHOD LEVEL FOR JAVA PROGRAMS USING KNOWLEDGE BASED SYSTEMS
EVALUATING METRICS AT CLASS AND METHOD LEVEL FOR JAVA PROGRAMS USING KNOWLEDGE BASED SYSTEMS Umamaheswari E. 1, N. Bhalaji 2 and D. K. Ghosh 3 1 SCSE, VIT Chennai Campus, Chennai, India 2 SSN College of
Approach of Unit testing with the help of JUnit
Approach of Unit testing with the help of JUnit Satish Mishra [email protected] About me! Satish Mishra! Master of Electronics Science from India! Worked as Software Engineer,Project Manager,Quality
Testability of Dependency injection
University Of Amsterdam Faculty of Science Master Thesis Software Engineering Testability of Dependency injection An attempt to find out how the testability of source code is affected when the dependency
<Insert Picture Here> What's New in NetBeans IDE 7.2
Slide 1 What's New in NetBeans IDE 7.2 The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated
The first program: Little Crab
CHAPTER 2 The first program: Little Crab topics: concepts: writing code: movement, turning, reacting to the screen edges source code, method call, parameter, sequence, if-statement In the previous chapter,
http://www.test-institute.org International Software Test Institute
THE ONLY BOOK CAN SIMPLY LEARN SOFTWARE TESTING! Page 1 Contents ABOUT THE AUTHOR... 3 1. Introduction To Software Testing... 4 2. What is Software Quality Assurance?... 7 3. What Is Software Testing?...
Oracle Siebel Marketing and Oracle B2B Cross- Channel Marketing Integration Guide ORACLE WHITE PAPER AUGUST 2014
Oracle Siebel Marketing and Oracle B2B Cross- Channel Marketing Integration Guide ORACLE WHITE PAPER AUGUST 2014 Disclaimer The following is intended to outline our general product direction. It is intended
Different Approaches to White Box Testing Technique for Finding Errors
Different Approaches to White Box Testing Technique for Finding Errors Mohd. Ehmer Khan Department of Information Technology Al Musanna College of Technology, Sultanate of Oman [email protected] Abstract
IBM BPM V8.5 Standard Consistent Document Managment
IBM Software An IBM Proof of Technology IBM BPM V8.5 Standard Consistent Document Managment Lab Exercises Version 1.0 Author: Sebastian Carbajales An IBM Proof of Technology Catalog Number Copyright IBM
Difference Between Model-Driven and Traditional Iterative Software Development
Process Implications of Model-Driven Software Development Author: Jorn Bettin Version 1.0 September 2004 Copyright 2003, 2004 SoftMetaWare Ltd. SoftMetaWare is a trademark of SoftMetaWare Ltd. All other
IBM Business Monitor V8.0 Global monitoring context lab
Copyright IBM Corporation 2012 All rights reserved IBM BUSINESS MONITOR 8.0 LAB EXERCISE IBM Business Monitor V8.0 lab What this exercise is about... 2 Lab requirements... 2 What you should be able to
WebSphere Business Modeler
Discovering the Value of SOA WebSphere Process Integration WebSphere Business Modeler Workshop SOA on your terms and our expertise Soudabeh Javadi Consulting Technical Sales Support WebSphere Process Integration
Satisfying ASIL Requirements with Parasoft C++test Achieving Functional Safety in the Automotive Industry
Satisfying Requirements with Parasoft C++test Achieving Functional Safety in the Automotive Industry Introduction Safety functions are increasingly being carried out by electrical, electronic, or programmable
Wave Analytics Data Integration
Wave Analytics Data Integration Salesforce, Spring 16 @salesforcedocs Last updated: April 28, 2016 Copyright 2000 2016 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of
15-214: Principles of Software Construction 8 th March 2012
15-214 Midterm Exam Andrew ID: SOLUTIONS 1 / 13 15-214: Principles of Software Construction 8 th March 2012 Name: SOLUTIONS Recitation Section (or Time): Instructions: Make sure that your exam is not missing
Automatic Generation of Consistency-Preserving Edit Operations for MDE Tools
Automatic Generation of Consistency-Preserving Edit Operations for MDE Tools Michaela Rindt, Timo Kehrer, Udo Kelter Software Engineering Group University of Siegen {mrindt,kehrer,kelter}@informatik.uni-siegen.de
Club Accounts. 2011 Question 6.
Club Accounts. 2011 Question 6. Anyone familiar with Farm Accounts or Service Firms (notes for both topics are back on the webpage you found this on), will have no trouble with Club Accounts. Essentially
Quality Management. Objectives
Quality Management Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 27 Slide 1 Objectives To introduce the quality management process and key quality management activities To explain the
