Hexagon Software – Technical Articles
All technical articles put out by Hexagon Software LLC, which is a company that produces tools for agile software developers.
link
All technical articles put out by Hexagon Software LLC, which is a company that produces tools for agile software developers.
link
I firmly believe in the principles of Lean and Agility. However, the practices we’ve refined for Agile software development do not translate well from the world of programming to databases.
This is part of a series of articles in which I investigate why.
link
As a software testing consultant and musician, I meet a lot of skilled testers who do amazing work. Through experience and a lot of trial and error, they have developed skills they can’t easily explain. Unfortunately, with software testing, there aren’t as many obvious avenues for skill development as there are for musicians. Many software testers don’t realize that there are learnable exploratory testing skills they can develop to help them become even more valuable to software development teams.
link
Bumblebee generates human-readable documentation from your JUnit test-structure. By adding comments powered with wiki-syntax and an extensible Ruby context for including snippets, runtime data and other content, you can create and maintain your system documentation with a minimum of effort.
link
An advanced code search engine that simplifies the discovery and sharing of software components on the Internet and boosts programmer productivity through software reuse.
Recently added support for test-driven queries, i.e. only results are delivered that are likely to pass the given JUnit test case.
(a version with automated testing support is obviously under development, cf. http://www.veoh.com/videos/v13679456E3DYWHK)
link
The increasing popularity of agile development methods is putting new demands on the traditional CM discipline. A working CM environment is essential for the rapid nature of agile development methods, but the CM process and the CM role has to be adapted to the present evolution of software development methods as well as automated tools. This article discusses lean principles and agile values within a CM scope and also introduces a method to classify the CM discipline in relation to development method and level of tool automation.
link
Earned Value Management (EVM) is a well known project management technique which measures the integration of technical performance, cost and schedule against planned performance within a given project. The result is a simple set of metrics providing early warnings of performance issues, allowing for timely and appropriate adjustments. In addition, EVM improves the definition of project scope, and provides valuable metrics for communicating progress to stakeholders. The information generated helps to keep the project team focused on making progress. AgileEVM is a light-weight, and easy to use adaptation of the traditional EVM techniques which provides the benefits of traditional EVM in Agile projects.
link
a comparison between the open source web testing tool Canoo WebTest and Selenium by WebTest’s main developer
link
T2 is a fully automatic, trace-based random testing tool, featuring in-code specifications and reflexive testing.
T2 checks for internal errors, run time exceptions, method specifications, and class invariant. Unlike other testing tools, T2 reads specifications written in plain java! They are placed in the class we want to specify. Though not as fancy as Z or JML, in-code specifications are declarative, formal, and powerful. Maintenance effort is also minimum.
Unlike other testing tools T2 does not check individual methods in isolation. Nor does it generate Junit test scripts, though we could add this feature. T2 actually performs the test directly or on the fly. So it responds faster, perhaps even giving the feel that it is interactive. Internally it generates tests in the form of traces (sequences) of method calls; each will be checked. This has the effect that methods are basically checking each other. This is called reflexive testing. The benefit is that it still works well even if the specifications provided are very partial, whereas other testing tools typically rely complete specifications.
It is a unit testing tool; with classes as the units. Violating traces are reported, and can be saved, and reloaded for re-testing or regression.
(Still in prototype stage)
link
GUIdancer is a test tool for creating automated GUI tests. It supports applications written in Java (Swing, SWT, RCP) and HTML. No programming is required to create reusable, robust tests. GUIdancer is well suited to agile processes, because test specification can begin before the application under test is ready, and continues alongside development.
Modular test creation and object-oriented component recognition mean that tests are easy to maintain.
GUIdancer runs as a standalone application or as an Eclipse plugin. Tests are multi-lingual, platform-independent and can test different data, components and implementations.
JSCoverage is a tool that measures code coverage for JavaScript programs.
link
Agile principles have been a breath of fresh air to many development teams stuck in the middle of a rigid, process-driven environment. Unfortunately, it’s not so easy to bring Agile into an existing organization with established people and practices. Becoming Agile shows you practical techniques and strategies to move from your existing process to an Agile process without starting from scratch.
Many books discuss Agile from a theoretical or academic perspective. Becoming Agile takes a different approach and focuses on explaining Agile from a ground-level point-of-view. Author Greg Smith, a certified ScrumMaster with dozens of Agile projects under his belt, presents Agile principles in the context of a case study that flows throughout the book.
Becoming Agile focuses on the importance of adapting Agile principles to the realities of your environment. While Agile purists have often discouraged a "partial-Agile" approach, the reality is that in many shops a "purist" approach simply isn’t a viable option. Over the last few years, Agile authorities have begun to discover that the best deployments of Agile are often customized to the specific situation of a given company.
As well, Becoming Agile addresses the cultural realities of deploying Agile and how to deal with the needs of executives, managers, and the development team during migration. The author discusses employee motivation and establishing incentives that reward support of Agile techniques.
Becoming Agile will show you how to create a custom Agile process that supports the realities of your environment. The process will minimize risk as you transition to Agile iteratively, allowing time for your culture and processes to acclimate to Agile principles.
Author: Greg Smith
Expected publication date: Manning, April 2008
400 pages
(Early Access Program available)
link
Most developers recognize the value of unit testing — the independent testing of individual chunks, units, of code by the developer while an application is being written. Unit testing leads to easier maintenance, troubleshooting, refactoring, and integration testing of the application. To facilitate unit testing, the developer uses unit-testing frameworks such as NUnit along with various helper frameworks for more advanced testing of interaction between objects — often called "Mock Object frameworks."
Because there are few clear and defined ways on how to write unit tests well, many shops try to implement unit tests on their code, realizing too late that the tests hinder the coding cycle more than they help. This book will help you avoid mistakes when writing unit tests, and show you how to do it right — from the beginning steps to the most advanced techniques.
The Art of Unit Testing guides the reader on the journey from beginner to master in the subtle art of unit testing. Based on expert author Roy Osherove’s real-world development experiences, this book shows developers how to make sure the code that they write actually works as expected, and how to make these verifications as automated as possible. Not only that, the book shows techniques that help to make sure that the tests are maintainable, readable, and test the right thing over time, avoiding the "throw-away tests" phenomenon that plagues many shops that try to write unit tests without clear guidelines. In this way it helps you make your development process — and your business — more agile.
The Art of Unit Testing starts out with the basics of how to write unit tests, what makes a good unit test, and how to avoid the pitfalls you may encounter when you try to write unit tests. You’ll learn to build tests that are readable, accurate, and maintainable. Along the way, you’ll pick up a set of best practices and how-tos for key subjects, from using test frameworks to using Mock Objects to writing tests that run against a database.
The author establishes five rules for good unit tests built upon the three major principles that any good test be maintainable, trustworthy, and readable. You’ll find clear sections presenting established best practices to ensure that your tests will adhere to these principles. The book also provides clear guidance on what to test and where to start testing when you’re going into a legacy code project.
Unlike other books on this topic, this book trades theory for real-world examples. It’s designed so that you, a working developer, can start writing better unit tests now.
Author: Roy Osherove
Expected publication date: Manning, April 2008
400 pages
(Early Access Program available)
link
The Simple Web Automation Toolkit (SWAT) is a library written in C# designed to provide an interface to interact with several web browsers.
link
OpenUP is a lean Unified Process that applies iterative and incremental approaches within a structured lifecycle. OpenUP embraces a pragmatic, agile philosophy that focuses on the collaborative nature of software development. It is a tools-agnostic, low-ceremony process that can be extended to address a broad variety of project types.
Author: Per Kroll
Published: IBM developerWorks, September 15, 2007
link
For any software developer who has spent days in "integration hell," cobbling together myriad software components, Continuous Integration: Improving Software Quality and Reducing Risk illustrates how to transform integration from a necessary evil into an everyday part of the development process. The key, as the authors show, is to integrate regularly and often using continuous integration (CI) practices and techniques.
The authors first examine the concept of CI and its practices from the ground up and then move on to explore other effective processes performed by CI systems, such as database integration, testing, inspection, deployment, and feedback. Through more than forty CI-related practices using application examples in different languages, readers learn that CI leads to more rapid software development, produces deployable software at every step in the development lifecycle, and reduces the time between defect introduction and detection, saving time and lowering costs. With successful implementation of CI, developers reduce risks and repetitive manual processes, and teams receive better project visibility.
The book covers
* How to make integration a "non-event" on your software development projects
* How to reduce the amount of repetitive processes you perform when building your software
* Practices and techniques for using CI effectively with your teams
* Reducing the risks of late defect discovery, low-quality software, lack of visibility, and lack of deployable software
* Assessments of different CI servers and related tools on the market
Authors: Paul Duvall, Steve Matyas, Andrew Glover
Published: Addison-Wesley, June 29, 2007
336 pages
Companion web site
link
As more and more people move towards adoption of Agile practices, they are looking for guidance and advice on how to adopt Agile successfully. Unfortunately many of the questions they have such as: "Where do I start?", "What specific practices should I adopt?", "How can I adopt incrementally?" and "Where can I expect pitfalls?" are not adequately addressed.
This book answers these questions by guiding the reader in crafting their own adoption strategy focused on their business values and environment. This strategy is then directly tied to patterns of agile practice adoption that describe how many teams have successfully (and unsuccessfully) adopted practices like test-first development, simple design, and others.
Author: Amr Elssamadisy
Published: Lulu.com, June 28, 2007
188 pages
link
For many years now, developers have had the upper hand when it comes to Test-Driven Development. No matter the language, there was a handy toolset to use – NUnit, JUnit, and xUnits for Perl, Python, Ruby, Delphi, and many others. But when it came time to implement the logic in the database, the options were few. Many people turned to developing their own unit testing solution – if they did unit tests at all.
Author: Cory Foy
Published: InfoQ, October 18, 2007
link
MockMe is a simple tool to test Java mobile application’s client code without waiting for the service layer to become available. In complex applications this means not having to wait for data to become available for processing.
MockMe is essentially a configurable servlet based on properties files, which searches for XML files from a local directory according to a parameter passed in with a data access request. It then emulates the future server to facilitate testing. Once you have defined the XML and configured MockMe, both parts can work in parallel.
link
BeanCooker is a tool to automatically set mock values to all properties of any java bean.
The simplest usage will put "fooBar" in Strings, 12345 in integers, 123.123 in floats … and the most advanced usage will pull values from a csv file.
- very easy to use, good default settings.
- no external dependency, just JRE 5
- designed to be open and expansible (for example, you can configure it from Spring easily)
link
Unitils is an open source library aimed at making unit testing easy and maintainable. Unitils builds further on existing libraries like DBUnit and EasyMock and integrates with JUnit and TestNG.
Unitils provides general asserion utilities, support for database testing, support for testing with mock objects and offers integration with Spring and Hibernate. It has been designed to offer these services to unit tests in a very configurable and loosely coupled way. As a result, services can be added and extended very easily.
link
Unit testing can be difficult sometimes. In some cases, you need to refactor your code-under-test to make it more testable; in other cases, you need to apply some special techniques into your test code so that it can do what you want; and in the worst cases, you can’t think of any such techniques nor are able to refactor the production code and thus, don’t write any test at all. It’s in my experience working with many teams applying unit testing that they often have troubles writing tests for the data access layer (DAL), the UI layer, and multi-threading code, mostly because they are not aware of the techniques for doing that. That is not surprisingly difficult to understand though, business logic is much more intuitive and straight-forward to be tested and every single article or book out there will have examples writing test for the business logic firstly.
Author: Buu Nguyen
Published: September 30, 2007
link
R2build system is a tool/framework to establish your daily build (or nightly build, or build automation, or continuous integration system) in a very easy way. It includes, but is not limited to, plug-ins for email notification, FTP, various installer packaging tool, Java/C/Ant/Nant/.Net/Delphi/C Builder, and various source control tools.
link
There is, of course, no shortage of management tools for Agile software development. But none of them seem to be targeted at developers, small teams, or first-level managers. They seem to attempt to implement in software everything in any particular Agile methodology (for example Scrum and XP). They attempt to manage across the entire organization, especially highlighting managing above the project to the program and enterprise levels and in doing so become mostly an effort tracking system where developers become resources and are simply required to enter time spent on tasks. They also attempt to track all aspects of development by integrating testing (test tasks and test results) and defect tracking. By being all things to all people, the eventual interface become useless for a developer in their day-to-day development. By trying to provide a "complete" picture of a project’s status, their interfaces become a mass of "percent complete" statistics where any particular stat one is looking for is not quickly identifiable.
PrjPlanner is definitively NOT a resource management tool or a "complete" (horizontal and vertical) organizational tool. It consists entirely of one main screen, one moderately busy dialog, and three decidedly simple dialogs.
Developers are not resources; they are people. This is the first lesson from Agile; which these tools have failed to implement. For these reasons, PrjPlanner should be useful and enjoyable for developers.
link