Test-Case Generation for Runtime Analysis and Vice-Versa: Verification of Aircraft Separation Assurance
Marko Dimjašević University of Utah Dimitra Giannakopoulou NASA Ames Research Center ISSTA 2015, Baltimore, Maryland July 17, 2015
1 / 21
Test-Case Generation for Runtime Analysis and Vice-Versa: - - PowerPoint PPT Presentation
Test-Case Generation for Runtime Analysis and Vice-Versa: Verification of Aircraft Separation Assurance Dimitra Giannakopoulou Marko Dimjaevi University of Utah NASA Ames Research Center ISSTA 2015, Baltimore, Maryland July 17, 2015 1 /
1 / 21
◮ Propose verification properties for aircraft separation
◮ Verify properties at runtime
2 / 21
◮ Part of US federal government’s NextGen project ◮ Developed at NASA Ames Research Center ◮ Software system for aircraft separation assurance ◮ 65K lines of Java code ◮ Its environment’s core: 450K lines of code
3 / 21
4 / 21
5 / 21
5 / 21
5 / 21
5 / 21
5 / 21
5 / 21
6 / 21
◮ Environment stubbing ◮ Light-weight testing with different kinds of input than
◮ E.g. airspeed, initial heading, climb rate, heading
6 / 21
◮ Environment stubbing ◮ Light-weight testing with different kinds of input than
◮ E.g. airspeed, initial heading, climb rate, heading
◮ Test-case generation: control conflict creation process
6 / 21
◮ Environment stubbing ◮ Light-weight testing with different kinds of input than
◮ E.g. airspeed, initial heading, climb rate, heading
◮ Test-case generation: control conflict creation process
◮ Test-case generation ◮ Property verification at runtime
6 / 21
◮ Avoid usual way: instrumentation for verification ◮ Leave AutoResolver’s source code intact
7 / 21
◮ Avoid usual way: instrumentation for verification ◮ Leave AutoResolver’s source code intact
◮ Java language extension ◮ Bytecode weaving (instrumentation)
7 / 21
◮ Avoid usual way: instrumentation for verification ◮ Leave AutoResolver’s source code intact
◮ Java language extension ◮ Bytecode weaving (instrumentation)
◮ No external verification tool used (SMT solvers, MOP
7 / 21
◮ 1 property = 1 aspect ◮ 1 aspect = multiple pointcuts and advices
8 / 21
◮ 1 property = 1 aspect ◮ 1 aspect = multiple pointcuts and advices
◮ Where are interesting points of execution in
8 / 21
◮ 1 property = 1 aspect ◮ 1 aspect = multiple pointcuts and advices
◮ Where are interesting points of execution in
◮ Points in wrapper itself
8 / 21
◮ 1 property = 1 aspect ◮ 1 aspect = multiple pointcuts and advices
◮ Where are interesting points of execution in
◮ Points in wrapper itself
◮ Actions to be taken at pointcuts
8 / 21
9 / 21
◮ Verification at
10 / 21
◮ Verification at
◮ Need for good
◮ Test cases 10 / 21
◮ Verification at
◮ Need for good
◮ Test cases
10 / 21
◮ Arbitrary many conflicts
11 / 21
◮ Arbitrary many conflicts ◮ Secondary conflicts — challenging to create
11 / 21
◮ Arbitrary many conflicts ◮ Secondary conflicts — challenging to create ◮ Time dimension added at runtime
11 / 21
◮ Secondary conflicts: created along a resolution trajectory
12 / 21
◮ Secondary conflicts: created along a resolution trajectory
12 / 21
◮ Secondary conflicts: created along a resolution trajectory
T2 T1 T ′
1
T2 T2 T ′
1
T3
12 / 21
13 / 21
◮ Test suite of 3.5 million test cases
◮ Each test case with about 5 conflicts
◮ Every test case executed at 9 different time points
◮ Fly all aircraft for some time and then call AutoResolver ◮ Effectively: 3.5 million · 9 = 31.5 million test cases
◮ Check if every requirement is exercised
◮ Second-level monitors 14 / 21
15 / 21
◮ It does not hold, but this is not a bug ◮ AutoResolver does not resolve conflicts that:
◮ involve aircraft already in violation ◮ happen earlier than a predetermined time limit (1 minute) ◮ happen later than a predetermined time limit (8 minutes) ◮ “Neither plane able to maneuver/neither plane able to be
15 / 21
16 / 21
◮ No violation found
16 / 21
17 / 21
◮ No violation found ◮ No test case that exercises respective parts of code
◮ Second-level monitor
◮ Need support for weather conflict type
17 / 21
18 / 21
◮ No violation found
◮ Several test cases used to indicate violation (bug found
18 / 21
19 / 21
19 / 21
20 / 21
◮ Light-weight verification of aircraft separation assurance
◮ Runtime verification for test-case generation ◮ Test-case generation for runtime verification
21 / 21
◮ Light-weight verification of aircraft separation assurance
◮ Runtime verification for test-case generation ◮ Test-case generation for runtime verification
◮ Crossroads — Umberto Nicoletti ◮ This presentation — Marko Dimjašević, CC-BY-SA 4.0
21 / 21