[bind10-dev] Ask some questions for cucumber

Jeremy C. Reed jreed at isc.org
Thu May 12 13:59:39 UTC 2011

On Thu, 21 Apr 2011, qiaojing wrote:

> I saw the discussion about cucumber being validated to be used in bind10
> test.
> After my investigation of this tool, some questions come up as follows:
> * As I know, cucumber is a tool for BDD, and its obvious benefit is for
> design.
>    So I wonder what is the advantage of using it in bind10 as the codes are
> already there?
>    Or just to use its automated test mechanism?

We need a way to do functional testing where we can have reusable parts 
(like starting, configuring, queries, transfers, stopping, etc) and can 
generate useful reports. Cucumber may be nice since we can describe the 
behavior is plain text and write (hopefully) simple steps in Python.

We do have some of BIND 9's test framework also ported, with the new 
"systest" target. (We still need to automate this on one of our build 
farm machines.)  I don't know what is better for this (redoing using 
cucumber style or extending our systest).

Another goal is for it to be DNS-server agnostic. We hope to be able to 
use the suite of tests we develop against other DNS implementations too.

> * If it is chosen, I think it will be a time-consuming work to write the
> features and steps 
>    from scratch. Or if there is way to move the use cases from ready-made
> ones? And Where
>    are they? 

Yes, it will be time consuming. As for reusing use cases, I think we 
will need to rewrite all.

> * About the test code, it seems the step definition is like white-box test,
> it often directly
>    calls the lib of source code. So I think the test programmer should be
> familiar with the
>    implementation very much. 

I don't think we will use cucumber at that level. For that we will 
continue to use pytest and googletest.

> * As cucumber, ruby is the best language, and I see other languages
> might not be well-supported,
>    such as python and shell. And whether it should be the same language used
> in implementation?  

I hope we don't need to introduce another dependency (ruby) on all our 
build systems.

> * Is there a tester called 'dns cucumber'? Where shall I get it? And what is
> the three clone of cucumber
>    you discussed?

For the existing work, Michael Graff had done some experiments in ruby 
around a year ago. I don't know more about that.

As for python implementations of cucumber:

(scroll down)


(As for three implementations: I was confused. I found another that was 
just an idea and not completed at
and then also python examples for ruby cucumber at
http://github.com/aslakhellesoy/cucumber/wiki/Python .)

A major part of this effort is defining all the test cases (even if not 
writing the corresponding code). I started doing this for DNSSEC a few 
weeks ago, but got delayed by other work (botan, new web/git/trac 
server, issues with production auth server, log4cplus, etc. :)

More information about the bind10-dev mailing list