Dave Horner's Website - Yet another perspective on things...
Home Tech Talk Programming Testing, Release Engineering, CI - building code that deploys and runs like it should.
155 guests
Rough Hits : 2697377
moon and stars

Testing, Release Engineering, CI - building code that deploys and runs like it should.

Sunday, 03 September 2006 21:02
The bar is high to write good software. Good software requires documentation with full requirements. Software is no good without tests. Tests define functionality and indicate a contract for such functionality. Without a requirement and test, who is to say that any software feature exists or works at all?

DevOps is about configuration management and intellectual property (IP) control. We make sure that development, QA, and IT are empowered to accomplish what they need to deliver and ship code. Making sure that everything is properly tracked and maintainable. Systems that were once silo'd and unmaintainable are now visible and reproducible for upper management. Dashboards, build systems, report systems, source control systems, and anything else that comes up in operations of large organizations is purview.

Configuration Management position – can be done by anyone. Or can it? | println it
Application Lifecycle Management (ALM) - Cradle to grave.

Write More Tests – Software Engineering for Fun and Profit
epowiki: Unit Testing And Test Driven Development
Test-driven development - Wikipedia, the free encyclopedia
gallio - Gallio Wiki

Continuous Build is not Continuous Integration « DanNorth.net

Lately I've been working on creating SVN repos of code I've done in the past. Doing so makes me realize again how hard release engineering can be.

Here is a look at the problem from Wez Furlong that details what release engineering is all about: Release Engineering

The first setup in proper release engineering, is selecting your build tools. And boy is that a HARD thing to do these days.

There are about a million different ways to compile, link, and build things. Every platform has it's own problems and custom switches needed to get the job done right.

Just look at some of the tools we have to choose from when we are looking for a cross platform build manager:
Bakefile, CMake
,Autoconf and Automake
Autotools Tutorial

HUBOT - github has developed a chat bot to interact with operations. Modeled after GitHub's Campfire bot, hubot. extendable with community scripts and your own custom scripts, and can work on many different chat services.

Voices against TDD

Software and I: 10 Reasons to Avoid Test Driven Development

Some funny..

_DD: What do you practice? - Don't you know what an initialism is?
Guilt Driven Development - tatiyants.com - Guilt Driven Development GDD forces you to make promises and guilts you into keeping them. I expected more from you, I really did.

Web Resources

waf - The meta build system - Google Project Hosting
Learning Autoconf and Automake
Jam - a new portable makefile?! Using Jam in a dynamic automated build enviroment
google:using Jam
Doesn't look very promising given this mailinglist entry:
Who is using Jam?
Using JAM in a Clustered Environment
Jambase Reference

ndmitchell/shake - Shake is a Haskell library for writing build systems - designed as a replacement for make. Hackage: shake: Build system library, like Make, but more accurate dependencies.

Deploying Your Application


ccbuild - A strict developer's build utility
Buildbot - The Continuous Integration Framework, automating software build, test, and release processes. python,virtualenv,git one master, many slaves.

Javascript Continuous Integration Testing

index.php at master from jeresig's testswarm - GitHub
JSCONF 2009 - john resig talks about testswarm in part two.
Test Swarm: Distributed Continuous Integration for JavaScript - testswarm- GitHub - wiki


Draco.NET - Draco.NET is a Windows service application designed to facilitate continuous integration.
CruiseControl Home - Original CruiseControl is written in Java but is used on a wide variety of projects.
CI Feature Matrix - CruiseControl - Confluence - a feature matrix for various CI servers.
CI Factory - Home
UppercuT - Automated Builds - CruiseControl.NET Integration
uppercut - Google Code - Uppercut is an automated .NET build framework built with NAnt

Continuous0 Integration
Continuous Integration with Visual C++ and COM
Agile Testing Articles and Tutorials
Agile Testing: On the importance of functional testing
Automated GUI testing - Is it worth it?
Windows Application Test System Using Python


msbuildtasks.tigris.org - provides a collection of open source tasks for MSBuild.
MSBuild: The New Build System for Visual Studio 2005 and Longhorn

FitNesse - The fully integrated standalone wiki, and acceptance testing framework. (uses tables of data to communicate requirements with software)
NCover - Code Coverage for .NET Developers
NUnitForms : An NUnit extension for testing Windows Forms applications.

Functional Testing

WatiN - Web Application Testing In .Net - automation of Internet Explorer and Firefox for web functional tests.
Selenium web application testing system - Selenium is a suite of tools to automate web app testing across many platforms.
Chapter 18. PHPUnit and Selenium
Web testing with Selenium and xUnit.net
Practical symfony | Day 9: The Functional Tests | symfony | Web PHP Framework - seleniums functional test walkthrough
testdriven.com: Your test-driven development community - News
mechanize - Stateful programmatic web browsing in Python
twill: a simple scripting language for Web browsing
Windmill Testing Framework
Splinter: Python tool for acceptance tests on web applications | Francisco Souza - cobrateam/splinter - GitHub

WebDriver - W3C spec "The WebDriver API aims to provide a synchronous API that can be used for a variety of use cases, though it is primarily designed to support automated testing of web apps."...interesting.

Continuous Integration Server

xinc - Project Hosting on Google Code - Xinc is a continuous integration server written in PHP 5. It has built-in support for Subversion and Phing (and therefore PHPUnit), and can be easily extended to work with alternative version control or build tools.
phpUnderControl - phpUnderControl is an addon application(PHP) for the continuous integration tool CruiseControl, which integrates some of the best PHP development tools.
CruiseControl Home - Java CI server.
Continuous Integration Build Tool - Bamboo -
Hudson CI - Java servlet based CI.
Redsolo's blog site: Hudson embraces Python
CI Scalability with .NET apps - Continuous Automation
VB.Net Articles : Update to the Build Automation
Testing : Automating NUnit and MsTest

WiX Tricks: Automate Releases With MSBuild And Windows Installer XML -- MSDN Magazine, March 2007
Toni Cebrián » Continuous Integration for C++ using Hudson

Things related to unit testing

xTests - Multi-language, Lightweight Test-suites - C and C++ testing
xUnit.net - Unit Testing for .NET - Home
index at XUnitPatterns.com
MbUnit - Generative Unit Test Framework for the .NET Framework.
TestApi - a library of Test APIs - Home
Selective Unit Testing – Costs and Benefits « Steve Sanderson’s blog
Test Anything Protocol
MyTAP: Unit Testing for MySQL - MyTAP is a suite of database functions that make it easy to write TAP-emitting unit tests in mysql scripts. The TAP output is suitable for harvesting, analysis, and reporting by a TAP harness, such as those used in Perl applications.
bfts's minitest-5.0.8 Documentation - minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking. seattlerb/minitest

Mocking frameworks

moq - Google Code - The simplest mocking library for .NET 3.5 and Silverlight with deep C# 3.0 integration
moq-contrib - Google Code - moq contributions which includes Automocking - moq-contrib - Instruction on how to automate mocking using AutoMock container - Google Code and others.
Ayende @ Rahien - Rhino Mocks - dynamic mock object framework for the .Net platform.
NBuilder - Rapid generation of test objects for .NET - fluent, extensible interface, NBuilder allows you to rapidly create test data, automatically assigning values to properties and public fields that are of type of the built in .NET data types (e.g. ints and strings). NBuilder allows you to override for properties you are interested in using lambda expressions.
AutoMapper - AutoMapper is an object-object mapper. Object-object mapping works by transforming an input object of one type into an output object of a different type.

Usability testing

Testing for usability is something that is very important. Users can have a voice and shape the way software works. You need to listen....and make it a priority to hear what they are saying.
Fluid Project - What is Fluid?

Code review

Code review is something that helps software projects become better products. It also helps to make developers better through feedback and code reflection. It means more eyes and more understanding. It helps to enforce standards and style guidelines with development. Mentoring and discussion become part of the development practice.

An Open Source App: Rietveld Code Review Tool - Google App Engine - Google Code
YouTube - Mondrian Code Review On The Web

Code analysis

Gendarme - Mono - Gendarme inspects programs and libraries that contain code in ECMA CIL format (Mono and .NET) and looks for common problems with the code, problems that compiler do not typically check or have not historically checked.
C and C++ Code Counter | Free Development software downloads at SourceForge.net

msi Microsoft installation stuff

Howto Extract all Files from Microsoft Installer Files (msi) rather than to Install the Package « sysblogd

Hudson Continuous Integration - now owned by Oracle.
DevOps Web Application Management from Stackify
buildr — Apache Buildr- Apache Buildr is a build system for Java-based applications, including support for Scala, Groovy and a growing number of JVM languages and tools.
Welcome to Apache Maven


Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community
travis-ci/travis-ci · GitHub - A distributed build system for the open source community. users contribute build machines, github hosted projects. Ember.js,rails3,jruby,chef cookbooks,AMQP,RabbitMQ
travis-ci/travis-cookbooks · GitHub


Welcome to Jenkins CI! | Jenkins CI - community driven fork of hudson.
Jenkins on github
schisamo/chef-jenkins · GitHub
Audit Trail Plugin - Jenkins - Jenkins Wiki
JobConfigHistory Plugin - Jenkins - Jenkins Wiki
Extension points - Jenkins - Jenkins Wiki
Extend Jenkins - Jenkins - Jenkins Wiki
mikepenz/ModernJenkins - A quick css to beautify your jenkins (SimpleThemePlugin required)
Perl Projects - Jenkins - Jenkins Wiki
Authenticating scripted clients - Jenkins - Jenkins Wiki - much easier to auth against Jenkins using token auth and basic auth instead of trying to automate the forms based authentication!

Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days 2013 from Carlos Sanchez
MaestroDev - Maestro™ is a DevOps Orchestration engine.
Artifactory – the Open Source Repository Manager by JFrog
Opscode Learn Chef - #learnchef is a broad collection of resources specifically designed to help you learn Chef. Chef is "Infrastructure as Code".


Gradle - Build Automation Evolved Gradle User Guide
Gradle, please

Versioning, setting uniquely identifying your build outputs

Making sense of versioning is something that isn't so straight forward. Everyone has their own opinion on how each of the fields should be used, how many places, when they should be moved, and the technology specifics of setting,getting, and managing versions of your software.
Semantic Versioning 2.0.0
Checking file versions is surprisingly hard. - Larry Osterman's WebLog - Site Home - MSDN Blogs
Delay Load is not a good way to check for functionality - Larry Osterman's WebLog - Site Home - MSDN Blogs - i love this: "But this doesn’t change the fact that (IMHO) you’re abusing the DelayLoad functionality and using it as a versioning mechanism."

Capistrano for deployment

So I've scripted bash and written custom apps for deployment before. But I heard good things about the ruby tool called Capistrano. You can install it with gem install capistrano. It automates tasks and provides rollback capabilities.
Capistrano: Home - is a tool for automating tasks on one or more remote servers with rollback.
Same Con to Hoyci » Using Capistrano to Deploy Django Apps
Deploying a Rails Application to Dreamhost with Capistrano


reductive - reductive labs makes puppet a system for automating system administration tasks. declarative configuration...uses ruby.
Puppet Labs | Download the Learning Puppet VM
Planet Puppet
railsmachine's moonshine at master - GitHub - moonshine uses Puppet + Capistrano giving you a configuration management and deployment system that follows the Rails way, simplifying server configuration, dependency management, and Rails application deployment.
railsmachine's shadow_puppet at master - GitHub - ShadowPuppet provides a DSL for creating collections ("manifests") of Puppet Resources in Ruby.
railsmachine's railsmachine at master - GitHub - RailsMachine is a collection of libraries for automating deployment and hosting configuration for Ruby on Rails applications using Capistrano and Rake.
jfryman (James Fryman) - jfryman/puppet-nginx · GitHub jfryman/puppet-php · GitHub
BOXEN - GitHub, Inc. wrote boxen and it only works on Mac OS X, using homebrew, puppet, and roughly a bajillion libraries.
maestrodev/puppet-maven - A Puppet recipe for Apache Maven, to download artifacts from a Maven repository
Beginner's Guide to Modules — Documentation — Puppet Labs
Chisel at blogs.perl.org: Quick Start : Puppet
External Node Classifiers — Documentation — Puppet Labs - the foreman, puppet dashboard,puppet enterprise console, roll-your-own
librarian-puppet - You can all stop using git submodules now. PuppetFile that defines modules, manages your modules directory. rodjek/librarian-puppet · GitHub
Managing Puppet modules with librarian-puppet | Carlos Sanchez's Weblog

Puppet and MCollective

MCollective Introduction: Programmatic Execution of Systems Administrations Actions | Puppet Labs - framework to build server orchestration or parallel job execution systems.
MCollective » Deployment — Documentation — Puppet Labs
MCollective » Deploy » Middleware » ActiveMQ Config — Documentation — Puppet Labs
R.I.Pienaar Managing Puppet Using MCollective | R.I.Pienaar - ripienaar/mcollective-vagrant - Vagrant based MCollective testing framework.

Puppet and Augeas

augeas { "display_errors":
    context => "/files/etc/php5/apache2/php.ini",
    changes => "set PHP/display_errors Off",
Augeas — Main - Augeas is a configuration editing tool. It parses configuration files in their native formats and transforms them into a tree. Configuration changes are made by manipulating this tree and saving it back into native config files. C library,cmdline tools,DSL for config files.
Puppet Augeas - Puppet - Puppet Labs
camptocamp/puppet-augeas · GitHub - Helper for using augeas with puppet
Augeas tips and tricks for Puppet user: edit a complex node. - Blog of Sylvain Le Gall
Using Augeas with Puppet - Big Bubbles (no troubles)
domcleal/augeasproviders · Puppet Forge
Configuration Surgery with Augeas from Puppet Labs
configuration management - Set sysctl.conf parameters with Puppet - Server Fault - solutions include augeas config examples of sshd and sysctl.conf.


Cucumber - Making BDD fun - text is written in a business-readable domain-specific language and serves as documentation, automated tests and development-aid - all rolled into one format. (Cucumber works with Ruby, Java, .NET, Flex or web applications written in any language.)
Given When Then - GitHub
Feature Introduction - GitHub

Ruby testing

Maintainable Software: DRY up testing in Rails with Autotest - tool to continiously run rake test when your files change. It will also color output for easier read and report tests through growl/snarl/kdenotify.
jnicklas/capybara - Acceptance test framework for web applications Selenium, Webkit or pure Ruby drivers.

Quattor | Home - CERN also needs IaaS ServiceLevelStatusProject < FIOgroup < TWiki

The BaTLab | www.batlab.org - Build and Test Lab (BaTLab) at UW-Madison. Metronome Tutorial | www.batlab.org
Polyphemus-CI — polyphemus documentation - one eye makes for shallow bugs, pure python, pip and easy_install polyphemus

Software Verification

formal verification of multi-threaded software applications, developed at Bell Labs when I was born...PROcess MEta LAnguage
Spin - Formal Verification
Practical software verification using SPIN - Carpe diem (Felix's blog)

local browser syncs

Fiddler free web debugging proxy
Browsersync - Time-saving synchronised browser testing - npm install -g browser-sync

< Prev  Next >
Last Updated on Wednesday, 24 February 2016 21:05