When Optiscan's flagship Medical Device and
associated software was in its final stages of meeting regulatory requirements and
nearing full-scale production, they needed a thorough and repeatable testing philosophy,
in order to meet stringent regulatory requirements and tight project deadlines.
Their large and complex systems offered too much functionality to manually test
in a timely and accurate manner, so they turned to
TestComplete for help.
Choosing TestComplete
"I had used TestComplete at a previous company to automate the testing of a number
of very different software applications and to perform a variety of testing techniques
(functional, performance and production testing). I knew from this previous experience
that TestComplete was flexible enough for any test requirements I might meet at
Optiscan," said Darren Gage from Optiscan.
"Even though I had previous experience with TestComplete, it had been a while since
I explored what new tools were on the market and how other tools I had used before
had improved. I went through the process of downloading various tools and trying
them on Optiscan’s software applications to determine how they coped with recognizing
and controlling standard and custom controls. For me, the controls are a large part
of the battle when trying to automate application testing."
This is what Darren found when comparing other tools to TestComplete:
- "Other tools are expensive. Some tools ran into the tens of thousands of dollars.
Too prohibitive to get management approval, especially if the company has been burnt
before shelling out for automated testing tools, especially if they quickly became
'shelf-ware'."
- "Their interfaces seemed primarily focused on enabling GUI generation of tests.
This made them clunky to use if the test engineer wanted to create tests and associated
frameworks programmatically. TestComplete's IDE is well designed and similar to
other programming IDE’s. The ease in which tests and libraries can be shared among
many projects enables a re-usable test framework to be created, greatly reducing
future test development time."
- "Custom scripting languages. Having to learn a new scripting language, just adds
more complexity and development time to test automation. Being able to choose the
scripting language in TestComplete is great. Using standard scripting languages
(VB Script in my case) meant endless availability of resources on the Internet."
"Needless to say, I proposed the purchase of a TestComplete license. Management
approved and the rest is history."
Flexibility is Key
"I think the flexibility offered by TestComplete through plug-ins is perhaps its
biggest advantage over its competitors. If ever during the implementation of a test
I’d stumbled across an area of functionality that is particularly hard to automate,
I’ve found a plug-in that has made the process much simpler. Also, support from
newsgroups and AutomatedQA is priceless. Fast responses to questions means test
implementation is rarely blocked," said Darren.
"Another major plus is the ability to create your own data objects. Enabling data,
methods and properties to be encapsulated and easily passed throughout the test
code and shared among project suites makes test implementation quicker by promoting
code re-use and makes it easier to manage change."
Automating Functional Testing
"TestComplete was used to automate a full functional test of the Medical Imaging
Application. This included the validation of everything from data entry and persistence,
searching, process flow through the application, image capture and review," said
Darren.
"Being able to utilize the standard Windows ADO made verifying the persistence of
data, and very importantly for medical reasons, the sequencing of data recorded
during a medical procedure simple."
"Also image comparison functionality in TestComplete meant images captured during
Test procedures could be verified in review mode of the application. Obviously verifying
the capture, review and manipulation of images is very important to an imaging product."
"A spin-off product for a different market meant a change in displayed screen text
and controls between two applications, sharing the same code base."
"Risks associated with these implementations and inherent configuration management
issues were mitigated by implementation of a test, which uses the TestComplete Object
Browser tree. The Object Browser tree was traversed programmatically to compare
what controls and text were displayed against those expected to be displayed. This
meant from a testing perspective that we could ensure all controls and text that
should be displayed, are displayed, and conversely, any controls and text that should
not be displayed are not."
Testing Embedded and Host Software
Darren explained how they use TestComplete for functional testing of host and embedded
software and how it makes this type of testing affordable. "TestComplete was used
to implement a full functional test of both host and embedded software functionality.
It was not only used to drive and verify functionality, when testing the host software,
it was used to simulate the embedded software (and vice versa). This was made easy
by TestComplete’s ability to add the MSComm32 ActiveX control and gain access to
the OnComm event. TestComplete’s event handler utilized the OnComm
event, triggering every time data arrived on the Communications port (the communication
interface between the embedded and host software). This enabled an implementation
that acted on these communications, sending either valid or invalid responses to
the calling software depending on the aim of the test."
"Being able to use TestComplete to control communications between the host and embedded
software this way, meant that more rigorous testing could be performed on interfaces
and the software in general. Triggering error conditions was easy, without the need
to break expensive electronics in order to produce any perceived hardware errors,
making the testing of error handling a simple, cost effective and repeatable process."
"Also isolating the embedded and host software like this greatly simplified testing
by allowing test focus to be on either the host or the embedded software without
one interfering with the other's test results."
TestComplete Simplifies Manual Testing
"Testing of the embedded software was a complex and time consuming prospect. It
required a lot of intervention to perform the various tests, including using many
hardware related measurement tools to verify the software’s operation. For this
reason it wasn’t appropriate to automate in the typical manner. A manual test was
implemented using the TestComplete Manual Project item," said Darren.
"Being able to include a step-by-step tool to guide the tester on a complex and
error prone verification procedure was a great way to simplify the process."
Simplifying Processes
"TestComplete is currently being used to automate the functional testing of new
applications. Name Mapping has been used to simplify the definition and use of .Net
controls and objects. This is already simplifying the process of updating references
to controls via the TestComplete GUI and by allowing multiple test scripts to share
the same NameMapping object. This is making the endless changes to
software design during the development phase a manageable process," said Darren.
"Having full access to all methods, properties and fields of the .Net applications
under test is proving a very powerful tool, making script implementation just that
much easier."
"TestComplete Project Suites are enabling us to closely mirror the application's
implementation within the test environment. The ability to have test projects for
each major component in one test suite makes test implementation easier and simplifies
the understanding of the test project's implementation by logically matching the
application under test."
Conclusion
TestComplete has allowed Optiscan to tackle a variety of automated testing challenges
while performing functional and manual testing at a low cost and with the flexibility
to get their job done efficiently.