Professional Documents
Culture Documents
10 December 2014
Trademarks
Page 1 of 13
developerWorks
ibm.com/developerWorks/
To make sure IBM BPM projects work well, it is important to ensure the quality of the process
application and ensure that it meets the functional and nonfunctional requirements of the business.
Both test teams and development teams should consider the following goals when developing the
projects:
Produce reliable process-based solutions that achieve the business outcomes.
Provide confidence that the system is configured correctly and the application is developed
correctly for a production deployment.
Establish a baseline to test against the following types of future system changes:
IBM BPM product upgrades
Server modifications
Network changes
Application upgrades
Application server upgrades
Database upgrades
System load dynamics changes over time
Provide visibility into system scalability to allow for budget planning based on anticipated
growth in system load. For example, growth might be anticipated at an annual rate of 10%,
starting with 500 concurrent users.
Troubleshoot performance problems and provide solutions or recommendations where time
allows.
Page 2 of 13
ibm.com/developerWorks/
developerWorks
Functional testing
Functional testing is basic quality assurance that makes sure that software components work as
expected when integrated. Functional testing can be divided into the following test phases:
Unit testing
Integration testing
User acceptance testing
Instance migration testing
Globalization testing
Mobile or browser testing
Unit testing is the first quality guarantee during project development. Use the continuous
integration approach for unit testing to ensure the test coverage for each functional unit.
For individual IBM BPM services, business process definitions (BPDs) and facades, or interfaces,
use a test harness that includes the following 3 sets of data with predictable results:
The good path, also called the happy path
The bad path, also called the unhappy path
The ugly path, also called the system exception path
You cannot ensure that the IBM BPM project works properly under high stress testing, even after
you complete basic functional testing. Always test with some volume instances. Ideally, use a total
of 10,000 instances, and at least 200 in-flight instances in a known state. For performance testing
(as part of nonfunctional testing), you need a higher volume.
User interfaces are important because they impress end users more than other functional
components. Consider involving users in parts of the project that have human intervention,
especially for evaluating the usability of the user interface.
Page 3 of 13
developerWorks
ibm.com/developerWorks/
Performance testing
High availability testing and disaster recovery testing
Stability and stress testing and endurance testing
Security testing
Use test scenarios for testing that make sense and that you understand how to scale and
extrapolate correctly. For example, have realistic expectations about the complexity of the
application and the realistic response time to simulate real human interaction.
To understand the maximum capacity that the hardware will support, benchmark the IBM BPM
servers with a simple process before you start development and testing. During nonfunctional
testing of your custom process, run the benchmark to compare to the baseline.
To understand how performance of external systems affects the overall process and to account
for it in your process design, write separate testing for all each contact to external systems. For
example, take into account that external systems might not respond immediately when under a
heavy load.
During all tests, include threshold key performance indicators (KPIs) that are monitored. If a KPI is
exceeded, chase down that cause and don't let errors accumulate.
Test performance with a combined manual and automated approach. Use the manual approach for
human intervention, for example, measuring response time for a web page. Use automated testing
for other parts of the project.
Regression testing
New changes and functions are continuously added to IBM BPM projects, and the changes might
bring in new defects. Make sure to include a subset of functional and nonfunctional tests to run
whenever there is a change to the system, or whenever you deploy a new version of an IBM BPM
application.
Adopt a rolling upgrade approach to ensure that any changes to the system are first tested in the
test environment, before you apply them to the production environment and the Process Center.
For more information, see Good practice - Use rolling upgrade when you update IBM BPM on the
IBM Business Process Manager wiki.
Page 4 of 13
ibm.com/developerWorks/
developerWorks
The testing team adopts automation tools and quickly builds automation test packages. Make sure
to choose automation tools that the testing team is skilled in, which reduces the learning curve and
the effort to implement and maintain automation packages.
Human tasks are widely used in IBM BPM projects. Testing teams should choose one or more
automation tools to test web-based technology and mobile-based technology, if applicable.
Choose the static, reliable, well-documented test cases to automate. The automated test cases
should at least cover the main path, and then can be used for regression testing.
The automation results should be detailed so that problems are easy to locate.
testing. For example, you can use the Fiddler and Firebug tools to debug problems for coaches.
You also can use Firebug to capture HTTP requests that are used in automation test package
development. For some testing, like stress testing or high availability and disaster recovery testing,
you might need additional monitoring and analysis tools, such as IBM Whole-system Analysis
of Idle Time (WAIT) to capture, analyze, and measure various KPI data. Part 3 of this series
discusses monitoring and analysis tools is more detail.
Page 5 of 13
developerWorks
ibm.com/developerWorks/
Process Server, so make sure to use your test Process Server for integration testing, iterative
testing, and regression testing. Staging should be identical or very similar to production in capacity,
configuration, and security.
The goal of defining a test is to describe and implement the input to the test. The input can
be values that come from the keyboard or a graphical user interface (GUI), or are read from a
IBM Business Process Manager testing methodology, Part 1:
General testing guidelines
Page 6 of 13
ibm.com/developerWorks/
developerWorks
database or spreadsheet. The expected results can include the pre-conditions or the state of the
system and what needs to be true for the test case to run as expected.
Figure 2 represents the organization of project activities by phases and practices, or the work
stream. A traditional IBM BPM project includes more work streams, but the focus of this picture is
on the IBM BPM and testing work streams.
During the development iterations, the process developers and integration developers use unit test
capabilities to make sure that the features and user stories that they are developing work properly.
In parallel, the testers define the tests for the next iteration and are involved in any process
modeling discussions. Testers report at the daily scrum meetings where crucial information can
be exchanged. Testers are fully aware of the iteration backlog, the release backlog, and the test
strategy that is developed at the early phase of the project. Each iteration ends with a formal
demonstration that is presented by one of the business stakeholders, which is call the "playback."
Testers and all stakeholders attend. After the playback is completed, a snapshot is created, and
code is deployed to test servers so that previously defined tests can run in isolation.
This approach can continue for multiple iterations. When the entry criteria for system integration
tests and user acceptance tests are met, those test phases are performed. Figure 2 also illustrates
the fact that it is possible to start system integration testing before the end of development.
When integrating with external systems, developers should complete integration tests as early as
possible. Delayed IBM BPM projects are most often caused by integration issues.
Page 7 of 13
developerWorks
ibm.com/developerWorks/
In a traditional testing approach, the test and development teams work separately, which increases
the risk of project delays in the following ways:
Test cases are written by testers without review during development.
Testing is done at the end of projects.
Testing is misaligned with project changes.
For an agile approach, SMEs, developers, and testers are all involved in IBM BPM project
development. Each role has its own responsibility and interacts with others. Figure 3 shows the
responsibilities of each role.
The cost to fix a defect depends on the length of the feedback cycle. As shown in Figure 4, the
earlier a defect is found, the lower the cost to fix it. It's important for different roles to interact
closely to discover potential defects earlier in the process.
IBM Business Process Manager testing methodology, Part 1:
General testing guidelines
Page 8 of 13
ibm.com/developerWorks/
developerWorks
In the first interaction, the SME assigns a user story. Everyone reviews the story. Developers begin
to create artifacts, and testers create test cases, based on the user story.
In the second interaction, the SME refines the story details and refers to artifacts and test cases.
Developers and testers update the artifacts and test cases based on the SME's changes.
IBM Business Process Manager testing methodology, Part 1:
General testing guidelines
Page 9 of 13
developerWorks
ibm.com/developerWorks/
In the third interaction, the SME conducts an internal review of the story with a demo and test team
approval. Developers and testers finalize artifacts and test cases.
During the wrap-up period, the SME schedules deployment, manages change, and accepts the
story. Developers support testers to execute test cases.
Conclusion
This tutorial described the overall IBM BPM project test methodology. Read Part 2 of this series to
learn about detailed testing that should be included in IBM BPM project testing.
Acknowledgements
The authors would like to thank Dawn Akuhanna, David Booz, Todd R Deen, Matthew S
Luczkowiak, Pascal Wagner, Dan Eykholt, Weiming Gu, Chris Richardson, and Ekkehard Voesch
for their review and contributions to this tutorial.
Page 10 of 13
ibm.com/developerWorks/
developerWorks
Resources
Page 11 of 13
developerWorks
ibm.com/developerWorks/
Jerome Boyer
Jerome Boyer is an IBM expert on Enterprise Business Rule Management Systems
in IBM BPM, SOA and Complex Event Processing deployments. As a Senior
Technical Staff Member, Jerome is the lead IBM ODM and IBM BPM solution architect
in IBM Software Services for WebSphere (ISSW). Jerome is the author of "Agile
Business Rule Development", published by Springer in 2011.
Peng Guo
Peng Guo worked in WebSphere Adapters team for 3 years, and then moved to the
IBM BPM SVT team, focusing on lifecycle testing. He was responsible for automation
implementation of the SVT scenario for several releases. He is currently working on
IBM BPM end-to-end testing and customer scenario in-house testing.
Page 12 of 13
ibm.com/developerWorks/
developerWorks
Hong Li Liu
Hong Li Liu works in the IBM BPM QA & Automation team in IBM WebSphere. In
her current role as a software engineer, she tests the IBM Business Process Manager
product. She writes automation code to make her testing more efficient, and she has
solid Java, shell, and testing experience.
Copyright IBM Corporation 2014
(www.ibm.com/legal/copytrade.shtml)
Trademarks
(www.ibm.com/developerworks/ibm/trademarks/)
Page 13 of 13