[asterisk-dev] About asterisk development plans

Peter Beckman beckman at angryox.com
Wed Mar 18 13:29:35 CDT 2009


Several people on this thread have mentioned being afraid of using the
latest "stable" release.  I too have this fear, and run an older version of
Asterisk and refuse to upgrade, not knowing what changes to the code might
have been made that will break my existing system.

I regularly have a call with another friend who runs Asterisk in
production, and he constantly gripes about how upgrading broke this and how
a seemingly harmless change to the code broke a whole slew of other things.

I don't really have a lot of choice to move to another platform though, and
honestly I'm not sure changing would solve the problem.  But it is clear
that regression testing, feature testing, and automated testing is
something that would greatly improve the consistency and REAL and perceived
stability of asterisk.

On Wed, 18 Mar 2009, Olle E. Johansson wrote:

> To show the complexity of what we're discussing:
> Let's take blind transfer.
>
> Now we're up to a massive amount of tests.

  In my experience, writing the code takes 1 hour, and writing good tests
  can take 2-3 hours.

  The nice thing is that once you've written the test, it's done.  You can
  use it and run it over, and over, and over again.  You can change your
  base code all day long, then run your 15,000 tests to see if you broke
  anything else.

  And now you have a fully reproducable way to backwards test features and
  functionality.

  On top of that, you can now ask bug submitters to write you a test that
  causes a feature or some functionality to fail.  This helps the Digium
  developers focus on fixing code that someone else can reproduce
  consistently, and provide the exact code to show it.

  Everyone keeps cheering for features for Googles SoC.  Here's what I want
  -- a well documented, well thought-out automated testing suite for
  asterisk.  Once you build it, plus a few hundred tests that test the lower
  levels, libraries, and basic functionality, then push more testing out to
  developers and users.  Show us "Here's how to test your dialplan" or
  "Here's how to test your AGI" with a few examples, and we'll write tests
  to pass or fail.

> One bullet point, many, many hours of work. A lot of possibility to
> cause a bug when you fix something else.

  Sure, but if you get the test working, now you know that the code it is
  testing is working, and the test is giving you an expected pass.  When
  someone comes back and says "Hey Olle, it's passing the Call Pickup test
  #32, but when it is done like this, Call Pickup fails.  Here's a test I've
  written to demonstrate the failure."

  Then Olle can look at the test, verify if the test is valid and SHOULD
  work, then fix the code so it DOES work.  Then Olle runs the other 15,000
  tests to make sure that the fix does not break something else Olle didn't
  expect.  And if all tests pass, commit!

  Start small.  Start with simply testing the libraries.  I started testing
  my core function libraries and classes first.  Then I expanded to the next
  level of libraries which combined core functionality.  Then I expanded to
  test advanced functionality.  I didn't do it all at once, but now that I
  have it, I can test every nook and cranny of code in my systems to make
  sure things are working as expected.

Beckman
---------------------------------------------------------------------------
Peter Beckman                                                  Internet Guy
beckman at angryox.com                                 http://www.angryox.com/
---------------------------------------------------------------------------



More information about the asterisk-dev mailing list