|
|
|
OVERVIEW
|


|
|
Repro dynamically
instruments applications so you don't have
to write out long and tedious bug descriptions
after you've found a bug.
In addition to testing, Repro is good for
getting bug or trouble-tickets from users and
reverse-engineering 3rd party applications and
protocol implementations.
Repro is not an automated test suite; it is not a "script and playback" type application; it does not represent a "paradigm shift" in the way that you develop software; it does not require that you purchase and maintain additional servers or hardware; it barely even requires you to learn anything new.
Software is supposed to make people's lives better. Repro definitely qualifies as improving lives. More importantly, it improves the lives of people who in turn are working to improve lives. It's a meta-life improver.
Download >>
How it works >>
|
|
Testing
Tool Landscape
| Type
of Tool
|
Description
|
Tools
|
| Test
Management Tools |
Assist in planning, designing, implementing, executing, evaluating, and
managing the test activities or artifacts |
Rational TestManager
Mercury TestDirector
Compuware QADirector
TechExcel DevTest |
|
Static Measurement Tools |
Analyze information contained in the design models,
source code, or other fixed sources.
|
Gimpel PCLint
Parasoft CodeWizard
Compuware SecurityChecker |
| Script
and Playback Tools |
Test data is acquired during the recording of events.
Later, during test execution, the data is used to playback the test script. |
Mercury WinRunner
Mercury QuickTest
Rational Robot
Seapine QAWizard
Compuware TestPartner |
| Dynamic
Measurement Tools |
Perform an analysis during the execution of the code.
The measurements include the run-time operation of the code such as memory,
error detection, and performance. |
QA
Testing
Repro
Developer Testing
Compuware BoundsChecker
Sysinternals tools
|
|
Defect Tracking Tools |
Provides activity-based change and defect tracking for many types of change
requests, including defects and enhancements. |
Bugzilla
Seapine TestTrack Pro
Rational ClearQuest
Elisnore Visual Intercept
Mercury TestDirector |
|
|
Repro Architecture
|
|
What does Repro Dynamically Instrument?
| DESKTOP
VIDEO |
| The primary data acquisition component for tracing
user actions is desktop video. Similar to web
conferencing software, the desktop video data acquisition component detects graphical changes on the desktop
and copies them to the cyclic buffer. Of all the
capture components, desktop video capture can
have the most impact on host machine processing
and memory usage. You can configure the frame
rate for the video capture along with other parameters
in the Preferences in order to obtain the right
capture/performance balance for your testing environment.
|
| SYSTEM
OPERATIONS |
| By capturing system operations, Repro can trace the main flows of program execution,
much like a stack trace in a developer's debugger. This
trace is based on dynamic binary hooking technology
that enables Repro to intercept your application's win32
API calls without modifying the application
source code. System operations are instrumented at extremely low overhead to the test environment.
Profiling calculations indicate a 0.5-0.75% CPU
overhead depending on the system call.
There are 7 different system
operation categories instrumented and captured in Repro Pro:
- Disk -vfile create, delete,
open, read, and write operations.
- Internet - connect, listen,
accept, send, and receive operations.
- Exceptions - exceptions.
- GUI - mouse clicks.
- ODBC - connect, execute, prepare,
bind, row count, fetch, and fetch scroll operations.
- Registry - create, open, delete,
set value, query value, delete value, and close
key operations.
- Custom Messages - in C++ programs,
calls to OutputDebugString() are recorded. You
can sprinkle your own custom messages that you
want to see in the Repro.
The dynamic instrumentation technology
has been designed such that Repro can be started or
shut down at any time during test
application execution. You can launch Repro and start monitoring
the system operations of an application that has
been running for days. In addition, each system
operation instrumentation can be turned on or off at
any time during the execution of the instrumented
application.
|
| PERFORMANCE
COUNTERS |
| The performance counters are used to pinpoint performance related problems. Repro can
capture performance data for hundreds of system resources, including:
- Process CPU utilization
- Process memory utilization
- Disk activity
- Network activity
- Handle Count
- Hundreds more
Because there are so many resources
whose performance might be of interest to your test, you
must specify in the Preferences which resources
to capture. The Performance Counter information
is displayed graphically in Repro, and you can export the
data that makes up the graphs directly to Microsoft
Excel for further processing or integration with
other applications.
|
| SYSTEM
INFORMATION |
| Repro captures system information
(including hardware information, software information,
and a list of all running processes) at the precise
time a bug occurs. The information is
presented in a sorted hierarchy, along with a
search feature. You can dump this data to an XML
file for integration with other applications.
|
|
|
What Applications does Repro Work With?
Repro dynamically instruments and captures all Windows applications, regardless of platform technology or component model.
Technologies Repro has been tested with include:
- .NET programs
- Java programs
- VB programs
- C++ programs
- Web based programs (just record your browser)
Instrumenting system operations does have one constraint: only applications that have a "window" are supported in Repro. Services, console applications, and other forms of Win32 applications without a window will not have their system operations instrumented.
Supported Platforms
- Windows 2000
- Windows XP
- Windows 2003
Technology
Repro is designed to meet the following high-level
requirements:
- Digitally instrument the native operating environment;
- Fit naturally into existing
software development and support processes;
- Require no changes to the
applications being tested or the test environment;
- Minimize the size of the file
in which the captured information is stored;
- Support the widest possible
array of language and component technologies;
- Provide a flat learning curve such that Repro can
be installed and used effectively immediately following
installation;
At the centre of the data acquisition process is a cyclic
data buffer. Each component feeds information back
to Repro which stores it in this buffer. The
buffer has a first-in first-out structure, and
the number of minutes in the buffer is configurable
in the Preferences. Note that this design does not necessarily
mean the buffer has a constant size. The size
of the buffer will vary depending on the quantity
of captured information stored in it. However, if the
quantity of information captured per unit time is more
or less constant, then the buffer will tend to stay
at a constant size.
When an event occurs that you would like to view as a 'Repro',
Repro will stop captureing and display the content
of the capture buffer. The information captured from each capture
component is displayed in its own window, allowing for a synchronized
and integrated presentation of a large volume of information.
This view is entirely customizable, so if your tests are focused
on certain types of capture more than others, you can customize
the view accordingly. The following image displays a 'Repro'
in playback:
When viewing the captured information with Repro
you can pan forwards and backwards through the video, while
drilling down on performance, configuration, and system operation
information. At this stage you can trim the length of the
'Repro' to pinpoint the part that best communicates the problem.
Comments can be added to further annotate the bug.
When you are satisfied with the 'Repro', you save it
in as a 'Repro' file. Repro uses highly optimized
codecs to minimize the size of the resultant 'Repro'
file. This file contains all the information required
to demonstrate a complete and correct "reproduction"
of the bug.
The 'Repro' can be emailed to a team member, stored in
a bug database, or collected in a shared directory.
Repro Analyzer is used to view the 'Repro'. You will immediately
recognize the view onto the information provided by Repro Analyzer - it is the same as that provided by Repro when trimming the buffer.
In Repro Analyzer you can further trim and annotate the
'Repro', and the new information is added to the same 'Repro'
file.
Future
Here are some of the things that will be added to future releases of Repro:
- Hook console and Win32 service processes for tracing
system operations
- Expand exception tracing to include additional data about the exception
and include other types of exceptions (e.g. .NET exceptions)
- Catch unhandled exceptions and display stack trace in
system operations
- Expand the database hooking to include the full set
of Microsoft supported database access technologies
- Cache the record buffer to disk to support recording
of long running processes
- Jump directly from a system operation to the corresponding
line of code in MsDev
- Play a Repro backwards
- Add comments, pop-ups and
scribbles on the Repro along the timeline
|
|
|
|
|
|