Featured Whitepapers
- Forrester Research: Optimizing Globally Distributed Software Development Using Subversion
- An Integrated Approach to Requirements and Quality Management
- Continuous Testing With ElectricCommander
- Agile CMMI at a Large Investment Bank
- Realize Effective Distributed Development Via a Virtual Software Factory
- Build & Deployment Automation for the Lean Economy
Upcoming & Recent Webcasts
- A New Kind of Engineering
- Managing Change in Rugged COTS Systems Development
- Keeping Control of Costs and Schedules When Requirements Change
- Three Simple Things that Will Help You Adopt Agile in Your Enterprise
- Customer speak: Teams, Insights, Results with Quality Driven Software
- Build & Deployment Automation for the Lean Economy
Agile SCM is Testing |
| Print | |
| Written by Steve Berczuk, Robert Cowhan, and Brad Appleton | ||||||||
| Tuesday, 16 October 2007 01:12 | ||||||||
The Software Configuration Management Patterns include a number of patterns around testing, and we discuss testing in this column occasionally. From time to time we hear the question: "what does testing have to with software configuration management, anyway?" We claim that testing is essential for Agile CM Environments, and that agile CM environments are built on testing. To explain this idea we need to talk about what SCM is and how testing helps.
A software configuration management system is in place to manage change. In a 1990 Software Engineering Institute Technical Report Susan Dart said The goals of using CM are to ensure the integrity of a product and to make its evolution more manageable.
The traditional approaches to software change management focuses on the software lifecycle and identifying and controlling what changes happened in what context. Identification of the facts of changes is important. What really matters to many stakeholders is less the fact of the change, but the impact of the change to them. People care that their system works as expected, the functionality was added as desired and not removed accidentally. We want to ensure that the value of our configurations is increasing over time rather than decreasing! To verify these things you need to test the working application. In this sense you can't fulfill the goals of SCM without testing.
How to set the balance varies depending on the needs of the project. Stability is always important since without stability it's difficult, if not impossible, to make progress. Stable in this sense means that little changes, but by this definition, "stable" can become "stale" rather quickly. A more useful definition of stable is that the quality of the code is staying as good as it was. With this sense of "stable" positive change can happen.
Each of these rules can also be validated through an automated process; test coverage tools can allow you "test" whether new code has unit tests, for example, testing not only functional compliance (the code still works based on the tests) but process compliance (the metrics that we consider important are also met). Continuous Integration: Improving Software Quality and Reducing Risk has excellent practical advice on how to use your build process to measure various quality and policy metrics.
The "SCM is Testing" position also frustrates people because it seems to be placing an QA function (Testing) in the hands of another team (Release Engineering). To be able to successfully respond to change you need to forget about those boundaries, and think of SCM as being an element (perhaps a central element) of the software development environment.
As we mentioned above, there is a sense in some circles that testing is not relevant to the SCM community because testing is not part of build management or release engineering. The problem with this idea is that if SCM is about ensuring the integrity of the product, what other mechanisms do we have to do this? While we often speak in favor of cross functional teams where people do not have traditional roles and everyone has a broad skill set, it is likely that many organizations have some sense of boundaries.
Many companies use workflow and tools to help automate their process, e.g. having defects being reported and going through a certain lifecycle with different sign-off points and different levels of authority. Agile teams tend to keep these processes as simple as possible - allowing people to make decisions flexibly based on their own judgement. But what happens if you are in a situation where this is not deemed sufficient? Don't forget that changing a process requires testing to ensure that the process now does something slightly different. It is very common to find organisations making process changes on the "live" system in a rather uncontrolled manner. So, treat your workflow process as something that needs:
How to get there While not part of the traditional definition of SCM, testing is an enabler for an agile SCM environment. Rather than controlling risk by slowing change, you control risk by monitoring the state of your codeline after each change. Testing and test driven development are not things that happen naturally alas, and the reasons for this could be the subject of another article. Here are some steps that you can take:
In Conclusion Rather than being besides the point of SCM, an appropriate testing strategy is what enables an agile SCM environment. To be more agile, you need to avoid the "silo" based perspective of development, SCM, and test being different disciplines with interfaces, and you think about how the processes in one part of your development ecosystem affects what you can do in the others. An effective change management system is built upon good testing practices, and effective change management is one of the things that Agile SCM environments are about. Brad Appleton is an enterprise SCM/ALM solution architect for a Fortune 100 technology company. He is co-author of Software Configuration Management Patterns: Effective Teamwork, Practical Integration, the "Agile SCM" column in CMCrossroads.com's CM Journal, and a former section editor for The C++ Report. Since 1987, Brad has extensive experience using, developing, and supporting SCM environments for teams of all shapes and sizes. He holds an M.S. in Software Engineering and a B.S. in Computer Science and Mathematics. You can reach Brad by email at brad@bradapp.net Robert Cowham has been in software development for over 20 years in roles ranging from programming to project management. He continues his involvement in development projects but spends most of his time on SCM Consultancy and Training. He is the Chair of the Configuration Management Specialist Group of the British Computer Society, has a BSc in Computer Science from Edinburgh University and is a Chartered Engineer (CEng MBCS CITP). You can contact him at rc@vaccaperna.co.uk Steve Berczuk develops software applications at Fast Search and Transfer in Boston, MA. He has been developing object-oriented software applications since 1989, often as part of geographically distributed teams. In addition to developing software he helps teams use Software Configuration Management effectively in their development process. Steve is co-author of the book Software Configuration Management Patterns: Effective Teamwork, Practical Integration. He has an M.S. in Operations Research from Stanford University and an S.B. in Electrical Engineering from MIT. You can contact him at steve@berczuk.com.
Set as favorite
Bookmark
Email this
Hits: 4594 Trackback(0)Comments (2)
|
|
... Nice article to highlight the importance of testing in the context of SCM. Would it be possible for you guys to provide a BibTeX or similar citation for this or future articles? |
|
Atul Kulkarni
said:
|
... Is the best article, to know the basics of Agile and SCM. Also helps to know the process and workflow of Agile SCM is testing. |
|

The 
