flipperzero-firmware/wiki/Testing.md
あく 3c2711102c
Target refactoring and cube update (#161)
* Lib: move cube to libs. Firmware: prepare for code base refactoring, detach from cube, port to cmsis_os2.

* Firmware, target f2: regenerate project with latest cube package, tim17 for os ticks.

* Firmware: unified codebase.

* Core: do not include semaphore on old targets. Firmware: dfu uplaod target.

* CI: submodules, add firmware build.

* CI: proper submodule config.

* refactor build system

* CI: update chain to use new targets. Documentation: update to match current structure.

* CI: clean before rebuild.

* Add local test

docker-compose exec dev make -C firmware TARGET=local TEST=1 run

* Makefile: target specific build directory. CI: updated artifacts path.

* Makefile: init git submodules if they don't exists.

* Makefile: debug rule now doesn't reset MCU, prevent SIGINT propagation to st-util.

* Makefile: proper rebuild sequence in zz and zzz

* Makefile: timestamp tracking for flash and upload commands.

* Apps: modular build. Input: fix flipper hal inline.

* Wiki: proper bootloader link.

* Applications: fix broken build for local targets.

* add st-flash to docker

* fix build

* force rebuild app

* move app force to firmware part

* fix build deps

* qrcode build ok

* fix example display

* add testing routine

* update build instruction

Co-authored-by: Aleksandr Kutuzov <aku@plooks.com>
Co-authored-by: aanper <mail@s3f.ru>
2020-10-07 12:37:43 +03:00

3.0 KiB

Bootloader testcase

  1. # Clean flash
  2. make -C bootloader flash # Load bootloader
  3. # reboot device
    • Press right
    • Press left
    • Wait 0.1 s
    • Release left
    • Release right
  4. Wait 0.5 s
  5. # Expect no FW
    • Expect: no uart welcome message
    • Expect: red led on
    • Expect: no USB
  6. # reboot device and go to DFU
    • Press left
    • Press right
    • Wait 0.1 s
    • Release left
    • Wait 0.5 s
    • Release right
  7. Wait 0.5 s
  8. # Expect DFU
    • Expect: blue led on
    • Expect: USB: DFU
  9. target_f2/deploy-dfu.sh # load FW
  10. # reboot device
    • Press right
    • Press left
    • Wait 0.1 s
    • Release left
    • Release right
  11. Wait 0.5 s
  12. # Expect FW
    • Expect: uart welcome message
    • Expect: USB Flipper CDC

Input testcase

  1. docker-compose exec dev make -C target_f2 example_input_dump
  2. Flash
  3. For x in ``` [ (Up, "00"), (Down, "01"), (Right, "02"), (Left, "03"), (Ok, "04"), (Back, "05"), ]
    * Press ${x[0]}
    * wait 0.05
    * Expect: Uart: "event: ${x[1]} pressed"
    * wait 0.05
    * Release ${x[0]}
    * wait 0.05
    * Expect: Uart: "event: ${x[1]} released"
    * wait 0.05

TODO: add debouncing check (multiple press and check there is no multiple events)

# General building testcase

Local target:

* `docker-compose exec dev make -C firmware TARGET=local APP_TEST=1 clean`
* `docker-compose exec dev make -C firmware TARGET=local APP_TEST=1 run`
* check tests pass/fail

* `docker-compose exec dev make -C firmware TARGET=local APP_EXAMPLE_BLINK=1 run`
* GPIO on and off

* `docker-compose exec dev make -C firmware TARGET=local APP_EXAMPLE_UART_WRITE=1 run`
* GPIO on/off and `counter: %` writes

* `docker-compose exec dev make -C firmware TARGET=local APP_EXAMPLE_IPC=1 run`
* ASCII display draw

* `docker-compose exec dev make -C firmware TARGET=local APP_EXAMPLE_INPUT_DUMP=1 run` not implemented

* `docker-compose exec dev make -C firmware TARGET=local APP_EXAMPLE_QRCODE=1 run`
* Some writes to display

* `docker-compose exec dev make -C firmware TARGET=local APP_EXAMPLE_DISPLAY=1 run`
* Some writes to display

F2 target:

* `docker-compose exec dev make -C firmware TARGET=f2 APP_TEST=1 clean`
* `docker-compose exec dev make -C firmware TARGET=f2 APP_TEST=1 flash`
* check UART for test pass/fail

* `docker-compose exec dev make -C firmware TARGET=f2 APP_EXAMPLE_BLINK=1 flash`
* Red LED blink (1s period)

* `docker-compose exec dev make -C firmware TARGET=f2 APP_EXAMPLE_UART_WRITE=1 flash`
* Red LED shortly blinking, `counter: %` writes to UART

* `docker-compose exec dev make -C firmware TARGET=f2 APP_EXAMPLE_IPC=1 flash`
* ASCII display draw in UART

* `docker-compose exec dev make -C firmware TARGET=f2 APP_EXAMPLE_INPUT_DUMP=1 flash`
* Press all buttons, `state` and `event` writes to UART

* `docker-compose exec dev make -C firmware TARGET=f2 APP_EXAMPLE_QRCODE=1 flash`
* QR code show on the screen

* `docker-compose exec dev make -C firmware TARGET=f2 APP_EXAMPLE_DISPLAY=1 flash`
* `Hello world` show on the screen