02291 system integration
play

02291: System Integration Acceptance Tests Hubert Baumeister - PowerPoint PPT Presentation

02291: System Integration Acceptance Tests Hubert Baumeister huba@dtu.dk DTU Compute Technical University of Denmark Spring 2020 Types of Tests Supports Programming Critique Project Explorative Testing Business Facing Acceptance Tests


  1. 02291: System Integration Acceptance Tests Hubert Baumeister huba@dtu.dk DTU Compute Technical University of Denmark Spring 2020

  2. Types of Tests Supports Programming Critique Project Explorative Testing Business Facing Acceptance Tests (trying to break the system) Property Testing Technology Facing Unit Tests (Performance, Scalability)

  3. Acceptance Tests Traditional testing Developer User Quality Assurance (QA) define user requirements UserRequirments understand requirements understand define requirements system requirements SystemRequirments create tests understand Tests requirements implement run the tests System [defect found] [no defects] fix defects

  4. Acceptance Tests in Agile processes Test-Driven Development Developer User Quality Assurance (QA) define user requirements UserRequirments select the feature / user story with highest priority Feature / User Story understand user story create test Test [more features] implement and refactor System Find defects fix defects [defect found] [no defect] create test [no more features]

  5. Example of acceptance tests for a use case ◮ Use case name: Login Admin actor: Admin precondition: Admin is not logged in main scenario 1. Admin enters password 2. System responds true alternative scenarios: 1a. Admin enters wrong password 1b. The system reports that the password is wrong and the use case starts from the beginning postcondition: Admin is logged in

  6. Manual tests Successful login Prerequisit: the password for the administrator is “adminadmin” Input Step Expected Output Fail OK Startup system “0) Exit” “1) Login as administrator” “1” Enter choice “password” “adminadmin” Enter string “logged in” Failed login Prerequisit: the password for the administrator is “adminadmin” Input Step Expected Output Fail OK Startup system “0) Exit” “1) Login as administrator” “1” Enter choice “password” “admin” Enter string “Password incorrect” “0) Exit” “1) Login as administrator”

  7. Manual vs. automated tests ◮ Manual tests should be avoided ◮ Are expensive; can’t be run often ◮ Automated tests ◮ Are cheap; can be run often ◮ Robert Martin (Uncle Bob) in http://www.youtube.com/watch?v=hG4LH6P8Syk ◮ manual tests are immoral from 36:35 ◮ how to test applications having a UI from 40:00 ◮ How to do UI tests? → Solution: Test under the UI

  8. Test under the UI User Thin Presentation Layer No Business Logic Tests Business Logic Application Layer e.g. LibraryApp Business logic Domain Layer e.g. User, Book, ... Business logic Persistency Layer

  9. Language to express acceptance tests Framework for integrated tests (Fit)

  10. Fit Framework ◮ Framework for integrated test (Fit) ◮ Goal: Automated acceptance tests ◮ Ward Cunningham (CRC cards, Wiki, patterns, XP) ◮ Tests are HTML tables → Customer formulates tests ◮ http://fit.c2.com ◮ Fitnesse ◮ Standalone Wiki with Fit integration ◮ http://www.fitnesse.org → use this to play around with Fit tests ◮ Download fitnesse-standalone.jar , run java -jar fitnesse-standalone.jar -p 8080 and go to localhost:8080 ◮ Set the class path with !path ... ◮ Compile with javac -cp fitnesse-standalone.jar:. ...

  11. Fit Framework System Fit tables Fit engine Fixtures under test Glue code Program Model

  12. Column fixture public class Division extends ColumnFixture { public double numerator; public double denominator; public double quotient() { Div sut = new Div(); return sut.divide(numerator, denominator); } } public class Div { public double divide(doube numerator, double denominator) { return numerator / denominator; } }

  13. Row fixture public class PrimeNumberRowFixture extends RowFixture { public Object[] query() throws Exception { Primes sut = new Primes(); PrimeData[] array = new PrimeData[5]; int[] primes = sut.primes(5); for (int i = 0; i < 5; i++) { PrimeData pd = new PrimeData(); pd.setPrime(primes[i]); array[i] = pd; } return array; } public Class getTargetClass() { return PrimeData.class; } }

  14. Action fixture public class CountFixture extends Fixture { private Counter sut = new Counter(); public void count() { sut.count(); } public int counter() { return sut.getCounter(); } public void counter(int c) { sut.setCounter(c); } } public class Counter { int counter = 0; public void count() { counter++;} public int getCounter() { return counter;} publc void setCounter(int c) { counter = c;} }

  15. Action Fixture: From use case to test ◮ Interactions: The user does something with the system ◮ press : performing one action: press a button: e.g. press | count ◮ enter : performing one action with a parameter: e.g. enter | name | Anne ◮ ( action : performing an action with several parameters: e.g. action | offer | mask | p2 ◮ Not standard fit : Can be done with e.g. enter instead: enter | object to trade | mask enter | offer object to | p2 ◮ The system changes because what the user did ◮ check : e.g. check | counter equals | 3 ◮ Preconditions / postconditions ◮ check : e.g. check | user registered | true

  16. Travel Agency: detailed use case list available flights name: list available flights description: the user checks for available flights actor: user main scenario: 1. The user provides information about the city to travel to and the arrival and departure dates 2. The user initiates the search 3. The system provides a list of available flights with prices and booking number alternative scenario: 1a. The input data is not correct (see below) 2. The sytem notifies the user of that fact and terminates and starts the use case from the beginning 3a. There are no flights matching the users data 3. The use case starts from the beginning note: The input data is correct, if the city exists (e.g. is correctly spelled), the arrival date and the departure date are both dates, the arrival date is before the departure date, arrival date is 2 days in the future, and the departure date is not more then one year in the future ◮ Acceptance Tests: http://www2.compute.dtu.dk/courses/02291/ examples/test/travel_agency_fit_tests.pdf

  17. Travel Agency: list available flights Fit tests main scenario: 1. The user provides information about the ActionFixture city to travel to and the start TravelAgency enter start city Copenhagen arrival and departure enter destination city Paris dates enter Arrival date 01-04-10 enter Departure date 08-04-10 2. The user initiates the enter number of people 1 search press search check error message None 3. The system provides a list of available flights with prices and booking number ReturnedFlights booking nr price number departure time arrival time Return number Return departure time Return arrival time #0001 1000 SK1111 01-04-10 08:00 01-04-10 10:00 SK1112 08-04-10 08:00 08-04-10 10:00 #0002 2000 AF4221 01-04-10 13:00 01-04-10 15:00 AF4222 08-04-10 15:00 08-04-10 17:00

  18. Testing in the system integration course ◮ Learn how to write test → Acceptance tests as tables ◮ Check that tests and scenarios describe the same interactions ◮ Explain the tables and their kind (column-, row-, or action fixtures) ◮ Just the tables: LaTeX, Word, . . . ◮ http://www.fitnesse.org/FitNesse.UserGuide. WritingAcceptanceTests.FitFramework

  19. Buy Fruit Fit tests ◮ Use Case Buy Fruit main ◮ Main Scenario scenario: ActionFixture 1. Input coins until the start VendingMachineFixture check number of apples 5 price for the fruit to be enter input 1 selected is reached enter input 2 2. Select a fruit press apple check dispensed item apple 3. Vending machine check rest money 0 dispenses fruit and zero check number of apples 4 rest money ◮ Alternative Scenario a alternative scnearios: ActionFixture start VendingMachineFixture a1. User inputs more coins check number of apples 5 than necessary enter input 1 enter input 5 a2. select a fruit press apple a3. Vending machine check dispensed item apple check rest money 3 dispenses fruit check number of apples 4 a4. Vending machine returns excessive coins

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend