David

I certainly vote +1  on your ideas to improve testing in CS and enhancing and 
embracing automation as way of life.  To put in my two cents ,  I would like to 
highlight  that unit test automation is the base for automation strategy. Here 
is a good post on test pyramid   
http://martinfowler.com/bliki/TestPyramid.html.  As developers if we can commit 
to comprehensive automated unit tests  we can release early and often. 
CloudStack with its API layer is already well positioned for 
service/integration layer automation.


Thanks
Animesh


-----Original Message-----
From: David Nalley [mailto:da...@gnsa.us] 
Sent: Wednesday, November 21, 2012 2:48 PM
To: cloudstack-dev@incubator.apache.org
Subject: Re: [DISCUSS] QA/Testing focus on 4.1

Hi folks:

Just a heads up on where I currently stand before the holidays in the US begin.
I have master building and they run unit tests - and also cobertura is 
reporting coverage reports in that job.

https://builds.apache.org/job/cloudstack-master-maven/

I also have the RAT job running here:
https://builds.apache.org/job/cloudstack-rat-master/

Both of these poll git and run if there have been commits.

--David


On Sat, Nov 10, 2012 at 7:00 AM, David Nalley <da...@gnsa.us> wrote:

> Hi folks - haven't followed up on this in several weeks - also haven't 
> had a chance to do much - I've been on holiday and traveling to ACEU.
>
> I did have the opportunity to talk to Gavin McDonald of ASF Infra fame 
> while at ACEU this past week and discuss with him some ideas for our 
> testing. He did recommend we actually use builders local to ASF infra 
> for things we want to happen fast (compile tests, unit tests, etc) as 
> they are effectively on the same network, and thus things like 
> checkouts happen much faster than connections over the WAN.
>
> I am going to start having my weekly IRC time at 1800 UTC in 
> #cloudstack-dev on Wednesdays - all are welcome to join, I know it is 
> inconvenient for many - and so don't hesitate to do things outside of 
> that time - I am going to start working on migrating some of the 
> simpler stuff to builds.a.o.
>
> --David
>
>
> On Wed, Oct 17, 2012 at 6:22 PM, David Nalley <da...@gnsa.us> wrote:
> > Warning: This is a long ponderous email. Stop now and get your cup 
> > of coffee/tea/$beverage.
> >
> > Hi folks,
> >
> > I've been having some off hand conversations with folks in other 
> > open source communities and rereading a number of good books of late 
> > (most notably Continuous Delivery by Jez Humble) and I would like to 
> > toss this idea out and see what folks think of it:
> >
> > CloudStack is large, often complex, piece of software. There are few 
> > people who truly grok all of CloudStack, and because of the 
> > diversity of environments it can be deployed in it can be truly 
> > bewildering to test fully. That said, I noticed a number of things 
> > that became last minute, blocker bugs, and it wasn't overly esoteric 
> > configurations, it was code paths that we just hadn't excercised in 
> > testing. One if these would have even been easily detected and fixed 
> > we had been testing installation alone. Additionally, as a project 
> > we are dramatically growing. The number of people adding non-trivial 
> > amounts of code is growing, and that makes ad hoc QA even more difficult.
> >
> > So my proposal in short is that we focus on testing, beginning 
> > immediately and erect what is effectively a continuous deployment 
> > pipeline - such that our confidence in our codebase is such that we 
> > could arbitrarily decide to release if we so desired. I don't think 
> > that this is a one release type of project, indeed I think it's 
> > really more of a culture shift than a technical project. The big 
> > shift is that EVERYONE must be responsible for a quality release. To 
> > that end, I'd propose the following tenets if we choose to adopt this:
> >
> > * Tests become the Andon cord[1] for the entire project. When a test 
> > fails we stop - additional commits don't happen - we find out what 
> > is wrong and fix it. More on this in a bit.
> >
> > * Tests (specifically automated tests) become part of our culture.
> >    * New features should come replete with both unit and integration 
> > tests. I am tempted to suggest a certain percentage of coverage, but 
> > I worry that it is a red herring; particularly given our dismal 
> > current unit test coverage.
> >    * Blocker and critical bugs must have automated tests that get 
> > committed as part of being qualified for closing.
> >
> > * We dedicate a non-trivial portion of our energy to enhancing not 
> > just the quantity and quality of our tests, but also on making it 
> > highly automated, and capable of delivering fast feedback. Ideally 
> > we would know within minutes if a commit broke unit tests, within 
> > hours if a commit failed in integration testing.
> >
> > I also know that this isn't a new idea. Lots of people have been 
> > focused on automated testing as part of our ongoing development. The 
> > only difference here is that I am actively asking you not to solely 
> > depend on those folks to do the work for you, but to make testing a 
> > part of the problem that you have to solve here. To be clear the 
> > goal isn't to be perfect and problem free with every commit - things 
> > will break. (If you've followed things at all in CloudStack you'll 
> > know that I've broken builds more than once)
> >
> > Pipeline I'd like to see for 4.1:
> >
> > 1. RAT test (fail this and we have IP problems) 2. Compile test 
> > (does it actually compile) 3. Unit tests 4. Package building 5. 
> > Automated installation (multiple platforms, does it actually install 
> > from the packages) 6. Integration tests (aka Marvin running against 
> > virtualized or real CS deployments)
> >
> > Clearly the above isn't an end/all be all for testing, but perhaps 
> > we can get some of this going in the 4.1 timeframe. There are also 
> > clearly corner cases (building marvin, building api docs, building 
> > official documentation) that need to be included in the pipeline as 
> > well. But the principle is that we won't move on past our failure 
> > until that failure is resolved.
> >
> > Immediate Action Items:
> >
> > Whether we adopt this or not, I plan on showing up on IRC once a 
> > week to work on testing in some form or another for an hour or two. 
> > I will also be cajoling people to join me. I might be working on 
> > infrastructure tasks. Obviously we have people scattered across the 
> > globe, so it's not the only time to work on testing, but you are 
> > welcome to join me.
> >
> > I am curious to hear others thoughts, comments, or flames? Is this 
> > something we should espouse as we are close to 4.0.0 releasing and 
> > turning our focus on 4.1?
> >
> > --David
> >
> > [1] http://en.wikipedia.org/wiki/Andon_(manufacturing)
>

Reply via email to