• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
AD208 - End to End Quality Processes for Top Notch XPages Apps
 

AD208 - End to End Quality Processes for Top Notch XPages Apps

on

  • 20,031 views

When it comes to getting XPages apps ready for production there's a lot to know. Do you have a web test automation suite in place to drive your apps through the browser and guarantee quality? Do you ...

When it comes to getting XPages apps ready for production there's a lot to know. Do you have a web test automation suite in place to drive your apps through the browser and guarantee quality? Do you have a JUnit test framework to exercise your XPages components? Is your application accessible to the latest international standards? This session, direct from the XPages engineering team, shows how to automate your app dev processes using the very latest tools and standards so that your products are ahead of the game.

Statistics

Views

Total Views
20,031
Views on SlideShare
1,614
Embed Views
18,417

Actions

Likes
0
Downloads
59
Comments
0

50 Embeds 18,417

http://www.openntf.org 15622
http://openntf.org 2573
http://intrapages.openntf.org 35
http://feedly.com 25
http://extlib.openntf.org 15
http://www.studynet1.herts.ac.uk 12
http://i.openntf.org 11
https://twitter.com 10
http://svrhbg3 7
http://bootstrap4xpages.openntf.org 6
http://ltr_srv9 6
http://ltr_srv 6
http://dominodefrag.openntf.org 6
http://cgu_srv9 6
http://contest.openntf.org 5
http://wildfire.openntf.org 4
http://localhost 4
http://bob.genis.si 4
http://unity-02.indy.flexion.ch 4
http://sbt.openntf.org 4
http://projectname.openntf.org 4
http://soapgate.openntf.org 4
http://webcache.googleusercontent.com 4
http://208.85.188.121 3
http://127.0.0.1 3
http://ww.openntf.org 2
http://filenavigator.openntf.org 2
http://planetlotus.org 2
http://xpages.info 2
http://ibmsbt.openntf.org 2
http://exlib.openntf.org 2
http://www.extlib.openntf.org 2
http://openntf.org. 2
http://dev-srv01.labo.ch 2
http://heracles.intec-pw.co.uk 1
http://172.29.6.146 1
http://unplugged.openntf.org 1
http://connectionscontest.openntf.org 1
http://reader.aol.com 1
http://sms426-laptop 1
http://demo.openntf.org 1
http://172.29.6.144 1
https://www.google.co.jp 1
http://oldblog.openntf.org 1
http://ibmst.openntf.org 1
http://essentials.openntf.org 1
http://portal.openntf.org 1
http://xblog.openntf.org 1
http://socialenabler.openntf.org 1
http://www.studynet2.herts.ac.uk 1
More...

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • As a simple example, imagine you have created your XPages app, fully featured, looking great and ready to be releaseds out into the world. Now turn off your monitor. Would your app still be usable now? (next slide) <br /> Consider that for many users with a visual disability they cannot see any of the visual aspects of your application. Instead they rely on screen readers to read out the content to them, and rely on only the keyboard for navigation, so no mouse interactions. To be accessible, your app must support screen readers and keyboard navigation. <br />

AD208 - End to End Quality Processes for Top Notch XPages Apps AD208 - End to End Quality Processes for Top Notch XPages Apps Presentation Transcript

  • AD208: End-to-End Quality Processes for Top Notch XPages Apps Martin Donnelly, IBM Ireland Brian Gleeson, IBM Ireland Padraic Edwards, IBM Ireland © 2014 IBM Corporation
  • Please Note IBM’s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBM’s sole discretion. Information regarding potential future products is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver any material, code or functionality. Information about potential future products may not be incorporated into any contract. The development, release, and timing of any future features or functionality described for our products remains at our sole discretion Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary depending upon many factors, including considerations such as the amount of multiprogramming in the user’s job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve results similar to those stated here. 2
  • Agenda  Speaker introductions & Goals  Main Topics – – –  Wrap Up – – –  3 Automated GUI Testing JUnit API Testing Accessibility Compliance XPages Quality App Checklist Conclusions Q&A 3
  • Speaker Introductions  Martin Donnelly - Software Architect : IBM Ireland – – – – – – – – 4 IBM Domino® XPages IBM Domino® Designer JavaServer™ Faces (JSF) Tooling IBM® Rational® Application Developer Java Visual Editor extensions for IBM® Rational® Application Developer Software Developer: Iris Associates / Lotus Development ● IBM Lotus® Domino® Designer V4.6 to V6.01 ● IBM Lotus® 1-2-3® for Unix® ● LotusScript, etc. Author ● Mastering XPages ● XPages Portable Command Guide
  • Speaker Introductions   5 Brian Gleeson – Software Engineer – IBM Ireland – Joined IBM in 2009 ● XPages Runtime Development ● XPages Test Automation – Contributions ● XPages Extension Library ● XPages Templates ● OpenNTF contributor Padraic Edwards – Software Engineer – IBM Ireland – Joined IBM in 2004 ● XPages Runtime Development – Contributions ● XPages Core Runtime ● XPages Extension Library ● OpenNTF contributor ● Social Business Toolkit SDK
  • Session Goals Introducing Frank Adams Frank Adams – XPages Project Manager 6 6
  • Session Goals   Examine technologies & best practices in the Testing & Tuning phases Highlight best practices in Development stage  Profiling & Tuning Testing 7 Application Development Lifecycle Development Deployment 7
  • Automated GUI Testing 8
  • Testing across multiple browsers, phones & tablets ■ Does your control/application render correctly on all browsers & platforms? ■ ■ Does the functionality match what you expect on all browsers & platforms? ■ ■ Do you have a mobile interface that works across devices? Source: http://gs.statcounter.com 9 9
  • Selenium Selenium is a browser automation framework ■ ■ Selenium IDE – record & playback, auto-generates code ■ Source: http://seleniumhq.org ■ Selenium supports tests written in Python, Ruby, Perl, PHP and Java. ■ − Latest version: Selenium v2.39 − WebDriver API ● ChromeDriver ● IEDriver ● FirefoxDriver ● AndroidDriver ● iPhoneDriver (+ iWebDriver app) ● ...and more ■ – – 10 Source: http://gs.statcounter.com 10
  • TestNG ■ ■ Testing framework based on JUnit ■ ■ Run test suite & report the results ■ ■ Provides results in HTML and XML format – Customisable format & layout − ■ Take screenshots upon failures ■ ■ TestNG Annotations, e.g: – – – @Test @BeforeClass @AfterMethod − ■ Plugin for Eclipse/IBM Domino Designer ® 11 11
  • Combine Selenium & TestNG 1. Install TestNG plugin 2. Add Selenium jars to project build path 3. Create a Selenium test Java class 4. Create a WebDriver instance 5. Create a Selenium test method 6. Add TestNG annotation (@Test) 12 12
  • Combine Selenium & TestNG (ctd.) 7. Find WebElements using findElement() & Selenium By class 8. Call methods on WebElements XPath By.xpath("//a[@id='view:_id1:link1']"); cssSelector By.cssSelector("a[id='view:_id1:link1']"); linkText By.linkText("click me"); others By.id(...), By.className(...), By.tagName(...) 9. Perform assertions on expected outcomes 10. Create TestNG test suite XML file 11. Reference the Java class 12. Include @Test methods 13. Run the TestNG suite 13 13
  • 14 14
  • Pitfalls and Best Practices ■ Don't use auto-generated ids – By.cssSelector("button[id='view:_id1:_id12:_id234_id56']"); ■ ■ ■ WebDriver cannot interact with browser dialogs – Selenium workarounds available. – Other options - AutoIT and java.awt.Robot ■ ■ Be careful with WebDriver & iframes – webDriver.switchTo().frame(String frameId); ■ Communication between Dev & Test ■ Developers can write automation! ■ ■ 15 Set ImplicitWait timeout value – webDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); User-Agent manipulation to emulate mobile device testing 15
  • Selenium Grid  Allows for distributed parallel test execution   Central hub controls a number of nodes   Hub activates tests across available nodes Source: http://seleniumhq.org   Nodes report results back to the hub   Parallel automated testing across browsers & platforms   Better & faster testing coverage 16 16
  • Jenkins  Java-based Open Source Continuous Integration Tool   Build software projects Source: http://jenkins-ci.org   Test software projects – Automate the automation!   Monitor executions of externally-run jobs   Provides web interface for configuration and monitoring   Extensible – write your own Jenkins plugins 17 17
  • JUnit API Testing 18
  • Building in Testability Build a unit test suite to verify that a new or existing library of controls is fit for purpose  ■ JUnit Overview ■ ■ XPages JUnit Test Framework Overview ■ ■ Creating an Example Test Suite ■ ■ Demo ■ ■ Pitfalls and Best Practices 19 19
  • JUnit Overview ■ JUnit is a unit testing framework for the Java programming language ■ ■ Unit Tests ensure Java code is working as intended – Create an Object – Invoke a method – Check the result ■ ■ Provides a mechanism to make assertions about the state of your objects – AssertTrue – fails if condition is false; passes otherwise – AssertEquals – fails if expected and actual objects are not equal – And others... ■ ■ JUnit plugin is part of IBM Domino Designer ® ■ ■ Build a suite of testcases to verify functionality doesn't change after code changes ■ ■ Fixing defects can be expensive – save time & money by catching them with JUnit tests ■ 20 20
  • XPages JUnit Framework ■ Provides predictable test cases that the XPages team have created to test the core and extension library Java controls ■ ■ Suite of test cases that can be applied to your library of controls – Verify xsp-config files can be parsed – Verify set methods correspond to property names – Verify controls can be serialized – And others... ■ ■ Utility to generate .java files from .xsp files ■ ■ Utilities for creating the JSF control tree and rendering HTML to the .xsp file ■ ■ Extendable for your own specific test needs ■ ■ Ideally requires some knowledge of the xsp-config file format – http://goo.gl/aX5x98 ■ 21  21
  • Testing a new Java control with XPages JUnit Framework ■ Create new test plugin that depends on JUnit and XPages JUnit Framework plugins as well as core runtime plugins ■ ■ Create a TestSuite class and specify test cases to run ■ ■ Begin with the BaseGeneratePagesTest generating the .java files from .xsp files ■ ■ Create a config.properties file in com.ibm.xsp.test.framework package – target.library – NamingConvention.package.prefix – extra.library.depends.designtime.nonapplication ■ ■ Create a xsp.properties in WEB-INF folder ■ ■ Create JUnit tests that extend the base tests ■ ■   22 Wiki Article - http://goo.gl/DIYsqZ 22
  • Example: Extended JUnit Tests  BaseLabelsLocalizedTest is for testing a predefined list of properties which should always be localizable when defined in a control, namely: – label – title – alt – and others.. –  Add new “mainTitle ” property that we want to be localized   Add new “title” property that we don't want to be localized in this test case   Extend BaseLabelsLocalizedTest as new ExampleLabelsLocalizableTest   Add new localizable property (“mainTitle”) to list of properties to be tested as localizable    23 Change xsp-config to omit “title” property as localizable 23
  • 24 24
  • Elements in my Java navigator in IBM Domino Designer Custom XPages Library com.example.xsp Extended JUnit test suite for your library com.example.junit.tests Custom selenium test-suite for your library SeleniumXPagesTestSuite XPages JUnit test Framework com.ibm.xsp.test.framework 25 25
  • Pitfalls & Best Practices  Start to run JUnit tests from the beginning of development cycle – even if you haven't written any yet! –  Don't edit the test framework project itself. – Create a subclass and update the behavior there      Always begin by generating .java files if testing .xsp files //test that generates .java files from .xsp files // at the start, as other tests depend on it to pass. // - BaseGeneratePagesTest suite.addTestSuite(BaseGeneratePagesTest.class);   Do not check in the contents of the gen/ folder to source control   If a test fails, read the test description and read the failure message – Debug into source code itself (if needs be)    26 Learn from existing ExtLib tests in .control package available on OpenNTF 26
  • XPages Accessibility 27
  • XPages Accessibility Why should we worry about accessibility?  Millions of people worldwide live & work with a disability   IBM requirement   Extend market reach   Requirement for Government services   Promotes good Design Practices   Promotes better usability – 29
  • Your shiny new app... 30
  • ...now turn off your monitor! 31
  • Colour blindness example 32 Lower images sourced from: www.colourblindawareness.org
  • XPages Accessibility A brief overview ■ XPages must be compliant to WCAG 2.0 level A and level AA, and US Section 508 standards ■ XPage Web Apps XPages in the Client (XPinC) Apps ■ IBM Web Accessibility Checklist IBM Software Accessibility Checklist ■ http://goo.gl/YLPqm0 http://goo.gl/xDCrQF ■ ■ XPages is the recommended accessible solution for IBM Domino Web Apps ■ There is no single solution but rather choose an accessible path ■ Make use of the tools, techniques and documentation available – 33 A good starting point - http://www.w3.org/WAI/
  • XPages Accessibility Supported Environments ■ 34 In v9.0.1, the accessible path supported by XPages is: – Microsoft Windows 7 – Mozilla Firefox 25 – JAWS 14 – English was chosen test language – Theme: “OneUI v2.1 Blue”
  • XPages Accessibility ■ WAI-ARIA standard – Accessible Rich Internet Applications – http://www.w3.org/WAI/intro/aria.php ■ ■ Supplements HTML content ■ ■ Increases accessibility of webpages ■ ■ Some XPages controls are accessible “out-of-the-box” ■ ■ 35 Accessibility specific properties in IBM Domino Designer ® – e.g. 'role', 'title', 'description' properties – 'attrs' property for adding additional aria attributes
  • XPages Accessibility 36
  • XPages Accessibility IBM Accessibility Verification Testing (AVT) ■ ■ ■ ■ ■ 37 AVT1 - Automated Test Tools – Firefox plugin: Rational Policy Tester (RPT) including Dynamic Assessment Tool AVT2 - Manual Tests – Keyboard Navigation – Focus & Sequence – Visual formatting ● Colour contrast ● High contrast ● Large font – Alternative content for audio/video – Error handling AVT3 - JAWS – Screen Reader tool
  • XPages Accessibility Guidelines & Best practices Accessibility should begin at the 'Design' phase ■ ■ – – – ■ ■ Design your apps with accessibility in mind Keep things simple & avoid over-complicating design Use Accessible Controls where possible – See Control Reference sections of the Help User Guide to help choose controls – In 9.0.1, new accessibility properties have been added to some controls ■ ■ Error Pages – 38 Provide customized accessible XPage error pages
  • XPages Accessibility Guidelines & Best practices (cont.)  Using Partial Update –   Using Events in your application –   Ensure that the updated area/control is further down the page Any mouse event must have a matching keyboard event Using Access Keys in your application – –   Set accesskeys in IBM Domino Designer ® Make the bindings unique and intuitive Login Pages – 39 Enable SSO on the Domino Server for accessible user authentication
  • Wrap Up 40
  • XPages Quality App Checklist  API + GUI Testing – Selenium and JUnit  XPages Toolbox – Profile your use cases – Provides detailed analysis per request on CPU, Memory, Time costs  Adhere to the 10 golden rules of XPages Performance – see Mastering XPages book for details  Preload commonly used apps where possible  Base your installation on IBM XPages 9.0.1 ! 41
  • Conclusions Frank Automated GUI Tests Fully Accessible JUnit API Test Suite XPages Checklist 42 42
  • Questions & Answers Contact Information: martin.donnelly@ie.ibm.com brian.gleeson@ie.ibm.com padraic.edwards@ie.ibm.com 43 43
  • Technical Education  IBM Press Books and eBooks – – Three major publications over the past two years All available for evaluation in the bookstore in the Solutions Expo        44 44
  • Technical Education  Coming very soon …  Mastering XPages 2nd Edition – – – – Based on Notes/Domino 9.0.1 4 new chapters ● Performance/Scalability ● Mobile ● Debugging ● Application Layout Comprehensive updates to all preexisting content Hardcover ● ~500 pages of new content ● ~1200 pages total 45 45
  • More Information – General      For all information on XPages head to XPages.info http://xpages.info/XPagesHome.nsf/Home.xsp The Notes Domino Application Development Wiki http://www-10.lotus.com/ldd/ddwiki.nsf Free XPages snippets from the community http://openntf.org/XSnippets.nsf/home.xsp And don't forget the XPages books from IBM Press http://www.ibmpressbooks.com/search/index.asp?query=xpages Learning Roadmaps – – New Developers Experienced Developers  46 46
  • More information – Automation, JUnit & Accessibility links        Selenium - http://code.google.com/p/selenium & http://seleniumhq.org/ TestNG - http://www.testng.org Jenkins - http://www.jenkins-ci.org/ XPath - http://www.w3.org/TR/xpath/ & http://www.w3schools.com/xpath/ CssSelector - http://www.w3.org/TR/CSS2/selector.html Firebug - https://www.getfirebug.com/ Chrome User-Agent Switcher on chrome webstore      Web Accessibility Initiative - http://www.w3.org/WAI/ IBM Accessibility Checklists - http://w3-03.ibm.com/able/devtest/web.html & http://w303.ibm.com/able/devtest/software.html JAWS - http://www.freedomscientific.com/products/fs/jaws-product-page.asp Colour blindness - http://www.colourblindness.org    47  Testing XPages with the JUnit Framework Wiki Article - goo.gl/e8zQp2 47
  • More Information – Summary       XPages.info – One Stop Shopping for XPages http://xpages.info XPages Forum – Got Questions, Need Answers? http://xpages.info/forum OpenNTF – Open Source Community http://www.openntf.org Domino Application Development Wiki http://www.lotus.com/ldd/ddwiki.nsf XPages Blog http://xpagesblog.com IBM Educational Offerings http://www.ibm.com/software/lotus/training/n8deducationofferings.html 48 48
  • Engage Online  SocialBiz User Group socialbizug.org – Join the epicenter of Notes and Collaboration user groups  Follow us on Twitter – @IBMConnect and @IBMSocialBiz  LinkedIn http://bit.ly/SBComm – Participate in the IBM Social Business group on LinkedIn:  Facebook https://www.facebook.com/IBMSocialBiz – Like IBM Social Business on Facebook  Social Business Insights blog ibm.com/blogs/socialbusiness – Read and engage with our bloggers 49
  • Merci Danke Buíochas Gracias Obrigado  Access Connect Online to complete your session surveys using any: – Web or mobile browser – Connect Online kiosk on site  Session ID: AD-208  Session Title: End-to-End Quality Processes for Top Notch XPages Apps 50 Grazie
  • Acknowledgements and Disclaimers Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for informational purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were made to verify the completeness and accuracy of the information contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results. © Copyright IBM Corporation 2014. All rights reserved.  U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.  IBM, the IBM logo, ibm.com, Domino and XPages are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information with a trademark symbol (® or ™), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml  Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. Microsoft and Windows are trademarks of Microsoft Corporation. Chrome is a trademark of Google Corporation. Firefox is a trademark of Mozilla Corporation. JAWS is a trademark of Freedom Scientific. 51
  • Top 10 Golden Rules 52
  • Top 10 Golden Rules of XPages Performance 1. Use Partial Refresh whenever possible 2. 3. 4. Use Get instead of Post requests 5. 6. 7. Use readonly property on container type controls 8. 9. 10. Apply Partial Execution Mode to limit server side execution of an XPage 11. 12. 13. Use the dataCache property on Domino views to save on memory 1) 53
  • Top 10 Golden Rules of XPages Performance(contd) 6. Use viewScope instead of sessionScope and applicationScope 7. Avoid using rendered property to show/hide controls - use loaded property! 8. Avoid costly Notes/Domino API calls like getDocument*() in repeats and/or controls 9. Favour Disk Persistence 10. Always Enable Resource Aggregation 1) 54
  • Tuning, Profiling & Debugging 55
  • Tuning, Profiling & Debugging  XPages Toolbox – Profiling Application – Runs on the Domino server or the Notes client – Provides detailed analysis per request on CPU, Memory, Time costs   IBM Domino Designer ® – Code Debuggers – ServerSide JavaScript Debugger – Java Debugger   Client/Server Logging – JVM Logging (can be controlled using the XPages Toolbox) –  56 Request Introspection, print, _dump Techniques – Introspection techniques can be utilized using lifecycle PhaseListeners – print, _dump Techniques can be incorporated into application code
  • XPages Toolbox  XPages Toolbox – Profiling Application – Runs on the Domino server or the Notes client – An NSF needs to be installed on the Domino server/Notes client – A profiler jar file should be added to the JVM launch options – JVM Security policy updates   Profiles and Measures – CPU performance, Memory allocation, Threads, Sessions, Backend Activity – Profiling API can also be added into ServerSide JavaScript and/or Custom Java   57 Available from OpenNTF.org – Free open source project – Search for “XPages Toolbox” (Most recent version is 1.2)
  • XPages Toolbox CPU Profiler Memory Profiler 58
  • XPages Toolbox 59
  • XPages Toolbox  Generate a heap dump of the JVM running in the HTTP task – A button in the XPages profiler generates the heap dump – A new command from the Domino console ● ●  tell http xsp heapdump (triggers com.ibm.jvm.Dump.HeapDump()) tell http xsp javadump (triggers com.ibm.jvm.Dump.JavaDump()) Analyze the heap dump using the Eclipse memory analyzer   – 60 http://www.eclipse.org/mat/
  • Automation Demo Backup Screenshots 61
  • Sample Xpage App 62 62
  • Sample Xpage App (cont.) 63 63
  • Selenium Test ■ ■ Connect2014Example.java – Example XPages Selenium Test 64 64
  • SeleniumXPagesTestSuite Project ■ Example Selenium Project open in the Java perspective   65 65
  • Selenium + TestNG Project ■ SeleniumXPagesTestSuite with added TestNG example suite  66 66
  • SeleniumXPagesTestSuite Project Build Path ■ Shows the build path configuration pointing to the Selenium Libraries ■   67 67
  • TestNG Test Output ■ Passed TestNG Output: ■ Failed TestNG Output: 68 68
  • JUnit Demo Backup Screenshots 69
  • XPages Example JUnit Suite  ExampleTestSuite to run the base set of tests from the XPages JUnit test framework  Base XPages JUnit Framework test Extended JUnit test 70 70
  • ExampleLabelsLocalizableTest.java  Extended JUnit Test to add mainTitle property as localizable  71 71
  • Example XPages JUnit Project Pieces 72 72
  • Config.properties  Properties file needed in your test plugin to configure XPages JUnit framework  73 73
  • Localizable and not-localizable tags for properties  Properties file needed in your test plugin to configure XPagesJUnit framework  74 74
  • Passing JUnit ExampleTestSuite 75 75