用开源测试工具构建软件组织的测试自动化体系

本文给出了用开源自动化测试工具构造自动化黑盒测试的典型配置. 由于XX主要的被测试软件大多是由C++写的, 所以我们主要讨论
C++的黑盒测试. 如果想对 Java系统进行测试, 建议你使用号称价值超过4000万美元的开源测试系统Eclipse/TPTP, 这个系统的功能
远比大多数商业软件强.1 给出了典型的开源测试自动化框架配置框图.

1. 典型的C++自动化黑盒测试配置

由于是黑盒测试, 我们使用的测试脚本语言不必是C++, 在目前情况下, 最好不要用C++作为测试脚本语言, 因为C++的开源测试工具比较少.
当然这样的配置也可以用于白盒测试, 但由于使用了测试驱动模块, 总有点画蛇添足之嫌. 对于白盒测试, 建议您使用xUnit. 比较适合作
为测试脚本语言的是Java, PerlPHP. 虽然Java并不是一种真正的"脚本"语言, 因为Java是编译执行的, 但目前基于Java的开源工具是最
多的, 功能也相当强大, 所以我们将Java排在第一位, Perl排在第二位, 而将PHP排在第三位. PHP排在Perl之后的最主要原因是目前世界
上最流行的软件测试自动化框架(STAF)尚不支持PHP语言.

测试脚本语言

Java

Perl

Php

测试管理工具

Salome TMFFitnesse

Bugzilla Test RunnerTestMaster

TestLinkQaTraq

单元测试工具

JUnit

PerlUnit

PhpUnit

测试驱动

Swig, StafCorba

Swig, StafCorba

SwigCorba

网站测试

Canoo webtest

HTTP::Recorder

 

GUI测试

Abbot

Win32::Guitest, X11::Guitest

 

项目管理

SEE, Maven

Projectory

netOffice

缺陷库

Salome TMF内置

Gnats

Bugzilla

1、三种典型的自动化黑盒测试架构配置

1中我们加了一个比较强的限制, 就是所有的软件模块都采用同一种脚本语言. 采用同一种语言的好处是软件的集成度比较好, 很多
软件包可以由多个模块共享, 如果您希望修改源代码, 模块间的冲突会比较小. 实际情况下只有当你希望采用自动化测试时, 测试脚本
语言与测试驱动之间才必须采用同一种语言, 如果是人工测试, 两个模块也不必采用同一种语言. 附录B给出了一个用PHP作为测试脚本
语言的自动化测试框架案例, 使用JavaPerl时的配置大同小异. 2给出了采用Java时的一种典型配置. 所以本文给出的案例看似采
用的是漫不经心的"积木式"结构, 实际上各个不同软件模块之间的协调性与集成度都相当好, 所谓"形散而神不散".

2

在黑盒测试中, 起关键作用的是测试驱动模块(也可称为通信模块). Corba是一种已经有很久历史的解决方案, 功能也十分强大, 但采用
Corba
有时会有"杀鸡用牛刀"的嫌疑. 软件测试自动化框架(STAF)是一种类似于Corba的解决方案, 专门用于软件测试领域. 附录中给出了
STAF
的简单介绍. Swig是最近几年崛起的另外一支新军, 附录中也有介绍. Eclipse/TPTP也支持Agent Controller, 可用于C++测试.

这样构造出来的开源测试框架功能上并不亚于市场上流行的商业测试软件. 本文并不希望通过与商业测试软件的直接对比展示这一点
众所周知, Eclipse/TPTP的功能远比市场上的大多数商业测试软件强大, 只是Eclipse/TPTP的强项是Java测试而不是C++测试. 所以,
本文给出了一个与Eclipse/TPTP的对比, 间接说明为什么开源测试自动化框架的功能并不亚于商业测试软件.

The following table shows a detail comparison between Eclipse TPTP and Salome TMF/STAF.

Framework (Ready-to-use)

Eclipse TPTP

Salome TMF/STAF

General

Main target SUT environment

Java, Web-app, C++

Java, Distributed systems, C++

Test Management

Preparation, execution

Execution

Open Source, license

Eclipse Public License

Gnu Public License

Platform supported

Win32, Linux etc

Win32, Linux etc

Test script languages

Java

Java, XML

Test execution monitoring

Test execution history

Monitor service

Editor

JUnit, Web-app etc

Editor for test Plans etc

Test Method Supported

Automatic testing

Yes

Yes

Distributed testing

Yes

Yes

Unit testing

Test tool for JUnit test

Test tool for JUnit test

Manual testing

Yes

Yes

Interoperability

Data models

Test definition etc

Test definition etc

Database support

No

MySQL database

Launching support (remote)

Java JVM

Peer-to-peer network

Standards used/supported

UML, XML, XMI etc

XML

SUT interface connection

Agent Controller

See Tool Integration

Test asset export

Yes, but limited.

Yes, via XML file format

Test asset import

No

Yes, via XML file format

Tool integration

See Note 1

See Note 2

Note 1: Integration with Web browsers for recording HTTP requests. Integration with Performance Monitor on
Windows and Linux. Integration with JVMPI for Java profiling (code coverage, execution times, memory analysis).

Note 2: Pluggable services. Support for interaction from C/C++, Java, Rexx, Perl, Tool Command Language
(Tcl) and from the command line/shell prompt. Integration with Bugzilla bug database.

TPTP and STAF both provide an infrastructure that enables remote test execution. Both
products can be used for integrating many test tools and to adapt to many different SUTs (System Under Test).
Both Eclipse TPTP and STAF also use component technology, but in very different ways.

开源测试工具的主要缺点是需要一定的熟悉过程, 不像商业测试软件那般"傻瓜". 但用开源测试工具构造的测试自动化框架也有比商业
测试软件强大得多的地方: 商业测试软件一般只提供一些简单的测试驱动模块, 不会提供像SwigSTAF这般功能如此强大的测试驱动.

附录A: swig 给脚本语言做 wrapper

工程里面有时候需要将某些C或者C++编写的模块封装成脚本语言的扩展,以便在脚本语言里面调用,这个工作通常很枯燥,会写出来很多重复代码,人一向都是会偷懒的动物,因此就诞生了一些工具来帮助人们做这件事情,其中比较有名的就是 swig, 此外还有 boost::python 等,不过我觉得还是 swig 最好,因为他可以同时支持很多种脚本语言。
  SWIG 是一种接口编译器,专门用来连接 C/C++ 程序和脚本语言的,它可以直接处理 C/C++ 头文件里面的声明,生成包装代码。和原有代码编译链接以后,生成多种脚本语言的扩展,可以加载进脚本语言解释器中使用。经过不少年的发展,他已经对C/C++语言支持得非常好了,甚至包括对模版的支持。swig 生成的代码基本都是可以直接用的,不需要再手动填空。他支持的脚本语言更是非常之多,还包括一些编译类型的伪码语言比如 Java。我的Linux系统带的 swig 1.3.24 支持这些脚本语言:ALLEGROLCHICKENC#GUILEJavaModula3MzschemeOcamlPerlPHPPikePythonRubyLispTclXML(???这个怎么都有)。很多都没有听说过,不过常用的Perl/PHP/Python都是支持的。

STAF代表软件自动测试框架Software Testing Automation Framework)。如其名称所示,STAF是一个自动化的架构,旨在简化创建、管理自动测试用例和测试环境。STAF是基于Service这种可重用组件设计的开源、支持多平台、多语言的软件自动测试框架。
STAF
通过一些服务来明确其功能,一个服务集中提供一个功能特性,例如:登陆、进程激活等。STAFProc是运行在STAF客户端机器上的进程,负责接收请求并将其引导至合适的服务上。这些请求可能来自本地也可能是其他的STAF客户机,因此STAF是工作于对等环境,一台机器也可能同时在向其他机器发送请求。

    *
开发状态:6-成熟阶段
    *
运行环境:控制台(基于文本)
    *
目标用户:开发人员及其他用户
    *
许可协议:GNU Library Lesser General Public License (LGPL)
    *
工作语言:英语
    *
操作系统:WindowsPOSIX
    *
开发语言:CC++JavaPerlPython,Tcl
    *
主题:软件开发
    http://sourceforge.net/projects/staf

 

附录B: 基于PHP的开发服务器环境配置软件包W2K/XP

前言
----
对于许多从事软件开发工作的人来说,一个良好的开发管理环境能够使我们更好的对软件的质量进行控制。
但是,目前网上的很多文章,只是对软件的配置管理环境中的部分软件进行了介绍,没有一个全面的说明。
本文向大家介绍一个比较全面的开发配置管理环境的建立过程,同时提供一个已经配置完成的开发环境包。

整个开发环境的组成:Windows 2000/XP, Apache2, PHP5, MySQL, SVN, OpenLDAP, EasyMail, NetOffice, Mantis, TestLink, BBS
开发环境的配置思路:利用 LDAP  SVN, Mantis, NetOffice 等系统进行开发人员身份认证。系统可以通过 Mail 服务发送通知
信息等。关于软件包中各软件的使用方法,请大家参考相应的使用文档。

使用方法
--------
  
新建用户步骤:
  1.  
 LDAP 中建立新用户;
  2.  
在各子应用系统中建立相应的用户信息;

参考文档
--------
《使用 Subversion 进行版本控制》
Version Control with Subversion
OpenLDAP2_1管理员指南》
 

一、服务程序安装

 1. APACHE
    
版本:   2.0.54
    
安装:  D:/DevEnv/server/Apache2
    
用途:  Web 服务

 2. PHP
    
版本    5.0.5
    
目录:  D:/DevEnv/server/php5
    
用途:  页面处理

 3. MySQL
    
版本:  4.1.14
    
目录:  D:/DevEnv/server/MySQL
    
用途:  数据库服务

 4. OpenLDAP
    
版本:  2.2.19
    
安装:  D:/DevEnv/server/openldap
    
用途:  用户认证

 5. SubVersion
    
版本:  1.2.3
    
安装:  D:/DevEnv/server/Subversion
    
用途:  版本控制

 

6. WinWebMail
    
版本:   3.7.0 .3
    
目录:  D:/DevEnv/server/WinWebMail
    
用途:  邮件服务,域名:dcme.com


二、应用程序安装

    
用户名/口令:
        admin/admin_888
        guest/guest
        user1/user1
        user2/user2

 1. phpMyAdmin
    
版本:  2.6.3-pl1
    
目录:  D:/DevEnv/www/phpMyAdmin
    
用途:  MySQL 管理程序
    
用户名/口令:root/dev_admin_234

 

2. phpLdapAdmin
    
版本:   0.9.6 c
    
目录:  D:/DevEnv/www/phpLDAPAdmin
    
用途:  OpenLDAP 管理程序
    
用户名/口令:cn=root,dc=cn/ldap_root_secret


 

 3. NetOffice
    
版本:   2.6.1
    
目录:  D:/DevEnv/www/netOffice
    
用途:  团队项目管理程序

 

 4. Mantis
    
版本:   1.0.0 .rc2
    
目录:  D:/DevEnv/www/mantis
    
用途:  BUG 跟踪管理

 

5. TestLink
    
版本:  1.6 rc1
    
目录:  D:/DevEnv/www/testlink
    
用途:  项目测试管理

 

6. SMF BBS
    
版本:   1.0.5
    
目录:  D:/DevEnv/www/smfbbs
    
用途:  BBS 论坛程序

 

 

 

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值