V Model and Testing - KU-SKE17/Software-Process GitHub Wiki

V-Model

Activities or phases in SDLC V V&V, including different kinds of testing
Requirements Elicition or... <-> create acceptance test -> Acceptance Testing
System Design (Arch) -> create acceptance test -> System Testing Integration Testing
Software, Module, or Detail Design
Implantation on (coding) create Test Plan Unit Testing
  • In Agile
    • developers are supposed to write and run unit tests while writing code
    • use C.I.
  • In V-Model
    • last line [Implantation, Test Plan, Unit Testing] might overlap at the same time

Problem when having a developer write tests for his own

  • psychological problem
    • The developer doesn't try very hard to make his own code fail
    • Thorough tests -> more work to fix code
  • understanding or perspective problem
    • (test from the code, not test from the spec)
    • You write tests based on the code you already wrote, not based on what software should do
    • Your thinking is biased (code for too long)
    • Your tests might be incomplete (fail to test some part of the spec)

2 techniques to measure how thorough our tests

  • Code Coverage -> statement coverage, branch coverage, path coverage
  • Mutation Testing -> modify some part of the code & run the tests to see if the change is defected
    • Change operators [+, -, *, /, //, %, or, and, not]

What are the current systems and why are they difficult to test

  • System with multiple threads and/or events that can arrive in undetermined order
  • Different hardware environment can have different number of cores and CPUs, so the number of simultaneously running threads may differ, too.