|
What is GenITC?
GenITC is a sort-of acronym for Generic Interface Test Computer. It’s
a PC-based test tool that plugs into the network interfaces of the
system you’re trying to test, and interacts with the message
traffic. The interaction can be as simple as doing nothing but logging
the traffic, or GenITC can modify it on the fly, kill messages, duplicate
them, or create new messages and inject them into the stream. Because
of that last capability, it can even simulate one of the systems in
the network.
How does GenITC “plug into” a
network interface?
If you’re running on an Ethernet network, you just run a cable
from the hub/router/switch to the GenITC’s network card, configure
the connection, and voila! GenITC is on the network.
How many systems can a GenITC talk to?
Up to two. The idea is that
it sits in between two
subsystems that are undoing test and interacts with the message traffic going
between them. Now you can also omit one of the systems, and have GenITC totally
simulate the behavior of the missing one. You can even drop the remaining
subsystem and just have GenITC simulations communicate with one another.
(This sounds kinda pointless, but if you’ve got a good simulation
of one system, and you need to work up one for another, the development
can be done off-line until it’s in good enough shape to start
integrating with the real system.)
Are we talking TCP/IP or UDP?
Either. Both. A GenITC can communicate using either protocol, and even
talk TCP/IP on one interface, and UDP on the other.
How does it handle UDP multicast?
GenITC uses two network cards to handle this situation. The system’s
network itself needs to be split into two subnets, with the only link
between them running through GenITC’s network interfaces. This
is more invasive to the network, since it requires reconfiguring the
routing, but it works just fine.
How does GenITC know what the messages look like?
It has to be told. And the way it’s told is with the aid of a
GUI-based tool called DataMan, which is part of the GenITC tool suite.
DataMan gives you a graphical interface to create and edit messages
from their fields on up.
How exactly does message creation and editing work?
Be concise.
First you start with the definition of a message, this could be provided
by an Interface Design Document or directly from source code. A message
is made up of fields, and each field can either be a single value,
like an integer or a string, or a nested group of fields, which themselves
can contain nested components.
You start message creation by defining
data items corresponding to the lowest level message fields, like missile
count or day of year. Then start grouping those together into any groups
or records that may be part of the part of the message. Eventually
you have all the components of the message, which are then assembled
together into a message definition. Along the way, those message fields
that differentiate one from another, like a message ID in the message
header are identified so that GenITC can tell where to look to figure
out what kind of message it just received.
Does that work for VMF? Variable Message Format?
Yes. To support VMF there’s some additional kinds of message
field types, it’s not all just integers, strings, and records.
With VMF you have Optional and Recurring components, which accommodate
VMF’s Field and Group Presence and Recurrence Indicators.
Can you use this with C++? Or does it only work
with C?
GenITC is language independent. So long as there’s a consistent
definition of the message layout in terms of bits and bytes, it doesn’t
matter what programming language was used to create a message.
How do you tell GenITC what to do with the messages
passing through it?
GenITC uses “scenarios”. These are akin to scripts, but
they’re visually oriented. ScenMan, another GenITC, component
is used to create and edit scenarios.
Scenarios consist of events and
actions. Nearly all events are either “message
events” or “time events” (the other kinds are “start” and “stop” events,
which are optionally used to initialize and finalize, respectively,
a scenario’s execution). Actions define the behavior of the scenario,
so there are actions to interact with messages, to do expression evaluation,
conditional execution, and display text to the user.
A message event
is triggered by the receipt of a message of the kind it’s been
told to watch for. (A message event can even be told to watch for only
those messages that have specific values in one or more of its fields.)
Upon receipt, the actions associated with the message are executed.
A
time event is either a “one-shot” timer which counts
down some set amount of time and then executes its actions, or a periodic
timer, which counts down, executes its actions, and then resets its
timer.
There are actions to modify messages that have been
received and then send them on, as well as create, populate, and send
whole new messages. Variables are available to scenarios, so there
are actions to set them, either to some fixed value, or to the content
of a field of a message that was just received. Data loaded from a
field can then in turn be used to populate a different message’s field(s). Checksums
and mathematical expressions can be calculated, and conditional expressions
can be evaluated to determine which of two sets of actions to execute.
And last, notices can be displayed to the console window to keep the
user apprised of what’s going on in the scenario.
How hard is it to mess around with time fields that
appear in messages?
GenITC provides a special mechanism for dealing with time in messages.
A message field that contains a time value can be marked for “Time
Special Processing” and then the units of time that value represents
can be selected. These units include the year, month within year, Unix
time, milliseconds since midnight, and several others.
Within a scenario there are some predefined time-oriented
variables that are continuously updated, such as “__CurrentTime”.
When assigning that variable to a message field marked for Time processing,
the appropriate portion of the current time will be extracted and formatted
for storage in that field. Or even just when working with a variable
that contains a “time value”, assigning that variable to
a Time field will put the value of that variable appropriate to the
field’s units into the field.
What do I do if a bug appears in the software?
Tell Quadrus! If you have an on-site Quadrus rep or have been given
a Quadrus point-of-contact, let them know about the problem. If not,
call us at 256-327-3410 or email
us.
Do customers develop their own scenarios or does
Quadrus supply them based on their needs?
This is up to you, the customer. There’s nothing stopping you
from building your own message databases and scenarios—you have
all the tools—but if you want you can contract database and/or
scenario development to Quadrus, or bring us in to train your people.
What is created first, the test case or the scenario
file?
As with any testing effort, you have to know what it is you want to
test before you start writing scenarios or test procedures. Understand
what you need to test, and what it takes to get the systems you’re
testing to act in a way that exercises the test criteria. Then identify
what activity has to be performed on the systems under test, and what
messages and content have to be exchanged between them in order to
trigger the desired (or undesired) behavior.
Once this has all been identified, create the scenario
that interacts with the systems’ activity and message traffic and modifies and/or
creates the sequence of messages that are needed.
What is created first, the message database or the
scenario?
A scenario is almost always interacting with the messages being passed
between systems, so those message definitions have to exist in a message
database before any scenario can be created. You can always sketch
out a scenario’s flow by hand, but you won’t be able to
use ScenMan to create it until the message database is in place.
Also see:
GenITC FAQ | VMF
FAQ
E-Mail:
top
|