[comp.sys.mac.programmer] Testing Tools...

atreides@caladan.UUCP (System Administrator) (12/23/89)

There is always a lot of discussion about a variety of development
environments (and rightly so), but my interests lie more with testing
tools, and I have never seen a discussion on this topic.

So far I have found the Mac woefully lacking in this area.. but like
any Mac zealot the quest continues :-)

My question is, does anyone know of the existance of commercially
available tools for the Mac.  Or if you have developed tools, would
you be willing to share them with the rest of the testing community on
the net?

I'm especially interested in tools for:

      - Automation
      - Code Coverage
      - Code Complexity Measurement

etc...

I look forward to any information that comes to light.

--
Stuart Burden
root@caladan.uucp

jspear@gryphon.COM (Jon Spear) (12/25/89)

In article <2bbd2b567@caladan.UUCP> atreides@caladan.UUCP (root/postmaster/etc) writes:
>There is always a lot of discussion about a variety of development
>environments (and rightly so), but my interests lie more with testing
>tools, and I have never seen a discussion on this topic.
>   [...]
>I'm especially interested in tools for:
>
>      - Automation
>      - Code Coverage
>      - Code Complexity Measurement

[note: I'd intended to mail this, but it bounced...]

It is indeed hard to accept the Mac as a platform for developing highly
reliable software when there seems to be a dearth of testing and code
analysis tools available (not to mention the lack of a protected-mode
operating system or a verified kernel or the popularity of languages
like C that almost encourage unsafe coding [donning flame-retardant
undies]).

An automated test driver for general Mac applications is an interesting
problem.  The closest I know of is the monkey DA that posts random mouse
and keyboard events, ...  what more could you want?  You can get a little
mileage out of scripting/macro facilities like Tempo II, but that isn't
quite a complete facility for maintaining a database of regression
tests, running some subset, collecting and analyzing results, and
displaying a summary report. 
   Is this a problem with the Mac environment(s), or is it a general
problem for systems that use a graphical user interface?  The only test
automation packages like this that I'm aware of are for Unix or VMS
programs that are either batch-oriented or use simple character-oriented
display user interfaces.

Test coverage seems like an easier problem, but again, I've seen nothing
for the Mac.  The closest things I can think of are the performance
analyzers that come with a couple environments.  You know - the thingies
that instrument your code to call a time-stamper subroutine that
collects timing data on a per-module basis.  [I haven't actually used
these on the Mac -- do they instrument the code or sample the PC at some
interrupt interval, or both?] It seems like it wouldn't be too hard to
read that bucket file and identify which modules were called and which
were not -- very crude coverage indicator, but better than nothing... 

Complexity metrics are also straightforward to port to the Mac, assuming
you are using a language with standard syntax.  But metrics are of less
obvious value, other than curiosity, or maybe I've missed something.  Do
any complexity metrics exist that are reasonably simple to automate that
have been shown to correlate well with the true maintainability or
understandability of a piece of code?  That are not easily fooled?  That
provide specific feedback on how to improve the code?  I know Halstead's,
McCabe's, and other metrics I've seen don't seem very useful in this
respect. 

Please let us know what you find.

-Jon
-- 
-----
[The following address is soon to evaporate.  New address sought.]
Jon L Spear: jspear@gryphon.COM    <routing site>!gryphon!jspear
             gryphon!jspear@elroy.jpl.nasa.gov
"With computers we can make billions of mistakes every second!"

jess@apple.com (Jay Jessen) (01/22/90)

In article <2bbd2b567@caladan.UUCP> atreides@caladan.UUCP (System 
Administrator) writes:
>   
In article <2bbd2b567@caladan.UUCP> atreides@caladan.UUCP (System 
Administrator) writes:
> There is always a lot of discussion about a variety of development
> environments (and rightly so), but my interests lie more with testing
> tools, and I have never seen a discussion on this topic.
> 
> So far I have found the Mac woefully lacking in this area.. but like
> any Mac zealot the quest continues :-)
> 
> My question is, does anyone know of the existance of commercially
> available tools for the Mac.  Or if you have developed tools, would
> you be willing to share them with the rest of the testing community on
> the net?
> 
> I'm especially interested in tools for:
> 
>       - Automation
>       - Code Coverage
>       - Code Complexity Measurement
> 
> etc...
> 
> I look forward to any information that comes to light.

Here at Apple, we have an environment to automate the testing of Mac 
applications through the user interface.  User/Application interaction is 
what's being automated.

The testing is driven by a scripting language which specifies Rwould-beS 
interaction between a user and the application under test. The test specification is given abstractly rather than literally as with many 
macro facilities.  By abstract, I mean that the language primitives 
include commands to say things like Rselect the button titled OKS, 
Rdrag the frontmost windowS, Rselect the first menuItem under the windows 
menuS, etc... The system, is therefore adaptive to things such as varying monitor configurations, Apps that center dialogs, minor changes from one version of an App to the next, etc...  In addition, higher level programming 
constructs are supported so that testing methodologies can be applied.  One can specify code to facilitate things like Rif a dialog is present, log the message, dismiss the dialog, and continueS.  Mechanisms are also supported to allow for modular development of scripts.

In addition, this tool was designed from the very beginning to be a 
testing environment.  We try to offload as much of the work away from the Mac 
under test and try to minimize intrusion of the Mac Application under test. 
Therefore, testing is done over Appletalk.  ItUs possible to drive many MacUs from one Mac host.  In fact, itUs possible to drive many MacUs from one host having each being driven by a different script.

Each of the machines under test will have a small piece of code running 
which acts as an agent to pass raw information back to the host.  This
code works at a level low enough as to fool the application into thinking
it is being manipulated by an actual user.  It installs itself as an init.

Presently, the tool exists as an MPW tool and scripts are written textually.
There is also a sister application which can do literal mouse and keystroke 
recording/playback.  The two tools can work cooperatively in that 
recordings can be played back at points within script execution.  

The environment is used extensively within Apple.  Tom Chavez, the product
manager for the tool is trying to make it available through APDA.  You 
may contact Tom for information pertaining to the tool's availability.  He is 
reachable as follows:

Tom Chavez, Product Manager
Apple Product Marketing
Applelink:  TOM.CHAVEZ
tomc@apple.com

I am also hoping to present this tool at the Worldwide Developer's 
conference this Spring.  I am trying to arrange such a presentation, but cannot confirm it at this time.

Thanks for your interest and I hope we can meet your testing needs with 
this tool.

Jay Jessen
Project Lead

------------------------

While I have your attention, let me also state that we have an immediate 
job opening on the project for an experienced and knowledgeable Mac 
programmer.  The person should have at least a B.S. in Computer Science or 
Electrical Engineering.  Strong interpersonal skills are a must as the 
person must be able to work within a project team and interact regularly 
with engineers of all sorts across Apple.  Skills that would be an added 
bonus include Appletalk programming, C++ programming, knowledge of and/or 
application of testing methodologies.

This position is in Cupertino, CA (Silicon Valley).

I will accept e-mailed letters informing me of interest in the position, 
but please send all resumes and cover letters through U.S. mail to the address listed at the end of this posting.

Apple Computer, Inc. has a corporate commitment to the principle of diversity. 
In that spirit, we welcome applications from all individuals including women, minorities, veterans, and disabled individuals.

(C) 1990 Apple Computer, Inc. Apple, the Apple logo, Macintosh, AppleTalk, 
and MPW are all registered trademarks of Apple Computer, Inc.

Jay Jessen, Software Engineer
Apple Computer, Inc.  MS 60BB
20525 Mariani Ave
Cupertino, CA  95014
AppleLink:  Jessen1

jess@apple.com (Jay Jessen) (01/22/90)

I see part of my first reply got screwed up.  I apologize for this 
and repost...

>   In article <2bbd2b567@caladan.UUCP> atreides@caladan.UUCP (System  
Administrator) writes:
> There is always a lot of discussion about a variety of development
> environments (and rightly so), but my interests lie more with testing
> tools, and I have never seen a discussion on this topic.
> 
> So far I have found the Mac woefully lacking in this area.. but like
> any Mac zealot the quest continues :-)
> 
> My question is, does anyone know of the existance of commercially
> available tools for the Mac.  Or if you have developed tools, would
> you be willing to share them with the rest of the testing community on
> the net?
> 
> I'm especially interested in tools for:
> 
>       - Automation
>       - Code Coverage
>       - Code Complexity Measurement
> 
> etc...
> 
> I look forward to any information that comes to light.


Here at Apple, we have an environment to automate the testing of Mac 
applications through the user interface.  User/Application interaction is 
what's being automated.

The testing is driven by a scripting language which specifies "would-be" 
interaction between a user and the application under test. The test  
specification is given abstractly rather than literally as with many macro 
facilities.  By abstract, I mean that the language primitives include 
commands to say things like "select the button titled OK", "drag the 
frontmost window", "select the first menuItem under the windows menu", 
etc... The system, is therefore adaptive to things such as varying monitor 
configurations, Apps that center dialogs, minor changes from one version 
of an App to the next, etc...  In addition, higher level programming 
constructs are supported so that testing methodologies can be applied.  
One can specify code to facilitate things like "if a dialog is present, 
log the message, dismiss the dialog, and continue".  Mechanisms are also 
supported to allow for modular development of scripts.

In addition, this tool was designed from the very beginning to be a 
testing environment.  We try to offload as much of the work away from the 
Mac under test and try to minimize intrusion of the Mac Application under 
test. Therefore, testing is done over Appletalk.  ItUs possible to drive 
many Mac's from one Mac host.  In fact, it's possible to drive many Mac's 
from one host having each being driven by a different script.

Each of the machines under test will have a small piece of code running 
which acts as an agent to pass raw information back to the host.  This 
code works at a level low enough as to fool the application into thinking 
it is being manipulated by an actual user.  It installs itself as an init.

Presently, the tool exists as an MPW tool and scripts are written 
textually.  There is also a sister application which can do literal mouse 
and keystroke  recording/playback.  The two tools can work cooperatively 
in that recordings  can be played back at points within script execution.  

The environment is used extensively within Apple.  Tom Chavez, the product 
manager for the project is trying to make it available through APDA.  You 
may contact Tom for information pertaining to the tool's availability.  He 
is  reachable as follows:

Tom Chavez, Product Manager
Apple Product Marketing
Applelink:  TOM.CHAVEZ
tomc@apple.com

I am also hoping to present this tool at the Worldwide Developer's 
conference this Spring.  I am trying to arrange such a presentation, but 
cannot confirm it at this time.

Thanks for your interest and I hope we can meet your testing needs with 
this tool.

Jay Jessen
Project Lead

------------------------

While I have your attention, let me also state that we have an immediate 
job opening on the project for an experienced and knowledgeable Mac 
programmer.   The person should also have at least a B.S. in Computer 
Science or Electrical Engineering.  Strong interpersonal skills are a must 
as the person must be able to work within a project team and interact 
regularly with engineers of all sorts across Apple.  Skills that would be 
an added bonus include Appletalk programming, C++ programming, knowledge 
of and/or application of testing methodologies.

This position is in Cupertino, CA (Silicon Valley).

I will accept e-mailed letters informing me of interest in the position, 
but  please send all resumes and cover letters through U.S. mail to the 
address given at the end of this posting.

Apple Computer, Inc. has a corporate commitment to the principle of 
diversity.  In that spirit, we welcome applications from all individuals including women, minorities, veterans, and disabled individuals.

(C) 1990 Apple Computer, Inc. Apple, the Apple logo, Macintosh, AppleTalk, 
and MPW are all registered trademarks of Apple Computer, Inc.

Jay Jessen, Software Engineer
Apple Computer, Inc.  MS 60BB
20525 Mariani Ave
Cupertino, CA  95014
AppleLink:  Jessen1

silverio@brahms.berkeley.edu (C J Silverio) (01/23/90)

   In article <2bbd2b567@caladan.UUCP> atreides@caladan.UUCP (System  
   Administrator) writes:

   My question is, does anyone know of the existance of commercially
   available tools for the Mac.  Or if you have developed tools, would
   you be willing to share them with the rest of the testing community on
   the net?

Well, there are some. Polytron makes a suite of these tools that runs
under MPW and many common IBM-PC development environments. I haven't
used any of their stuff. Their # is 1-800-547-4000 or (503)645-1150.
They'd love to send you a free catalog. They advertise heavily in
Computer Language magazine, a haven for people interested in the
"engineering" aspects of Computer Science.

I also spotted a pretty complete-looking suite from MMC AD Systems
(408)263-0781 in Computer Language.

Additionally, MPW 3.0 now contains Projector, a code-management module
with a pretty spiff user interface. I only know about it from the
article in Mac Tech Quarterly, Winter 1990 edition.

An alternative is simply to call the maker of your favorite package,
and ask them when they will port it to MPW. The Commando interface
makes this task damn near trivial. You could even do it yourself.

Recently, someone converted the C beautifier from GNU to an MPW
Commando and posted it.

have fun.