TestResults.io
  • What is TestResults.io
  • System Architecture
  • Regulated Markets
    • Health Care Industry
    • Financial Services Industry
  • What's new?
    • Update Instruction
      • Update of the Designer extension in Visual Studio
      • Update the Execution Engine
      • Update the Base- and Environment Models
    • Migration to new project file
  • Designer
    • Overview
    • First Steps
    • Installation
    • TestResults.io solution
    • The development environment
      • Tool Window Overview
        • Test Environments
          • Steps to configure a SUT VM
          • How to access files on the system under test
        • Remote Viewer
          • Control Mode
          • Capture Mode
          • Screen Editor
          • Capture Single Image
        • Screen Explorer
        • Test Case Designer
        • Image Explorer
        • API Testing
        • TestResults.io options
          • Engines
          • Servers
    • Test Cases
      • Adding Test Cases
      • Test Case structure
      • Simple Test Case (Example)
      • Executing your Test Case
      • Generating Test Containers
      • Publishing Test Cases
      • Execution Variables
    • Software Models
      • Adding SW Models
      • Referencing the Model in the Test Case
      • Generating Test Containers
      • Publishing SW Models
      • Screens and Screen Elements
        • Tables
        • Visual Sense
        • Custom Screen Elements
    • Installers
      • Adding Installers
      • Generating Test Containers
      • Publishing Installers
    • Automation Framework Reference
      • Attributes
      • Enumerations
      • Filters
        • IImageFilter Interface
        • Select
        • Resize
      • GlobalEngineParameters
      • ImageDetectionParameters
      • ImageReference
      • Interfaces
        • ITester Interface
          • ITester Methods
          • ITester Properties
        • ITestee Interface
          • ITestee Methods
        • IConnections Interface
          • IConnections Methods
          • IConnections Properties
        • IDebug Interface
        • IEngineResult
        • IHelpers Interface
        • IImageHelper Interface
          • IImageHelper Methods
        • IKeyboard Interface
          • IKeyboard Methods
        • IMouse Interface
          • IMouse Methods
          • IMouse Properties
        • IReport Interface
          • IReport Methods
        • ISUTConnection Interface
      • OcrEngineParameters
        • Best practise
        • IronOcrEngineParameters
        • LEADOcrEngineParameters
        • OcrEngineRelatedCharacters
        • OcrPreprocessingParameters
      • ResultRectangle
      • SutNotReadyException
      • TestStepAbortedException
    • FAQ
      • Two-factor authentication (2FA) and One Time Passwords (OTP)
      • Receive and verify Emails
      • Using Excel as test data source
      • Verify PDF Content
  • Portal
    • Overview
    • First Steps
    • User's Guide
      • Login
      • Projects
      • Dashboard
      • Test Cases
      • Software & Environments
      • Test Sets
      • Job Queue
      • Management
      • Notifications Summary
    • Automation Engineer's Guide
      • Test Automation Workflow
      • Automating a test case
      • Enabling Software & Environments
    • REST API Reference
      • Authentication
      • Projects
      • Test Sets
      • Test Cases
      • Test Plans
      • Test Reports
      • Files
      • Software
      • Environments
      • Untitled
      • Executions
      • Favorites
      • Statistics
      • User Management
      • Customer Management
      • Notifications
      • Configurations
      • Invoicing
  • Models
    • Overview
    • Base Model
      • BaseScreen
        • BaseScreen Properties
        • BaseScreen Methods
      • OnScreenElement
        • OnScreenElement Methods
        • OnScreenElement Properties
      • Primitives
        • Button
          • Button Methods
          • Button Properties
        • Checkbox
          • Checkbox Methods
        • ContextMenu
          • ContextMenu Methods
          • ContextMenu Properties
        • Dropdown
          • Dropdown Methods
          • Dropdown Properties
        • DropdownMenu
          • DropdownMenu Methods
          • DropdownMenu Properties
        • GenericScroller
          • GenericScroller Methods
          • GenericScroller Properties
        • HorizontalScroller
        • IconButton
          • IconButton Properties
        • Label
        • LabelWithButton
          • LabelWithButton Properties
        • LabelWithCheckbox
          • LabelWithCheckbox Properties
        • LabelWithValue
          • LabelWithValue Methods
          • LabelWithValue Properties
        • PwTextBox
          • PwTextBox Methods
        • TextBox
          • TextBox Methods
          • TextBox Properties
        • Tables and lists
          • Column
            • Column Methods
            • Column Properties
          • ItemList
            • ItemList Methods
            • ItemList Properties
          • Row
            • Row Methods
            • Row Properties
          • TableBase
            • TableBase Methods
            • TableBase Properties
        • LabelWithElementBase
          • LabelWithElementBase Properties
      • Enumerations
      • Extensions
        • EngineResultExtensions Methods
        • EnumExtensions Methods
        • ReportExtensions Methods
        • StringExtensions Methods
        • TesterConnectionExtensions Methods
        • TesterDebugExtensions Methods
        • TesterHelperExtensions Methods
        • TesterMouseExtensions Methods
        • TesterOnScreenElementExtensions
        • TesterSelectExtensions Methods
      • Helper Classes
        • BaseModelHelpers
          • BaseModelHelpers Methods
          • BaseModelHelpers Properties
        • Attributes for Designer
        • ListHelpers
      • Exceptions
        • ElementNotFoundException
        • InteractionFailedException
        • ScreenNotFoundException
      • Interfaces
        • IAppBasics Interface
          • IAppBasics Methods
          • IAppBasics Properties
        • IBrowser
        • ICommandLineWindow
        • IScroller Interface
          • IScroller Methods
          • IScroller Properties
        • ISutLocale Interface
          • ISutLocale Methods
          • ISutLocale Properties
        • ISystemHelpers
        • ISystemInteractions
        • IWindow
    • Environment Model
      • Windows
        • Screens
          • CmdWindow
            • CmdWindow Methods
            • CmdWindow Properties
          • FileDialog
            • FileDialog Methods
            • FileDialog Properties
          • FileExplorer
            • FileExplorer Properties
          • RunWindow
            • RunWindow Methods
            • RunWindow Properties
          • Window
            • Window Methods
            • Window Properties
        • SutLocale
          • SutLocale Methods
          • SutLocale Properties
        • SystemHelpers
          • SystemHelpers Methods
          • SystemHelpers Properties
        • SystemInteractions
        • WebBrowser
          • Browser
            • Browser Methods
            • Browser Properties
          • BrowserScroller
            • BrowserScroller Methods
            • BrowserScroller Properties
          • AuthenticationDialog
            • AuthenticationDialog Methods
            • AuthenticationDialog Properties
          • DownloadDialog
            • DownloadDialog Methods
            • DownloadDialog Properties
        • EnvironmentModel Enumerations
        • Interfaces
          • IWebAppBasics
            • IWebAppBasics Property
Powered by GitBook
On this page

Was this helpful?

  1. Designer

Software Models

Overview

If you want to benefit from re-usability and easy maintenance of your test automation solution it is important to introduce the test model of your software. Instead of copy-pasting images and functions throughout you solution you will rather call a function of your test model.

The example below illustrates the problem and why it makes sense to introduce the software test model.

Test Case 1:

[TestStep(1,
            TestInput = "From the Home page go to the Contact Us page",
            ExpectedResults = "The Contact Us page is displayed")]
        public void Step1(ITester t)
        {
            //we are clicking on the Contact Us item in the Top Menu
            t.Testee.Mouse.Click(TestImages.TC001_Rev1.Images.TopMenu.ContactUs);

            //we are checking if the Contact Us page has been displayed
            if(t.Testee.FindImage(TestImages.TC001_Rev1.Images.Screens.ContactUs).HasSucceeded)
                t.Report.PassStep("The Contact Us page is displayed");
            else
                t.Report.FailStep("The Contact Us page is not displayed");
        } 

Test Case 2:

[TestStep(1,
            TestInput = "From the About Us page go to the Contact Us page",
            ExpectedResults = "The Contact Us page is displayed")]
        public void Step1(ITester t)
        {
            //we are clicking on the Contact Us item in the Top Menu
            t.Testee.Mouse.Click(TestImages.TC002_Rev1.Images.TopMenu.ContactUs);

            //we are checking if the Contact Us page has been displayed
            if(t.Testee.FindImage(TestImages.TC002_Rev1.Images.Screens.ContactUs).HasSucceeded)
                t.Report.PassStep("The Contact Us page is displayed");
            else
                t.Report.FailStep("The Contact Us page is not displayed");
        } 

Both test cases share the exact same functionality - navigating in the top menu and checking if the the Contact us page is displayed. In both cases not only do we duplicate the same code, but we also duplicate the same images. If you switch to a software model approach our test cases would look as follows:

Test Case 1:

[TestStep(1,
            TestInput = "From the Home page go to the Contact Us page",
            ExpectedResults = "The Contact Us page is displayed")]
        public void Step1(ITester t)
        {
            //we are clicking on the Contact Us item in the Top Menu
            App.TopMenu.ContactUs();

            //we are checking if the Contact Us page has been displayed
            if(App.Screen.ContactUs.IsDisplayed())
                t.Report.PassStep("The Contact Us page is displayed");
            else
                t.Report.FailStep("The Contact Us page is not displayed");
        } 

Test Case 2:

[TestStep(1,
            TestInput = "From the About Us page go to the Contact Us page",
            ExpectedResults = "The Contact Us page is displayed")]
        public void Step1(ITester t)
        {
            //we are clicking on the Contact Us item in the Top Menu
            App.TopMenu.ContactUs();

            //we are checking if the Contact Us page has been displayed
            if(App.Screen.ContactUs.IsDisplayed())
                t.Report.PassStep("The Contact Us page is displayed");
            else
                t.Report.FailStep("The Contact Us page is not displayed");
        } 

Now both test cases use the same model and therefore any change which would be done to the navigation and checking methods would need to be done only in the model and not the test case definition itself. In other words by introducing the model you are making sure that a change in the functionality of you software only needs to be updated in one place.

PreviousExecution VariablesNextAdding SW Models

Last updated 1 year ago

Was this helpful?