tgt#13 - ui tests automation framework in evolve edm – case study - mateusz radkiewicz
TRANSCRIPT
Issued commercial in confidence © Kainos Evolve Limited 2016 – no reproduction without prior consent.
UI Tests Automation FrameworkIn Evolve EDMMateusz Radkiewicz12.2016
Electronic Medical Records• Electronic Documents Management• Evolve for IPad
Integrated Care Platform•Unified Healthcare Interface
Healthcare Applications• iOS and Web
Kainos Evolve
Electronic Medical Records
Test Automation in Evolve
Integrated Care Platform
Apps
Evolve Electronic Documents Management
Evolve EDM Testing ProcessSprint
1
System Tests
Cycle 1
Sprint 2
Sprint 3
Sprint ...
• In Sprint Manual Tests
• Daily Automated Sanity• Automated Sanity
• Manual Regression• New Features Manual
Tests• Performance Tests
System Tests
Cycle 2
System Tests
Cycle ...
Release
Jenkins
Tools and Tech Stack
•Build ServerTestRail• Test Case Management• Suites / Runs
Jira•Bugtracker• SCRUM/Kanban boards
C#, NUnit, GitHub, Visual Studio
1. Build and install Evolve2. Setup environment and data for tests3. Execute Pretests4. Execute Sanity tests, send results to TestRail5. Send summary e-mail to the team6. Execute Quarantined tests, send results to TestRail
Nightly Build Pipeline
Test Results Analysis – Summary E-mails
Test Results Analysis – TestRail
Test Results Analysis – JenkinsParsed Console Output, Test Results Analyzer
•Rerun failed test on Jenkins•Reproduce failure manually•Rerun failed test locally from IDE
Test Failures Debugging
UI Tests Framework Structure
Test
Delegate
Flow
Page
Component UI Framework
•Counterpart for manual test case•Clear, contains descriptive names and not store any test data•Chained methods represent related test steps from TestRail
Test Class
•Contains test data and test logic•Delegate to Test ratio is 1:1• Is calling several Page Objects and Flows•Contains assertions•On() method for pages syncronization
Delegate Class
•Representation of a web page/view•Methods are operating on web page elements•Can use components - complex elements reusable on several pages•No assertions• IsLoaded() method
Page Class
•Complex reusable web element e.g.•DashboardPanel• Table•DropDown• Checkbox
•Root property• IsLoaded() method
Component Class
•Common workflow which is used in many delegates• Interacts with many pages and flows
Flow Class
•Design patterns: Page Objects, Loadable Components• Self-contained tests, no tests dependencies• Each test starts at known application state• Test data cleanup, unique tests data generation• Possibility to rerun tests several times on the same DB•Rerun failed test within the same test run•Quarantine tests category•Constant maintenance (fixes and enhancements)
Tests Stability
„Upgraded” methods
Dynamic waits
WebElement reinitialization
Tests Stability – Selenium Wrappers (UiElement, UiDriver etc.)
• Flexible Jenkins builds (single, categories, environments, projects)• TestRail integration• Screenshots and HTML source capturing on failure•Automatic failure reruns•Automatic notification e-mails•Backend features (HL7, EDC, DB)• Environments details service•Multiple applications (Evolve, Admin, Meridio, Iguana, QMS)
Noteworthy Framework Features
Library used: https://testapi.codeplex.comSmart Visual Verification for specific cases (e.g. Atala viewer)
Smart Visual Verification for specific cases (e.g. Atala viewer)
Firefox:
Internet Explorer:
Seamless BrowserSwitching WithinOne Test
AutoIT for Handling OS Windows
DEMO
Issued commercial in confidence © Kainos Evolve Limited 2016 – no reproduction without prior consent.
Thank you
Mateusz Radkiewicz