Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mobile testing like you mean it

Mobile testing like you mean it

Alexandra Marin

November 26, 2016

More Decks by Alexandra Marin

Other Decks in Programming



  2. But later… public void TestMakingTransfer() { var amountToPay = 100;

    var currentAccount = accounts.GetCurrentAccount(); var initialAmount = currentAccount.GetBalance(); currentAccount.Pay(amountToPay); Assert.AreEqual(initialAmount, payingAccount.Amount - amountToPay); } crossplatform.io
  3. And now? crossplatform.io Feature: Sending out money transfers A user

    with a valid account in our app would like to make payments to other users using local or foreign currencies Scenario 1: I’m sending my friend money Scenario 2: Paying my Internet bill
  4. crossplatform.io BEHAVIOR DRIVEN DEV Outside-in Development philosophy in which the

    application code is written after its requirements have been defined
  5. crossplatform.io A COLLABORATION TOOL Sit down and work together! Conversations

    tend to uncover assumptions between you and your user’s desired result.
  6. crossplatform.io PEOPLE CENTRIC APPROACH Get to a common ground by

    discussing examples and using a language everyone can understand. Do your future self a favor!
  7. crossplatform.io RESULTS Documented features tied directly to your development and

    testing process. Concrete, executable, easy-to-repeat behavior embodied in automated tests.
  8. crossplatform.io ACCEPTANCE TESTS Executable specifications written in a domain specific

    language that describe how a user will interact with the app.
  9. crossplatform.io ACCEPTANCE TESTS Written in the language of the business,

    yet still maintain a connection to your implemented system.
  10. crossplatform.io Feature: Sending out money transfers Scenario 1: I’m sending

    my friend money Given I have a positive balance When I make a deposit in my friend’s account Then my account is debited And my friend’s account is credited
  11. crossplatform.io CUCUMBER & GHERKIN Gherkin is not a language, but

    a set of grammar rules! Cucumber parses and executes the acceptance tests.
  12. crossplatform.io SPECFLOW Cucumber for .NET Converts tests written in plain

    English (or other language) and into a test fixture Tests follow GIVEN / WHEN / THEN structure
  13. crossplatform.io THE GOOD - find bugs that unit tests can't

    such as wiring bugs and environment bugs - tests are described in plain English - ensures the software, as a whole, is feature complete
  14. crossplatform.io THE BAD - you’ve moved another level up the

    testing pyramid - tests touch more code - tracking down a failure can be tricky
  15. crossplatform.io DO I NEED UI TESTS? Apps have changing requirements

    that reflect in the UI/UX Device fragmentation: do you support the specific UI of the app? It works on my device!
  16. crossplatform.io WHEN? Continuous delivery * Repeatable regression tests * Automation

    of UI tests * UI development can drive the application logic * Fixing bugs
  17. crossplatform.io What can the user see? Simulate UI interactions to

    provide some example of how your code is valuable to the user (have the rest of the tests at the class level)
  18. crossplatform.io UI TESTS vs UNIT TESTS More test coverage Don’t

    care about system internals They run on a simulator/emulator or on a physical device
  19. crossplatform.io CALABASH Enables automatic UI interactions within an application Examples:

    pressing buttons, entering text, swipe gestures, double tap, pinch to zoom, dismiss keyboard
  20. crossplatform.io XAMARIN.UITEST Write C# tests, execute them with NUnit Interact

    with objects on the screen independent of screen size, orientation and layout
  21. crossplatform.io XAMARIN.UITEST Build the AppBundle / APK before running the

    tests Add a new NUnit test project Install Xamarin.UITest from NuGet
  22. crossplatform.io XAMARIN.UITEST: Internals The IApp interface holds an instance of

    your app which you can interact with New it up before every test to prevent state from one test affecting the others
  23. crossplatform.io XAMARIN.UITEST: REPL Interact with a screen while the app

    is running Explore the app screens Creating the queries on the fly Prototype tests interactively
  24. crossplatform.io Querying the UI Locate view on screen by: id,

    content description, text, accessibility identifier & label
  25. crossplatform.io TEST RECORDER The Test Recorder is available as stand

    alone application (Mac) or a Visual Studio plugin that records Xamarin.UI tests for you.
  26. crossplatform.io TEST CLOUD Send the tests to run in the

    cloud or export a C# file to embed in local Xamarin UITest project.