Test EarlyTest EarlyThis blog is written by the employees of Stelligent Incorporated. We are passionate about building software quality into the development process using the right tools and processes for the occasion. We seek to make code more defect-resistant and enjo Articles
Don?t Shoot the Messenger!
2007-05-23 23:58:00 A client I worked with recently had a very astute characterization of Continuous Integration. I will paraphrase it as “CI is a reflection of reality”. He was referring to the immediate feedback you receive from a successful or failed integration build. Using a single source (your version control repository), you’re able to quickly determine if ... More About: Messenger , Messe , The Messenger , Messen , Shoot
What is a ?Build??
2007-05-22 20:13:00 Since I’ve heard many conflicting definitions on what a software “build” actually is/is not, I figured I’d come up with my own definition to muddy things even more! Someone on Wikipedia has described a software build as “the process of converting source code files into executable code or the result of doing so.” Without parsing ... More About: Build
ROI on using Continuous Integration
2007-05-11 20:34:00 The co-founder of CruiseControl, Paul Julius, shares an experience that demonstrates how practicing CI saved $12,535 for one defect on one project by discovering and fixing the defect shortly after it was introduced. Some people ask “what’s the return on investment of CI?”. Although, software quality is a great benefit of CI, this experience demonstrates ... More About: Integration , Sing , Integra , Conti
Programmatic testing with Selenium and TestNG
2007-05-11 16:14:00 In the latest “In pursuit of code quality” installment, entitled “Program matic testing with Selenium and Test NG”, author Andrew Glover provides a tutorial on user interface testing with Selenium, an open-source Web user interface testing framework that drives a user’s Web browser when performing tests. While programmatic testing isn’t for everyone (non-developers will likely prefer Selenium’s ... More About: Tutorial , Testing , Sting
Dancin? with Myself
2007-05-03 00:33:00 I was at CITCON last weekend and someone asked me about managing the CI server configuration files (such as with CruiseControl). I told them that I like to manage my configuration files just like any other software project. The build and CI scripts are not “second-class citizens” when I’m developing software. First, I create a project ...
The inconvenient truth of software development
2007-04-30 23:49:00 I was just perusing a conference catalog for a major conference and it all of a sudden dawned on me that a majority of conference sessions were about creating this application with that featured technology. What’s more, this phenomena isn’t unique to this conference– just take a look at any development portal and look at ... More About: Software , Truth , Software Development , Development , Glover
The ruler of JavaOne
2007-04-28 20:22:00 If you are planning on attending JavaOne, you’ll undoubtedly want to: Catch up with old friends Learn something new Take home a testearly.com ruler Yes, that’s right ladies and gentlemen– testearly.com will be giving away, what will most likely be, the most useful trinket of 2007. These limited edition devices that enable you to measure lengths (not to exceed 12 ... More About: News , Glover , Rule
Accelerate development preview
2007-04-28 18:45:00 developerWorks is in the process of creating a community of spaces (think MySpace) each with a focused theme. Stay tuned to the Accelerate development space, which is functioning as a preview at this point; nevertheless, this space promises to be a one stop portal for all things related to developer testing, continuous integration, code metrics, ... More About: Preview , Development , View , Develop , Rate
Testing GWT with JUnit
2007-04-27 03:15:00 One of the nice aspects of Google’s Web Tool kit is its built-in developer testing functionality à la JUnit . Not only does GWT give you the ability to develop Ajax components within Java (as opposed to JavaScript) but by standardizing the development platform on Java, they’ve facilitated the use of testing Ajax related code with ... More About: Testing , Glover , Sting , Test
The Future of Continuous Integration
2007-04-26 01:40:00 For all its benefits, Conti nuous Integra tion (CI) does have its share of flaws. For one, CI is somewhat reactionary when integration builds break because the code has already been committed to the mainline of the version control system. Broken Builds The main problem of reactionary CI is that you don’t learn that your full integration build has ... More About: Future , The Future
Staged builds with CruiseControl
2007-04-25 23:06:00 In his seminal article on Continuous Integration, Martin Fowler covers the practice of “staged builds” when discussing fast builds. He addresses what he calls “commit builds” and “secondary builds”. I like to think of them as lightweight builds and heavyweight builds. In any case, the purpose in having two different types of builds run ... More About: Control , Cruise , Build , Stage , Econ
Uncovering code coverage
2007-04-23 02:48:00 Code coverage statistics are often heavily relied upon in an effort to gauge testing efforts and infer relative code quality. But, as I’ve written about before , code coverage reports can often fool you. As such, I highly recommend you use these reports not as a means for judging what’s tested but in judging what’s ... More About: Glover , Code , Ring , Rage , Cover
Having challenges with JUnit in multithreaded applications?
2007-04-18 23:03:00 Robert Keith of DigitalTester.com has written a great entry on some techniques for testing multithreaded applications with JUnit using Java’s java.util.concurrent package. Check out his entry entitled “Homegrown Multi threaded JUnit Tests” for an informative read. More About: Applications , Read , Challenge , Hall
Take heed of mixing JUnit 4?s Parameterized tests
2007-04-14 01:22:00 One of the most handy features of JUnit 4 is its ability to run parameterized tests, which essentially means you can create a generic test and run it multiple times with various test parameters. In previous versions of JUnit, if you wanted to simulate this same behavior, you’d have to either: loop over a collection of ... More About: Take , Para , Test , Tests , Teri
Configuring CruiseControl for Linux
2007-03-24 23:16:00 A while back I posted a movie on installing and configuring Cruise Control on Windows, so I figured I’d give a brief overview in Linux . I am using Ubuntu so some of the examples may be different for you — depending on the UNIX/Linux flavor you’re using. This assumes that Java is in your system’s path. ... More About: Ring , Econ
Browser disparity in Selenium
2007-03-23 19:18:00 I noticed a slight quirk between IE and Firefox when testing with Sele nium the other day, which in retrospect makes sense; however, it serves to demonstrate the challenges of user acceptance testing in the face of a heterogeneous browsing community. Firefox manipulation of form selections works via the type command of the DefaultSelenium object. For example, ... More About: Browser , Spar , Browse
Continuous Integration in Ruby with CruiseControl.rb
2007-03-13 22:07:00 Thoughtworks just released Cruise Control .rb which is a Continuous Integration server written in Ruby . They even included a slick video tutorial on how to use it on the website. It’s based on ThoughtWorks’ popular CruiseControl server (written in Java) Check it out. More About: With
Coordinating Ant targets for faster builds
2007-03-13 21:54:00 Do you have a long running build? Often times, the testing aspect of a build (i.e. executing a suite of JUnit tests) consumes the vast majority of time; however, code inspections have also been known to add quite a bit of time, especially when the code base is large. If you find that your inspections ... More About: Gets , Target , Fast , Dina , Build
Continuous Testing
2007-03-13 20:49:00 The sixth installment of the popular “Automation for the people” series by Paul Duvall was recently published. The article provides an overview of the different types of developer tests along with examples that you can add to your build process and run continually using a Conti nuous Integration (CI) system. Published by IBM developerWorks, ... More About: Testing , Sting , Test
Practicing constraint with NUnit
2007-03-12 23:41:00 There’s a new release of NUnit that contains some handy constraint based assertions– using these new Assert methods in combination with the newly defined Constraint objects have the ultimate benefit of making test cases easier to read. Plus, they’re more fun to code! Check out Charlie Poole’s blog or the release notes for more information. More About: With , Rain , Train , Stra , Strain
Forcing build failures with simple thresholds
2007-03-11 00:40:02 Automated build systems (like NAnt or Ant) are excellent mechanisms with which to incorporate quality gates. An obvious quality gate is a successful test run (i.e. did all developer tests pass?); however, with the incorporation of software inspectors, you can introduce additional quality gates that verify specific code metrics or even combinations of metrics. Some software inspectors, in fact, already have built in mechanisms to cause build failures if specific thresholds are exceed, like Cobertura, which has a cobertura-check task that checks specific coverage values. If a particular tool doesn’t provide an automatic failure hook, you can easily build one– in fact, combining Groovy’s expressive scripting power with Ant makes this process quite easy. For example, you can audit a JavaNCSS (a software inspector that reports code size and complexity) report and fail a build if the maximum complexity (which is reported for individual methods) is exceeded. Imagine that ... More About: With , Simp , Failure , Simple , Build
The new cruiseControl 2.6.1
2007-03-07 00:36:02 The new cruisecontrol 2.6.1 includes 3 bug fixes and a Veto powered plug-in designed to fix multiple build dependencies. * Fixed problem with RMI clients where ProjectConfig was not Serializable * Fixed problem with NullPointerException writing to the log file if the config file was reloaded in the middle of a build. * Fixed an error loading the metrics page of the report when the jaxen jar is not in the path The Veto plug-in will check to see if a given target project is up to date with the latest changes and if not, will “Veto” the current build attempt. This Keeps projects that are dependent on one another in the correct build order. More About: The N , Control , Cruise , Econ
Getting Fit with .NET
2007-03-07 00:36:02 FitNesse, a popular Web-based test and collaboration server, is an enhancement to Fit (Framework for Integrated Testing) and an invaluable way to collaborate on complicated problems early in development. In January, Gojko Adzic published a free tutorial (PDF) ‘Getting Fit with .NET’ to get you on your way to testing .NET applications with FitNesse. Available online and updated last month to cover Fit.NET 1.1 including a new chapter on DoFixture, working with arrays and business objects, topics include: Setting up a FitNesse server for testing .NET code Writing basic tests, performing common tasks Tips and tricks for writing better tests and making test pages easier to read Managing content with FitNesse Organizing tests into test suites Most important differences between .NET and Java versions Definitely check it out if you’re considering using (or already are using!) FitNesse in your projects. In related news - Adzic has also released DbFit, an extension o... More About: With
Type Checking and Maintainability
2007-02-26 12:29:13 Maintainability is an important factor in every software project. The costs of not getting it right run high. In fact, it is estimated that maintainability costs are often 70%-80% of a total project cost. The main principle of maintainable code is to design loosely-coupled components with small number of connections to other functions. Factors such as solid Object-Oriented Analysis and Design (OOAD) and design patterns impact long term code maintainability. Diomidis Spinellis [1] lists other important factors that affect maintainability. Among these factors are analyzability, consistency, length of expressions, functions, and methods, locality of dependencies and type checking. If data abstraction is a policy promoting (among other things) a system’s stability and maintainability, type-checking is the enforcement mechanism. An implementation that takes advantage of a language’s type-checking features will catch erroneous modifications at compile time; an implementation b... More About: Main , Check , Type , King , Bili
Are you taking to testing?
2007-02-25 00:27:05 David Rubinstein, of SD Times, has published an excellent editorial entitled “Taking to Test ing ” in which he summarizes a Web seminar where developer testing was addressed. He specifically writes that the benefit of testing during coding (as opposed to after things are complete) is more value from the business system being delivered. If ROI is a function of a system’s cost to develop versus the value it delivers to the business, lower development costs translate to higher value. Well said, Mr Rubinstein. More About: King , Sting
Testing Ajax?
2007-02-25 00:27:05 I ran across an interesting article entitled “Improving Test Coverage of Ajax Applications” in which the author likens the challenges of testing Ajax applications to that of testing traditional GUI apps. While some newer frameworks (like Selenium) are positioned to actually verify Ajax-ian behavior, they can lead to a false sense of security because of the complexity associated with the combination of actions in using a GUI. While Ajax applications are definitely more snazzy than traditional web apps, because they can alter the traditional notion of page flow, one must put some extra thought into how the application will be verified. More About: Testing , Sting
JUnit 4 Tutorial
2007-02-23 12:26:03 Let’s face it, JUnit has become the de facto standard for Java technology testing. Sure there are other powerful test frameworks (TestNG!), but they’ve never enjoyed the broad acceptance JUnit has, especially since the ingenious new version was released last year. Andrew Glover recently published a tutorial: Jump into JUnit 4. A supplement to his popular ?In pursuit of code quality? series, the tutorial published by IBM developerWorks guides you step-by-step through the fundamental concepts of JUnit 4, with emphasis on the new Java 5 annotations. At the conclusion of this one-hour tutorial, you will understand the major changes to JUnit 4, as well as being familiar with features such as exception testing, parametric testing, and the new flexible fixture model. Last but not least, you will know how to do the following: * Declare a test * Use annotations to logically group tests prior to running them * Run tests in Eclipse 3.2 or Ant, as well as from the... More About: Tutorial , Tori , Rial
Integrating Maven 2 with CruiseControl Podcast
2007-02-22 00:25:02 In the fourth edition of the Stelligent Early Quality Pod cast Series, Paul Duvall and Levent Gurses discuss how Continuous Integration can be simplified with two popular tools: CruiseControl and Maven 2. If you’re looking to intensify your CI and testing process or are curious about how these tools can help, this podcast is a valuable resource. Also, check out the other editions in the series. Each podcast is about 5 minutes and each feature an informal conversation between two or more software professionals on technologies and solutions relating to early software quality. More About: Podcast , With , Cast
It?s all about the process template?
2007-02-20 06:23:02 If you want to modify your team system project, you really need to get comfortable with the process template. You can download a template editor from http://www.imaginets.com. Once you’ve got the template editor, your first step is to download either the Agile or CMMI default process template to your local machine. On the tool bar within Visual Studio, go into the Team menu, Team Foundation Server Settings, Proc ess Template Manager. Choose your template and click download. This automatically creates a folder and the xml template is inside the folder. Next, go into the Process Template Editor, click open, navigate to where you downloaded the default template and click open. Now, let’s say you want to modify the workflow for tracking a bug. Double-click on Work item tracking to expand the directory, then click on Work Item Type Definitions. You will see Bug, Task, Quality of Service Requirement, Scenario and Risk. Open the bug work item definition, click on the work ... More About: About , Plat , Late
Making NAnt more expressive with Boo
More articles from this author:2007-02-20 06:23:02 Boo provides the ability to script with a more expressive language in NAnt build files via the boo task. As an example of the possibilities of what you can do with Boo in NAnt, check out the following two tasks, which first runs FxCop and then reads the output of a FxCop task so as to summarize the number of Critical Errors in FxCop’s result file. <property name="fxcop.xml" value="${build.dir}bin${build.config}fxco p.xml"/> <target name="fxcop" depends="build"> <fxcop> <targets> <include name="${build.dir}bin${build.config}${lib rary}" /> </targets> <arg value="/out:${fxcop.xml}" /> </fxcop> </target> <target name="fxcop-analysis" depends="fxcop"> <boo> import System.IO fpath = Project.Properties['fxcop.xml'] numerror = 0 using input = File.OpenText(fpath): for line in input: if line =~ /Level="CriticalError"/: numerror++ print("There were ${numerror} Critical Er... More About: Press , With , King , More , Xpress 1, 2, 3, 4, 5 |



