Save 37% off PRO during our Black Friday Sale! »

Mobile testing like you mean it

Mobile testing like you mean it


Alexandra Marin

November 26, 2016



  2. Who I am Mobile C# engineer Certified Xamarin developer

    Remote worker Software consultant
  3. At first… // TO DO // Needs testing

  4. 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); }
  5. And now? 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
  6. BEHAVIOR DRIVEN DEV Outside-in Development philosophy in which the

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

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

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

    testing process. Concrete, executable, easy-to-repeat behavior embodied in automated tests.
  10. HOW TO Involve your users! Everybody contributes in defining

    specs! Focus on behavior and specifications!
  11. ACCEPTANCE TESTS Executable specifications written in a domain specific

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

    yet still maintain a connection to your implemented system.
  13. 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
  14. CUCUMBER & GHERKIN Gherkin is not a language, but

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

    English (or other language) and into a test fixture Tests follow GIVEN / WHEN / THEN structure
  16. 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
  17. THE BAD - you’ve moved another level up the

    testing pyramid - tests touch more code - tracking down a failure can be tricky
  18. 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!
  19. WHEN? Continuous delivery * Repeatable regression tests * Automation

    of UI tests * UI development can drive the application logic * Fixing bugs
  20. UI TESTS Test application flows - they’re examples of

    how you’re actually going to use the app.
  21. 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)
  22. 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
  23. CALABASH Enables automatic UI interactions within an application Examples:

    pressing buttons, entering text, swipe gestures, double tap, pinch to zoom, dismiss keyboard
  24. XAMARIN.UITEST Automated UI Acceptance Testing framework Validates functionality of

    iOS and Android Apps
  25. XAMARIN.UITEST Write C# tests, execute them with NUnit Interact

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

    tests Add a new NUnit test project Install Xamarin.UITest from NuGet
  27. 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
  28. 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
  29. Querying the UI Locate view on screen by: id,

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

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

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

  33. Thanks!