Algorithm¶
The algorithm below shows the major steps involved in the Artemis testing procedure. The finer details and capabilities are omitted from the algorithm itself, we refer to the detailed description of each step later in this document.
Note, this section is incomplete as we are evolving the testing procedure to accomedate new features.
def main(URL_initial, forms_initial):
# Step 0: Global initialization
worklist = Worklist()
browser = Browser()
statistics = Statistics()
input_strategy = InputStrategy()
for configuration in worklist:
# Step 1: Page load
browser.reset_counters()
browser.load_page(configuration.url)
# Step 2: Post-load processing
browser.fill_forms(forms_initial)
# Step 3: Input sequence execution
for input in configuration.inputs:
browser.fill_and_mark_forms(input.forms)
browser.trigger_event(input.event)
# Step 4: Post-input processing
statistics.update(browser.counters)
# Step 5: Iteration
configurations_new = input_strategy.generate(configuration, browser.counters, statistics)
worklist.add(configurations_new)
Step 0: Global initialization¶
Step 1: Page load¶
Step 2: Post-load processing¶
- Form inputs provided on the command line are written to the page.
Step 3: Input sequence execution¶
- Non-blank form inputs (represented by FormInput) are written to the page.
- Form inputs (represented by FormInput) are marked as dynamic form inputs such that the symbolic infrastructure can associate the form inputs back to Artemis.