PositionNomadic Labs is looking for a Generation of Scenario Tests intern.
Tutors: Zaynah Dargaye, Arvid Jakobsson
Tezos is a blockchain developed with a focus on governance and security. It is highly safety-critical software and so requires a high level of code quality.
To this end, the Tezos code-base is entirely written in OCaml, a strongly typed functional language. In addition, Nomadic Labs applies formal verification and testing. In terms of testing, we use unit, integration and property-based tests. Currently, we push for a wider application of property-based tests. Taking this further, we are working on automatic generation of the property-based tests themselves. Generation enables particularly efficient validation of code: it automates boilerplate tasks (saving time and avoiding bugs) and thus lowers the expertise needed to develop tests.
Use-case tests correspond to use-case scenarios. A use-case scenario describes the behavior of an applied functionality under a characterized set of parameters. For a given functionality, the set of use-case scenarios describes all its possible behaviors. A use-case scenario is validated by a series of tests on every called function.
Goals are in order:
- To create a tool for specifying use-case scenarios of OCaml functions in an API, similar to tags in ocamldoc comments1.
- To implement a PPX2 code generator that transforms annotations into scenario tests.
- To create a tool that generates a report for all use-case scenarios of a functionality.
- Knowledge of OCaml programming
- Basic understanding of formal verification and testing
- Experience of a version control system (like git) is a plus.
You will work at the Nomadic Labs’ offices in Paris.
Participating in a large scale open-source project you will have to rapidly learn to use collaborative tools (Git, merge request, issues, gitlab, continuous integration, documentation) and to communicate about your work. The final results might be presented at an international conference or workshop.
You will have a designated advisor at Nomadic Labs and will have to work independently and to propose thoroughly-considered solutions to the different problems you will have to solve. You will be encouraged to seek advice from members of the team.
All material produced (essays, documentation, code, etc.) will be released under an open source license (e.g. MIT or CC).
➡️ If you don’t meet all the criteria above, but think you can still be an asset to us, please consider applying.