SlideShare ist ein Scribd-Unternehmen logo
1 von 75
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

Weitere ähnliche Inhalte

Was ist angesagt?

When develpment met test(shift left testing)
When develpment met test(shift left testing)When develpment met test(shift left testing)
When develpment met test(shift left testing)SangIn Choung
 
Coldbox developer training – session 4
Coldbox developer training – session 4Coldbox developer training – session 4
Coldbox developer training – session 4Billie Berzinskas
 
Visual Studio 2010 Testing Overview
Visual Studio 2010 Testing OverviewVisual Studio 2010 Testing Overview
Visual Studio 2010 Testing OverviewSteve Lange
 
Codeception Testing Framework -- English #phpkansai
Codeception Testing Framework -- English #phpkansaiCodeception Testing Framework -- English #phpkansai
Codeception Testing Framework -- English #phpkansaiFlorent Batard
 
Design For Testability
Design For TestabilityDesign For Testability
Design For TestabilityWill Iverson
 
Jbehave- Basics to Advance
Jbehave- Basics to AdvanceJbehave- Basics to Advance
Jbehave- Basics to AdvanceRavinder Singh
 
Testing using load runner performance testing
Testing using load runner  performance testingTesting using load runner  performance testing
Testing using load runner performance testingSivaprasanthRentala1975
 
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...Cωνσtantίnoς Giannoulis
 
Technical meeting automated testing with vs2010
Technical meeting automated testing with vs2010Technical meeting automated testing with vs2010
Technical meeting automated testing with vs2010Clemens Reijnen
 
TDD in functional testing with WebDriver
TDD in functional testing with WebDriverTDD in functional testing with WebDriver
TDD in functional testing with WebDriverMikalai Alimenkou
 
Continuous Integration using Hudson and Fitnesse at Ingenuity Systems (Silico...
Continuous Integration using Hudson and Fitnesse at Ingenuity Systems (Silico...Continuous Integration using Hudson and Fitnesse at Ingenuity Systems (Silico...
Continuous Integration using Hudson and Fitnesse at Ingenuity Systems (Silico...Jen Wong
 
Software Design for Testability
Software Design for TestabilitySoftware Design for Testability
Software Design for Testabilityamr0mt
 
Full Testing Experience - Visual Studio and TFS 2010
 Full Testing Experience - Visual Studio and TFS 2010 Full Testing Experience - Visual Studio and TFS 2010
Full Testing Experience - Visual Studio and TFS 2010Ed Blankenship
 
Постоянное тестирование интеграции
Постоянное тестирование интеграцииПостоянное тестирование интеграции
Постоянное тестирование интеграцииSQALab
 
Test-Driven Development with DbFit and Oracle database, BGOUG Conference, 201...
Test-Driven Development with DbFit and Oracle database, BGOUG Conference, 201...Test-Driven Development with DbFit and Oracle database, BGOUG Conference, 201...
Test-Driven Development with DbFit and Oracle database, BGOUG Conference, 201...Yavor Nikolov
 
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...Anna Russo
 
Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven developmenttoteb5
 
Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)Babul Mirdha
 

Was ist angesagt? (20)

When develpment met test(shift left testing)
When develpment met test(shift left testing)When develpment met test(shift left testing)
When develpment met test(shift left testing)
 
Coldbox developer training – session 4
Coldbox developer training – session 4Coldbox developer training – session 4
Coldbox developer training – session 4
 
Visual Studio 2010 Testing Overview
Visual Studio 2010 Testing OverviewVisual Studio 2010 Testing Overview
Visual Studio 2010 Testing Overview
 
Codeception Testing Framework -- English #phpkansai
Codeception Testing Framework -- English #phpkansaiCodeception Testing Framework -- English #phpkansai
Codeception Testing Framework -- English #phpkansai
 
Design For Testability
Design For TestabilityDesign For Testability
Design For Testability
 
The Fitnesse Fix
The Fitnesse FixThe Fitnesse Fix
The Fitnesse Fix
 
Jbehave- Basics to Advance
Jbehave- Basics to AdvanceJbehave- Basics to Advance
Jbehave- Basics to Advance
 
Testing using load runner performance testing
Testing using load runner  performance testingTesting using load runner  performance testing
Testing using load runner performance testing
 
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
 
Technical meeting automated testing with vs2010
Technical meeting automated testing with vs2010Technical meeting automated testing with vs2010
Technical meeting automated testing with vs2010
 
Coding Naked
Coding NakedCoding Naked
Coding Naked
 
TDD in functional testing with WebDriver
TDD in functional testing with WebDriverTDD in functional testing with WebDriver
TDD in functional testing with WebDriver
 
Continuous Integration using Hudson and Fitnesse at Ingenuity Systems (Silico...
Continuous Integration using Hudson and Fitnesse at Ingenuity Systems (Silico...Continuous Integration using Hudson and Fitnesse at Ingenuity Systems (Silico...
Continuous Integration using Hudson and Fitnesse at Ingenuity Systems (Silico...
 
Software Design for Testability
Software Design for TestabilitySoftware Design for Testability
Software Design for Testability
 
Full Testing Experience - Visual Studio and TFS 2010
 Full Testing Experience - Visual Studio and TFS 2010 Full Testing Experience - Visual Studio and TFS 2010
Full Testing Experience - Visual Studio and TFS 2010
 
Постоянное тестирование интеграции
Постоянное тестирование интеграцииПостоянное тестирование интеграции
Постоянное тестирование интеграции
 
Test-Driven Development with DbFit and Oracle database, BGOUG Conference, 201...
Test-Driven Development with DbFit and Oracle database, BGOUG Conference, 201...Test-Driven Development with DbFit and Oracle database, BGOUG Conference, 201...
Test-Driven Development with DbFit and Oracle database, BGOUG Conference, 201...
 
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
 
Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven development
 
Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)
 

Ähnlich wie AD208 - End to End Quality Processes for Top Notch XPages Apps

Tips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS ApplicationsTips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS ApplicationsStrongback Consulting
 
Advanced Coded UI Testing
Advanced Coded UI TestingAdvanced Coded UI Testing
Advanced Coded UI TestingShai Raiten
 
Strategy-driven Test Generation with Open Source Frameworks
Strategy-driven Test Generation with Open Source FrameworksStrategy-driven Test Generation with Open Source Frameworks
Strategy-driven Test Generation with Open Source FrameworksDimitry Polivaev
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by ExampleNalin Goonawardana
 
Test Driven Development with Sql Server
Test Driven Development with Sql ServerTest Driven Development with Sql Server
Test Driven Development with Sql ServerDavid P. Moore
 
Useful practices of creation automatic tests by using cucumber jvm
Useful practices of creation automatic tests by using cucumber jvmUseful practices of creation automatic tests by using cucumber jvm
Useful practices of creation automatic tests by using cucumber jvmAnton Shapin
 
Tools for Software Testing
Tools for Software TestingTools for Software Testing
Tools for Software TestingMohammed Moishin
 
QUALITY ASSURANCE and VALIDATION ENGINEER
QUALITY ASSURANCE and VALIDATION ENGINEER QUALITY ASSURANCE and VALIDATION ENGINEER
QUALITY ASSURANCE and VALIDATION ENGINEER Piyush Prakash
 
Automated Software Testing Framework Training by Quontra Solutions
Automated Software Testing Framework Training by Quontra SolutionsAutomated Software Testing Framework Training by Quontra Solutions
Automated Software Testing Framework Training by Quontra SolutionsQuontra Solutions
 
Advanced Application Lifecycle Managment
Advanced Application Lifecycle ManagmentAdvanced Application Lifecycle Managment
Advanced Application Lifecycle ManagmentSalesforce Developers
 
Microsoft Fakes, Unit Testing the (almost) Untestable Code
Microsoft Fakes, Unit Testing the (almost) Untestable CodeMicrosoft Fakes, Unit Testing the (almost) Untestable Code
Microsoft Fakes, Unit Testing the (almost) Untestable CodeAleksandar Bozinovski
 
Into The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsInto The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsOrtus Solutions, Corp
 
Lecture #6. automation testing (andrey oleynik)
Lecture #6. automation testing (andrey oleynik)Lecture #6. automation testing (andrey oleynik)
Lecture #6. automation testing (andrey oleynik)Andrey Oleynik
 
Effective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperEffective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperMike Melusky
 
Testing Rest with Spring by Kostiantyn Baranov (Senior Software Engineer, Gl...
Testing Rest with Spring  by Kostiantyn Baranov (Senior Software Engineer, Gl...Testing Rest with Spring  by Kostiantyn Baranov (Senior Software Engineer, Gl...
Testing Rest with Spring by Kostiantyn Baranov (Senior Software Engineer, Gl...GlobalLogic Ukraine
 
Automated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choiceAutomated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choicetoddbr
 
End-end tests as first class citizens - SeleniumConf 2020
End-end tests as first class citizens - SeleniumConf 2020End-end tests as first class citizens - SeleniumConf 2020
End-end tests as first class citizens - SeleniumConf 2020Abhijeet Vaikar
 
Effective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperEffective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperMike Melusky
 

Ähnlich wie AD208 - End to End Quality Processes for Top Notch XPages Apps (20)

Tips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS ApplicationsTips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS Applications
 
Advanced Coded UI Testing
Advanced Coded UI TestingAdvanced Coded UI Testing
Advanced Coded UI Testing
 
Strategy-driven Test Generation with Open Source Frameworks
Strategy-driven Test Generation with Open Source FrameworksStrategy-driven Test Generation with Open Source Frameworks
Strategy-driven Test Generation with Open Source Frameworks
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by Example
 
Test Driven Development with Sql Server
Test Driven Development with Sql ServerTest Driven Development with Sql Server
Test Driven Development with Sql Server
 
Resume
ResumeResume
Resume
 
Useful practices of creation automatic tests by using cucumber jvm
Useful practices of creation automatic tests by using cucumber jvmUseful practices of creation automatic tests by using cucumber jvm
Useful practices of creation automatic tests by using cucumber jvm
 
Tools for Software Testing
Tools for Software TestingTools for Software Testing
Tools for Software Testing
 
QUALITY ASSURANCE and VALIDATION ENGINEER
QUALITY ASSURANCE and VALIDATION ENGINEER QUALITY ASSURANCE and VALIDATION ENGINEER
QUALITY ASSURANCE and VALIDATION ENGINEER
 
Automated Software Testing Framework Training by Quontra Solutions
Automated Software Testing Framework Training by Quontra SolutionsAutomated Software Testing Framework Training by Quontra Solutions
Automated Software Testing Framework Training by Quontra Solutions
 
Advanced Application Lifecycle Managment
Advanced Application Lifecycle ManagmentAdvanced Application Lifecycle Managment
Advanced Application Lifecycle Managment
 
Microsoft Fakes, Unit Testing the (almost) Untestable Code
Microsoft Fakes, Unit Testing the (almost) Untestable CodeMicrosoft Fakes, Unit Testing the (almost) Untestable Code
Microsoft Fakes, Unit Testing the (almost) Untestable Code
 
Unit Tests with Microsoft Fakes
Unit Tests with Microsoft FakesUnit Tests with Microsoft Fakes
Unit Tests with Microsoft Fakes
 
Into The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsInto The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applications
 
Lecture #6. automation testing (andrey oleynik)
Lecture #6. automation testing (andrey oleynik)Lecture #6. automation testing (andrey oleynik)
Lecture #6. automation testing (andrey oleynik)
 
Effective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperEffective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and Dapper
 
Testing Rest with Spring by Kostiantyn Baranov (Senior Software Engineer, Gl...
Testing Rest with Spring  by Kostiantyn Baranov (Senior Software Engineer, Gl...Testing Rest with Spring  by Kostiantyn Baranov (Senior Software Engineer, Gl...
Testing Rest with Spring by Kostiantyn Baranov (Senior Software Engineer, Gl...
 
Automated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choiceAutomated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choice
 
End-end tests as first class citizens - SeleniumConf 2020
End-end tests as first class citizens - SeleniumConf 2020End-end tests as first class citizens - SeleniumConf 2020
End-end tests as first class citizens - SeleniumConf 2020
 
Effective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperEffective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and Dapper
 

Kürzlich hochgeladen

Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Kürzlich hochgeladen (20)

Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

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

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. Session Goals Introducing Frank Adams Frank Adams – XPages Project Manager 6 6
  • 7. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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 14
  • 15. 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
  • 16. 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
  • 17. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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 24
  • 25. 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
  • 26. 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
  • 28.
  • 29. 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
  • 30. Your shiny new app... 30
  • 31. ...now turn off your monitor! 31
  • 32. Colour blindness example 32 Lower images sourced from: www.colourblindawareness.org
  • 33. 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/
  • 34. 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”
  • 35. 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
  • 37. 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
  • 38. 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
  • 39. 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
  • 41. 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
  • 43. Questions & Answers Contact Information: martin.donnelly@ie.ibm.com brian.gleeson@ie.ibm.com padraic.edwards@ie.ibm.com 43 43
  • 44. 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
  • 45. 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
  • 46. 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
  • 47. 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
  • 48. 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
  • 49. 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
  • 50. 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
  • 51. 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
  • 52. Top 10 Golden Rules 52
  • 53. 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
  • 54. 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
  • 55. Tuning, Profiling & Debugging 55
  • 56. 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
  • 57. 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)
  • 60. 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/
  • 63. Sample Xpage App (cont.) 63 63
  • 64. Selenium Test ■ ■ Connect2014Example.java – Example XPages Selenium Test 64 64
  • 65. SeleniumXPagesTestSuite Project ■ Example Selenium Project open in the Java perspective   65 65
  • 66. Selenium + TestNG Project ■ SeleniumXPagesTestSuite with added TestNG example suite  66 66
  • 67. SeleniumXPagesTestSuite Project Build Path ■ Shows the build path configuration pointing to the Selenium Libraries ■   67 67
  • 68. TestNG Test Output ■ Passed TestNG Output: ■ Failed TestNG Output: 68 68
  • 70. 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
  • 71. ExampleLabelsLocalizableTest.java  Extended JUnit Test to add mainTitle property as localizable  71 71
  • 72. Example XPages JUnit Project Pieces 72 72
  • 73. Config.properties  Properties file needed in your test plugin to configure XPages JUnit framework  73 73
  • 74. Localizable and not-localizable tags for properties  Properties file needed in your test plugin to configure XPagesJUnit framework  74 74

Hinweis der Redaktion

  1. 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) 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.