RespiraWorks / Ventilator

Fully-featured ICU ventilator design, optimized for manufacture using commonly available components and free to license. Repository tracks all mechanical, electrical and systems design, software, requirements and regulatory documentation.
Apache License 2.0
130 stars 38 forks source link

Test device for pizza build amenable to automation. #638

Open neelfirst opened 4 years ago

neelfirst commented 4 years ago

Let's talk about what is needed for automated integration tests. @asmodai27

asmodai27 commented 4 years ago

Thank you for creating this.

I'll start by explaining what my ideal integration testing platform would do, and then we can see what is doable from there.

First thing we have to ask ourselves is: which level are we testing on?

Note that there can be hybrid tests at the systems level: we could decide to set flow and pressure on the nucleo pins while measuring the controller response on the blower speed (rpm). These tests are a little challenging to do and require strict enforcement of "physical plausibility" of what we set on the pins in order not to deteriorate the blower, but we could come up with tests that cannot be performed without doing this (sensors' fault tolerance comes to mind).

In my mind, the easiest to automate are software integration, and they are probably the only ones we should give the most effort automating: the electronics and pneumatics will probably go through less change that lead to an unpredictable regression than the software. This is something I want insist on BTW: automated tests catch regressions, they are not usually the right way to test an evolution.

So, what should this platform do? Here are my answers:

  1. Allow user to dynamically control input signals within acceptable limits (enforcing the physical limits is a big bonus). Controlling the input means setting the value and recording the actual value the testing platform reached.

  2. Allow user to record output signals.

  3. Allow tests to be run with minimal human intervention, ideally: push "start" button, wait for the tests to run, collect results. Interpreting the recordings could require human intervention, but running the tests should be as effortless as possible for the human.