Announce: bbt v0.03

bbt is a driver for black box testing.

Its particular feature is that the test is written in english, using a Markdown format (that is directly suitable for the documentation), with a traditional TDD Given/When/Then structure.

A simple example:

## Scenario : I want to know uut version

- When I run `uut --version`
- Then the output contains `version 1.0`

That will be displayed as:

Scenario : I want to know uut version

  • When I run uut --version
  • Then the output contains version 1.0

And to run it:

bbt my_scenario.md

That’s it.

There is another example slightly less minimalist on bbt README

The goal of the project is to explore to what extend:

  1. we can get a description using all the possibilities of Markdown and Markdown extensions (for example graphics), and still executable,
  2. we can use english as a DSL for behavior description language suitable for black bock testing,

and both without any ambiguity.

bbt is at an experimental stage, with limited features, but usable (I already use it on my acc project).
If you have any ideas, comments or needs (its time to write your letter to Santa Claus), feel free.

No Alire packaging yet, but it’s easy to compile, I guess.

Lionel

3 Likes

I see you starred gnatbdd, could I get further with my renderer with this?

Not sure to understand, you want to know if you could test some graphic component with gnatbdd?

See the issues on gnatbdd.

I’ve never used TCL, but how does this differ from the expect functionality of which I’ve heard?

Ok, Got it!
So no, you won’t get further with bbt, because it is not done for integration or unit testing : there is no stub or mock in bbt.
It is only testing command line app, from the (external) user point of vue.

Yes, You can do what bbt does (and actually much much more) with TCL expect/send and many other alternatives.
Some like bats or precisely are mentioned somewhere in my notes in docs/, but they are all using some kind of shell or specific language.

bbt is the only one, as far as I know, that is using plain english, so that the documentation is directly executable without translating or rewriting (and can be written by non computer field people that don’t even know how it will be implemented)

The main point for me was the “single source of truth” : I write my behavior once, and it’s directly suitable for doc and for execution.