Cov4Mich: Coverage for Michelson programs [3 months / 6 months]
Test coverage is a well-established measure of how thoroughly a program is tested.
Currently, there is no tooling for measuring test coverage for Michelson – the lan-
guage used to program smart contracts for the Tezos blockchain, empowering a wide
range of applications in decentralized finance. The goal of this internship is to de-
velop a tool for measuring and visualizing test coverage of Michelson programs.
Goals of the internship
The first part of the internship is to instrument Tezos’ Michelson interpreter to output
a coverage trace. The second part of the internship is to create a reporting tool that
visualizes coverage traces for Michelson. Such a tool can be made more general by
implementing support for standard coverage trace formats such as Cobertura and
for additional programming languages.
Finally, it is often convenient to express queries regarding coverage in terms of sets:
“What part of the code is covered by test suite X, but not covered by either suite Y
nor Z?” This query corresponds to the expression X \ (Y ∪ Z) – the reporting tool
should be able to visualize the coverage corresponding to such expressions.
Requirements are (in decreasing order of importance):
• Familiarity with functional programming, e.g. OCaml, Haskell or Scala.
• Basic notions in web programming 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 indepen-
dently 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).