发布新日志

  • ping 命令用法,判断对方机器的操作系统类型

    2012-07-16 14:38:01

    ping 命令用法,判断对方机器的操作系统类型

    Ping 命令可以用来验证与远程计算机的连接。(该命令只有在安装了TCP/IP协议后才能使用) 

    ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list 

    参数说明: 
    -t :一直Ping指定的计算机,直到从键盘按下Control-C中断。 
    -a :将地址解析为计算机NetBios名。 
    -n :发送count指定的ECHO数据包数。,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助。能够测试发送数据包的返回平均时间,及时间的快慢程度。默认值为 4。 
    -l :发送指定数据量的ECHO数据包。默认为 32 字节;最大值是65500byt。 
    -f :在数据包中发送“不要分段”标志,数据包就不会被路由上的网关分段。通常你所发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会再分段处理。 
    -i :将“生存时间”字段设置为TTL指定的值。指定TTL值在对方的系统里停留的时间。同时检查网络运转情况的。 
    -v :tos 将“服务类型”字段设置为 tos 指定的值。 
    -r :在“记录路由”字段中记录传出和返回数据包的路由。通常情况下,发送的数据包是通过一系列路由才到达目标地址的,通过此参数可以设定,想探测经过路由的个数。限定能跟踪到9个路由。 
    -s :指定 count 指定的跃点数的时间戳。与参数-r差不多,但此参数不记录数据包返回所经过的路由,最多只记录4个。 
    -j :利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源) IP 允许的最大数量为 9。 
    -k :computer-list 利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。 
    -w:timeout 指定超时间隔,单位为毫秒。 
    destination-list: 指定要 ping 的远程计算机。

    TTL 字段值可以帮助我们识别操作系统类型(不完全准确,因为 TTL 是可以修改的)。 
    LINUX 64 
    WINXP/NT 128 
    WINDOWS 系列 32 
    UNIX 系列 255

    TTL:生存时间 
    指定数据报被路由器丢弃之前允许通过的网段数量。 
    TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小 1。 TTL:生存时间 
    指定数据报被路由器丢弃之前允许通过的网段数量。 

    TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小 1。 
  • 我使用过的Linux命令之tar - 解压缩工具

    2012-07-16 11:49:42

    我使用过的Linux命令之tar - 解压缩工具

    本文链接:http://codingstandards.iteye.com/blog/833203   (转载请注明出处)

    用途说明

    tar命令是常用的备份、压缩、解压命令(The GNU version of the tar archiving utility)。我们经常把文件或目录打包压缩到tar.gz文件中,许多开源软件的发布形式就是tar.gz或者tar.bz2包,因此在Linux下工作,必须掌握tar这个工具的使用。

     

    常用参数

    参数: -v

    显示处理过程,可以加在下面任何一种格式中。

     

    格式:tar cf file.tar files

    将一个或多个文件、目录打包到tar包。

     

    格式:tar rf file.tar file

    将文件file添加到tar包中。

     

    格式:tar uf file.tar file

    将文件file更新tar包中相应的文件。

     

    格式:tar tf file.tar

    测试tar文件的完整性。

     

    格式:tar xf file.tar

    解压tar包。

     

    格式:tar zcf file.tar.gz files

    格式:tar zcf file.tgz files

    将一个或多个文件、目录压缩到file.tar.gz中。

     

    格式:tar zxf file.tar.gz

    格式:tar zxf file.tgz

    解压.tar.gz或.tgz文件。

     

    格式:tar jcf file.tar.bz2 files

    将一个或多个文件、目录压缩到file.tar.bz2中。

     

    格式:tar jxf file.tar.bz2

    解压.tar.bz2文件。

     

    格式:tar Zcf file.tar.Z files

    将一个或多个文件、目录压缩到file.tar.Z中。需要安装了ncompress软件包才行。

     

    格式:tar Zxf file.tar.Z

    解压.tar.Z文件。

     

    参数:-C dir

    解压时指定输出目录。

     

    使用示例

    示例一 备份目录到tar.gz压缩包中

    [root@web work11]# tar zcf surf.20101203a.tar.gz surf 
    [root@web work11]# tar tvf surf.20101203a.tar.gz 
    drwxr-xr-x root/root         0 2010-07-01 09:58:33 surf/
    drwxr-xr-x root/root         0 2010-07-01 10:06:41 surf/run/
    -rw-r--r-- root/root        27 2010-11-17 15:15:52 surf/run/surf.run
    -rw-r--r-- root/root      1827 2010-08-01 20:17:56 surf/run/surf.cfg
    drwxr-xr-x root/root         0 2010-07-01 09:58:33 surf/run/CVS/
    -rw-r--r-- root/root        33 2010-07-01 09:58:33 surf/run/CVS/Root
    -rw-r--r-- root/root         2 2010-07-01 09:58:33 surf/run/CVS/Entries
    -rw-r--r-- root/root         9 2010-07-01 09:58:33 surf/run/CVS/Repository
    drwxr-xr-x root/root         0 2010-11-28 21:37:34 surf/src/
    -rw-r--r-- root/root       900 2006-07-21 11:44:42 surf/src/s_run.c
    -rw-r--r-- root/root      8342 2006-09-28 17:04:51 surf/src/s_tcpgum.c
    -rw-r--r-- root/root     33170 2008-09-09 10:13:15 surf/src/s_http.c

    省略输出

    [root@web work11]#

     

    示例二 演示rlwrap的安装步骤

    [root@web setup]# ls rlwrap-0.30.tar.gz -l 
    -rw-r--r-- 1 root root 184037 07-07 16:40 rlwrap-0.30.tar.gz
    [root@web setup]# tar zxf rlwrap-0.30.tar.gz 
    [root@web setup]# cd rlwrap-0.30/ 
    [root@web rlwrap-0.30]# ls 
    aclocal.m4  BUGS       completions  configure     COPYING       doc      Makefile.am  NEWS    src   TODO
    AUTHORS     ChangeLog  config.h.in  configure.ac  distribution  INSTALL  Makefile.in  README  test  tools
    [root@web rlwrap-0.30]# ./configure --prefix=/usr

    [root@web rlwrap-0.30]# make && make install

    [root@web rlwrap-0.30]#

     

    示例三 将ant和tomcat解压到/opt/apache/

    [root@sunrise18 setup]# ls 
    apache-ant-1.8.1-bin.tar.gz  apache-tomcat-6.0.29.tar.gz  jdk-6u23-linux-i586-rpm.bin
    [root@sunrise18 setup]# tar -C /opt/apache zxf apache-ant-1.8.1-bin.tar.gz 
    tar: You must specify one of the `-Acdtrux' options
    Try `tar --help' for more information.
    [root@sunrise18 setup]# tar zxf apache-ant-1.8.1-bin.tar.gz -C /opt/apache 
    tar: /opt/apache: Cannot chdir: No such file or directory
    tar: Error is not recoverable: exiting now
    [root@sunrise18 setup]# mkdir /opt/apache 
    [root@sunrise18 setup]# tar zxf apache-ant-1.8.1-bin.tar.gz -C /opt/apache 
    [root@sunrise18 setup]# tar zxf apache-tomcat-6.0.29.tar.gz -C /opt/apache 
    [root@sunrise18 setup]# ls /opt/apache/ 
    apache-ant-1.8.1  apache-tomcat-6.0.29
    [root@sunrise18 setup]#

  • 启动jmeter内存溢出的解决方法

    2012-07-12 14:48:22

    启动jmeter内存溢出的解决方法:
    提示 An error occurred: PermGen space
    Uncaught Exception java.lang.OutOfMemoryError: PermGen space. See log file for details.

    linux环境,修改jmeter.sh
    下面添加如下配置:
    java $JVM_ARGS -Xms1G -Xmx5G -XX:MaxPermSize=512m -Dapple.laf.useScreenMenuBar=true -jar `dirname $0`/ApacheJMeter.jar "$@"
    一般根据实际情况修改-Xmx5G,由小改到大。
    windows环境,修改jmeter.bat
    set HEAP=-Xms256m -Xmx256m
    set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
    改为:
    set HEAP=-Xms256m -Xmx1024m
    set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m
  • java随机生成[0,9]的函数

    2012-07-11 15:45:55

    public static Integer random() {
               Random random=new Random();
               int i=random.nextInt(10);
               return i;
             }
  • 延迟5s

    2012-07-11 13:43:25

    public class Test {
        public static void main(String[] args){
            try {
                System.out.println("hello1");
                Thread.sleep(5000);//括号里面的5000代表5000毫秒,也就是5秒,可以改成你需要的时间
                System.out.println("hello2");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

  • jmeter正则表达式提取器

    2012-04-16 15:15:07

    从 Response 中获得数据操作步骤:
    1、可以使用 JMeter 提供的 后置处理器(Post Processers) --> 正则表达式提取器 (Regular Expression Extractor) 从返回的结果中取得数据, 在确定 getToken() 请求的返回值是类似下列的 XML 之后,
    <?xml version="1.0" encoding="utf-8"?><burlap:reply xmlns:burlap="http://www.amowa.net/burlap/"> <string>TK1119466440468</string></burlap:reply>
    我们可以使用正则表达式 "<string>(.*)<\/string>" 来提取我们需要的凭证号.
     
    <PropertyRoomTypeID>(.+?)<\/PropertyRoomTypeID>
     
    2、这样使用"正则表达式提取器"(如下图), 注意图中的"引用名称"就可以认为是存放提取出来的数据的变量名:
    3、提取出来的变量可以这样被引用(如下图)

    Jmeter正则表达式详解:
    1、提取单个字符串:
    假设测试人员期望匹配Web页面的如下部分:name = "file" value = "readme.txt">并提取readme.txt。
    一个符合要求的正则表达式:name = "file" value = "(.+?)">。
    ():封装了待返回的匹配字符串。
    .:匹配任何字符串。
    +:一次或多次。
    ?:不要太贪婪,在找到第一个匹配项后停止。
     
    2、提取多个字符串:
    假设测试人员期望匹配Web页面的如下部分:name = "file" value = "readme.txt">并提取file和readme.txt。
    一个符合要求的正则表达式:name = "(.+?)" value = "(.+?)"。
    引用名称:MYREF
    模板:$1$$2$
    如下变量的值将会被设定:
    MYREF_g0:name = "file"value = "readme.txt"
    MYREF_g1:file
    MYREF_g2:readme.txt
    引用${MYREF_g1}
     
    3、
    引用名称即使用的参数名;填入正则表达式;模板选取匹配的组;匹配数字为匹配的个数,负数表示全部匹配;缺省值为没有匹配到时的取值。
    提取到的参数,调用时用${product_id_1},${product_id_2},${product_id_3}……;
    如果想要得到匹配出的参数的个数,用${product_id_matchNr};如果想随机选取其中一个,只需将匹配数字设为0,使用${product_id}调用即可。
    可以一次匹配多组;示例中只匹配了一个,假如正则表达式为 name="chkProductIds"
    id="chk(.+?)" value="(.+?)",就会有两组参数。想获得匹配到的组个数用${product_id_g}。模
    板针对的是匹配到的字符串再做组的区分,比如希望${product_id}取出的是第二组参数的
    值,用$2$。


     
  • 使用jmeter测试mysql数据库

    2012-04-06 14:43:30

    1、添加并发用户,即添加线程组,并修改其默认配置。

    2、选中线程组,单击鼠标右键,选择ADD->配置元件->JDBC Connection Configuration,配置如附图:

    3、再次选中线程组,单击鼠标右键,选择ADD->Sampler->JDBC Request,修改名称,输入连接池的名称MySql(与JDBC配置元件的名称相同),输入SQL查询语句。

    4、添加监听器用于查看/存储测试结果。

  • mysql数据库使用存储过程造1000条数据

    2012-04-06 14:03:04

    数据库mytest
    表hotel
    表的设计如附图
     
    DELIMITER $$
    USE `mytest`$$
    DROP PROCEDURE IF EXISTS `insert_hotel_mapping_pro`$$
    CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_hotel_mapping_pro`()
    BEGIN
    DECLARE i INT;
     SET i=0;
       WHILE i<= 1000 DO
           INSERT INTO hotel(propertyid,NAME,passport,STATUS)
              VALUES(80000+i,CONCAT('lowcost_test_', i),CONCAT('AAAAAAAAAAAAAAAAAAAAAAAAAFFFFFF',i),'ENABLED');
           SET i=i + 1;
        END WHILE;
     END$$
    DELIMITER ;
  • Ruby 使用 POST 方法提交数据: set_form_data

    2011-06-15 16:32:40

    require 'net/http'

     

    url = URI.parse('http://www.rubyinside.com/test.cgi')

    Net::HTTP.start(url.host, url.port) do |http|

      req = Net::HTTP::Post.new(url.path)

      req.set_form_data({ 'name' => 'David', 'age' => '24' })

      puts http.request(req).body

    end

  • Watir的基本语法

    2011-06-15 16:29:17

    Watir的基本语法(Watir Syntax)

    1.使用Watir工具,需要在脚本中加上
    require 'watir'
    2.创建一个IE的测试实例
    ie = Watir::IE.new
    或者在创建的同时直接转到页面
    ie = Watir::IE.start("[url=http://mytestsite/]http://mytestsite[/url]")
    Watir使用start方法同时创建一个浏览器实例并转到一个页面。
    3.页面导航
    ie.goto("[url=http://mytestsite/]http://mytestsite[/url]")
    4.操纵Web页面对象
    4.1超链接
    4.1.1使用Text属性点击超链接
    ie.link(:text , "Pickaxe").click
    对应的HTML代码为:
    <a href="[url=http://pragmaticprogrammer.com/titles/ruby/]http://pragmaticprogrammer.com/titles/ruby/">Pickaxe</a[/url]>
    4.1.2使用URL属性点击超链接
    ie.link(:url , "[url=http://pragmaticprogrammer.com/titles/ruby/]http://pragmaticprogrammer.com/titles/ruby/").click[/url]
    对应的HTML代码为:
    <a href="[url=http://pragmaticprogrammer.com/titles/ruby/]http://pragmaticprogrammer.com/titles/ruby/">Test[/url] Site</a>
    4.2复选框
    4.2.1使用name属性设置复选框
    ie.checkbox(:name, "checkme").set
    4.2.2使用name属性清除复选框
    ie.checkbox(:name, "checkme").clear
    4.2.3使用name和value属性设置复选框
    ie.checkbox(:name, "checkme", "1").set
    4.2.4使用name和value属性清除复选框
    ie.checkbox(:name, "checkme", "1").clear
    对应的HTML代码为:
    <input type = "checkbox" name = "checkme" value = "1">
    4.3单选框
    4.3.1使用name属性设置单选框
    ie.radio(:name, "clickme").set
    4.3.2使用name属性清除单选框
    ie.radio(:name, "clickme").clear
    4.3.3使用name和id属性设置单选框
    ie.radio(:name, "clickme", "1").set
    4.3.4使用name和id属性清除单选框
    ie.radio(:name, "clickme", "1").clear
    对应的HTML代码为:
    <input type = "radio" name = "clickme" id = "1">
    4.4下拉框
    4.4.1使用name属性和值来设置下拉框
    ie.select_list( :name , "selectme").select("is fun")
    4.4.2使用name属性和值来清除下拉框
    ie.select_list( :name , "selectme").clearSelection
    对应的HTML代码为:
    <select name = "selectme" > <option name=1> <option name=2>Web Testing <option name=3>in Ruby <option name=4>is fun </select>
    4.5在Web页面中输入数据
    4.5.1使用文本输入框的那么属性设置输入内容
    ie.text_field(:name, "typeinme").set("Watir World")
    4.5.2清空文本输入框
    ie.text_field(:name, "typeinme").clear
    对应的HTML代码为:
    <input type = "text" name = "typeinme" >
    4.6从Web页面上提交数据
    4.6.1按钮
    4.6.1.1通过值或标题属性点击按钮
    ie.button(:value, "Click Me").click
    4.6.1.2通过name属性点击按钮
    ie.button(:name, "clickme").click
    对应的HTML代码为:
    <input type = "button" name = "clickme" value = "Click Me">

    4.6.2表单
    4.6.2.1表单中的按钮
    使用value或标题属性
    ie.button(:value, "Submit").click
    对应的HTML代码为:
    <form. action = "submit" name = "submitform" method="post"><input type = "submit" value = "Submit"></input></form>
    4.6.2.2表单中的图片按钮
    使用那么属性
    ie.button(:name, "doit").click
    对应的HTML代码为:
    <form. action = "submit" name = "doitform" method="post"><input type="image" src = "images/doit.gif" name = "doit"></form>
    4.6.2.3没有按钮的表单
    Watir can submit a form. by identifying it by its name, action and method attributes.
    可以通过name、action以及method属性来提交表单
    ie.form(:name, "loginform").submit
    ie.form(:action, "login").submit
    对应的HTML代码为:
    <form. action = "login" name = "loginform" method="get"><input name="username" type="text"></input></form>
    4.6.3框架
    ie.show_frames可以打印出当前页面框架的数量和名称
    Watir允许通过名称属性来访问框架,如ie.frame("menu")
    如果要访问menu框架中的一个超链接,可以ie.frame("menu").link(:text, "Click Menu Item").click
    4.6.4嵌套框架
    ie.frame("frame1").frame(:name, "nested_frame")
    4.6.5新窗口
    一些Web应用会弹出新窗口或打开一个新窗口,可以使用attach方法来访问并控制新窗口。通过标示新窗口的URL或者title来访问。
    ie2 = Watir::IE.attach(:url, 'http://mytestsite')
    ie3 = Watir::IE.attach(:title, 'Test New Window')
    也可以使用正则表达式
    ie4 = Watir::IE.attach(:title, /Test New/)
    注意:不要把新窗口分配到你的ie变量,最好给新窗口一个不同的名字
    5.验证结果
    比较好的方法是在测试案例中假如验证点
    5.1对象存在
    使用Watir方法contains_text
    ie.contains_text("Reached test verification point.")
    if ie.contains_text("Reached test verification point.")
      puts: "Test passed. Page contains the text: Reached test verification point."
    else
      puts: "Test failed! Page didn't contain text: Reached test verification point."
    end
    5.2使用test::unit Assertions
    5.2.1需要test::unit
    require 'test/unit'
    5.2.2创建测试实例
    class TC_myTest < Test::Unit::TestCase
      ...fill in Test Case methods here...
    end
    5.2.3创建测试用例方法
    在测试类中,需要声明象下面的方法:
    def test_myTestCase
      fill in method body with Watir code and assertion here
    end
    方法必须以test开头,ruby会随机运行测试案例,如果需要顺序执行,需要在test后加上字母或数字来强迫它顺序执行,比如“test_a_mytest”
    定义测试方法的类:
    class TC_myTest < Test::Unit::TestCase
      def test_ myTestCase
        Watir code and assertion here...
      end
      def test_anotherTestCase
        Watir code and assertion here...
      end
      def test_aTestCase
        Watir code and assertion here...
      end
    end
    5.2.4使用Assertions
    Watir通过在一个asert覆写Watir方法支持assertions。
    assert(ie.contains_text("Reached test verification point.")
    5.2.5Setup and Teardown
    def setup
      fill in code that will run before every test case here...
    end
    def teardown
      fill in code that will run after every test case here...
    end
    6.Tips and Tricks
    Running Tests With the Browser Not Visible
    Run the tests with a "-b" option if you don't want the browser to be visible. ex. myTest.rb -b
  • ruby安装

    2011-06-15 16:21:41

    最近在学ruby,在这里记录下学习的过程,方便大家有需要的进行查阅,有问题也可以一起讨论。
     
    1、安装
    rubyinstaller-1.9.2-p180.exe
    netbeans-6.5.1-ml-ruby-windows.exe
    2、配置环境变量
    我的电脑——>点右键,高级,环境变量——>path:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Intel\DMIX;C:\Ruby192\bin;
    3、配置ruby平台
    工具——>ruby平台,添加平台,选择ruby安装bin目录下rubyw.exe
    4、选择项目名称,点右键,选择属性,选择运行,设置ruby平台的值。
  • Secure Sockets Layer

    2008-08-29 13:41:09

    加密套接字协议层(SSL)管理网络信息安全传输的常用协议。继SSL之后,最近出来了基于SSL的传输层安全协议(TLS)。SSL使用位于互联网的超文本传输协议(HTTP)以及传输控制协议(TCP)层之间的程序层,它是Microsoft和Netscape浏览器以及大多数网络服务产品的一部分。SLL由Netscape开发,它也赢得了Microsoft以及其它网络客户/服务程序开发者的支持,溶入传输层安全协议之后,成为实际的标准。  

    TLS和SSL是大多数网络浏览器以及网络服务器的集成部分。如果网站建立在支持SSL的服务器上,一定的网页可被认定为请求SSL访问。任何网络服务器可使用Netscape的SSLRef程序库。  

    TLS以及SSL不是互通的,然而,SSL客户程序可处理使用TLS发送的消息。

  • 一个老测试员对测试理解( 需要掌握哪些知识)

    2008-08-22 09:19:47

    一个老测试员对测试理解( 需要掌握哪些知识)
    1 测试人员必顺熟悉软件开发流程。
    测试需熟悉软件开发流程,重点掌握测试本身部分过程以及测试与各个阶段的接口,有哪些文档需要编写,编写的内容是什么。其它方面不需要很多细节都了解,那是QA和EPG的事。

    2 测试人员必顺熟悉产品所涉及的业务。
    测试人员主要的的测试还是功能测试,那怎么做好功能测试,在仔细、耐心的基础上还需要精通产品的业务。实际是往往项目组中的培训往不够的,我个人的经验是如果有条件能够参加需求调研的话是最好的。如果是产品化的产品有机会的最好去工程实施的一两次。

    3测试人员技术的要求

    测试技术的要求我就不多说了,大家关心的可能是开发工具,我个人认为测试人员必须精通一门比较大众化语言,如C、或JAVA,否则在测试驱动化测试时,就需要开发人员协助。以前我碰到这么一个需求“在个用户同时操作,一个用户插入十万条数据、一个用户UPDATE十万条数据,一个用户删除十万条数据”如果我们自己不能写点小程序,是很受制于人。还有必须对自己项目所使用的开发工具有所了解,要做到能安装、搭建、编译、调试问题(能找到错误点)。

    4测试人员对于工具
    现在网上测试工具很多,我看了很多人天天在说,学哪种好。我是根据测试不同需求去选一种比较大众化,适何目前情况的工具,比如果我就划分三种:测试管理、功能测试、性能测试。根据这三种去找适何的工具,学习并应用到项目里。

    5测试人员基本素质
    这点很重要,如果一个测试人员水平很高,但是他就是不做事,那有什么用。测试人员必须具备踏实、主动、仔细、钻研的素质。
    踏实:追求好的待遇是每个人目标,但是必须对自己目前这个岗位的工作需做好,要想工作时间想个几个分钟,晚上回去想个够/
    主动:寻找BUG要拿出追女(男)友的气势出来。
  • 黑盒测试(转)

    2008-08-21 09:26:33

    黑盒测试 (一)

    一、黑盒测试在快速应用开发(rad)环境中的重要作用

      软件测试方法一般分为两种:白盒测试与黑盒测试。其中,白盒测试又称为结构测试、逻辑驱动测试或基于程序本身的测试,着重于程序的内部结构及算法,通常不关心功能与性能指标。黑盒测试又被称为功能测试、数据驱动测试或基于规格说明的测试,实际上是站在最终用户的立场上,检验输入输出信息及系统性能指标是否符合规格说明书中有关功能需求及性能需求的规定。

      随着rad环境的发展,软件工程面临新的挑战,其中包括:

      ●应用系统的规模越来越庞大,结构越来越复杂;

      ●开发团队人员越来越多,分工越来越细;

      ●项目投资日益提高,导致投资风险增大。

      在这样一种背景下,软件质量面临着更大的危机,而解决问题的关键正是黑盒测试,可是由于传统的黑盒测试往往局限于手工测试,凭借工程人员的经验自发地进行,缺乏严格的测试管理机制,因而效果并不明显。

      在分发一个应用系统之前,若没有经过科学、周密的黑盒测试,就相当于将大量隐含的缺陷(defect)交付到最终用户手中,这对于开发团队自身、项目投资方及最终用户来说都是不负责任的表现,也将严重损害三方的利益。

      今天,软件的质量要求越来越受到重视,在对软件的质量监督中,黑盒测试起着重要的、不可替代的作用;而随着软件开发平台及软件设计思想的进步和发展,特别是rad技术的发展,对黑盒测试提出了更明确的要求,人们发现,必须遵循一定的测试理论,依赖于优秀的测试工具,才能进行科学、完备的测试。

      二、黑盒测试的操作步骤

      在传统的软件开发生命周期当中,测试工作往往被搁置到整个开发过程的后期进行,也就是说,当应用程序的编码工作已经基本完成,才开始进行测试,这样做的缺点在于:

      a)由于应用程序庞大而复杂,测试工作千头万绪,测试人员难以组织科学、全面的测试用例,从而大幅度提高了测试成本,并严重影响测试的全面性和有效性;

      b)由于缺陷所涉及的模块从开发到测试之间的时间间隔较长,使得程序员的修改和维护工作要付出更大的代价;

      c)由于受到分发日期的限制,测试工作往往是在忙碌中结束的,而将大量的缺陷遗留给最终用户,也就是说,真正的测试工作实际上是由最终用户来完成的。

      因此,为了保证测试工作科学、精确、全面、有序地进行,应该采取一边开发一边测试的策略,使得开发工作与测试工作平行进行,这也就是俗话所说的“越早测试越好”的概念。

      一套完整的测试应该由五个阶段组成:

      1.测试计划

      首先,根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求报告,即制订黑盒测试的最高标准,以后所有的测试工作都将围绕着测试需求来进行,符合测试需求的应用程序即是合格的,反之即是不合格的;同时,还要适当选择测试内容,合理安排测试人员、测试时间及测试资源等。

      2.测试设计

      将测试计划阶段制订的测试需求分解、细化为若干个可执行的测试过程,并为每个测试过程选择适当的测试用例(测试用例选择的好坏将直接影响到测试结果的有效性)。

      3.测试开发

      建立可重复使用的自动测试过程。

      4.测试执行

      执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理。测试执行一般由单元测试、组合测试、集成测试、系统联调及回归测试等步骤组成,测试人员应本着科学负责的态度,一步一个脚印地进行测试。

      5.测试评估

      结合量化的测试覆盖域及缺陷跟踪报告,对于应用软件的质量和开发团队的工作进度及工作效率进行综合评价。

      显然,黑盒测试只有严格按照步骤进行,才可能对应用程序的质量进行把关。然而,如果没有一种优秀的测试工具的帮助,单纯凭借手工测试,不但将耗费大量的人力、物力和财力,而且有很多测试工作是难以实现甚至是无法实现的。

      三、手工测试与自动测试的比较

      手工测试无法保证黑盒测试的科学性与严密性,这是因为:

      ●测试人员要负责大量文档、报表的制订和整理工作,会变得力不从心;

      ●受软件分发日期、开发成本及人员、资源等诸多方面因素的限制,难以进行全面的测试;

      ●如果修正缺陷所花费的时间相当长,回归测试将变得异常困难;

      ●对测试过程中发现的大量缺陷缺乏科学、有效的管理手段,责任变得含混不清,没有人能向决策层提供精确的数据以度量当前的工作进度及工作效率;

      ●反复测试带来的倦怠情绪及其他人为因素使得测试标准前后不一,测试花费的时间越长,测试的严格性也就越低;

      ●难以对不可视对象或对象的不可视属性进行测试。

      因此,自动测试成为最佳的解决方案。所谓自动测试,实际上是将大量的重复性工作交给计算机去完成,一个优秀的自动测试工具,不但可以满足科学测试的基本要求,而且可以节约大量的时间、成本、人员和资源,并且测试脚本可以被重复利用(包括被不同的项目所利用)。
  • 手机软件系统测试(转)

    2008-08-21 09:25:32

    手机软件系统测试

    系统测试方法分为:功能测试,一致性测试,性能测试,压力测试,容量测试,安全性测试,恢复性测试,备份测试,GUI测试,健壮性测试,兼容性测试,可用性测试,可安装性测试,文档测试,在线帮助测试以及数据转换测试等。

     从手机软件系统测试的角度分为:功能模块测试,交叉事件测试,压力测试,容量性能测试,性能测试和用户手册测试等。

      下面就以短消息为例来阐述,手机软件测试的一般方法和测试的要求,供大家参考。

    一.短消息[SMS]的基本功能测试

    1、短消息的基本功能:是指短消息的编辑,删除,保存,收发,显示,以及各种按钮等功能的正常实现。

    2、测试要求和执行:一般根据测试案例或软件本身的流程就可以完成短消息的基本功能测试。     

    二.短消息的交叉事件测试

    1、交叉测试:又叫事件或冲突测试,是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰的测试。例如通话过程中接收到短信或来响闹。应该以执行干扰的冲突事件不会导致手机死机或花屏等严重的问题出现为Pass的标准。

    2、测试要求和执行:干扰要恰到好处,准确,否则很难发掘出深层次的软件缺陷。

    三.短消息的压力性能测试

    1、压力测试:又叫边界值容错测试或极限负载测试,即测试过程中,已经达到某一软件功能的最大容量,边界值或最大的承载极限,仍然对其进行相关操作。例如连续进行短信的接收和发送,超过收件箱和PIM卡所能存储的最大的条数,仍然进行短消息的接收或发送,以检测软件在超常态条件下的表现,来评估用户能否接受。

    2、测试要求和执行:可以考虑进行自动化测试

    四.短消息的容量性能测试

    1、容量测试:又叫满记忆体测试,包括手机的用户可用内存和SIM/PIM卡的所有空间被完全使用的测试。此时再对可编辑的模块进行和存储空间有关的任何操作测试,如果软件的极限容量状态下处理不好,有可能导致死机或严重的花屏等问题的出现。

    2、测试要求和执行:可以考虑进行自动充满记忆体测试,要对不同品牌和不同容量大小的SIM/PIM卡进行测试

    五. 短消息的兼容性能测试

    兼容性测试:也就是不同品牌手机,不同网络,不同品牌和不同容量大小的SIM/PIM卡之间的互相兼容的测试,以短消息为例:中国电信的小灵通接收到从中国移动或中国联通GSM发来的短消息,接收,显示和回复功能是否正常等。

  • 我对软件测试职业发展的想法(转)

    2008-08-21 09:23:54

    我对软件测试职业发展的想法(转)

     最近一年,交了不少测试的朋友,听说过一位同事的经历,他做了三四年的测试,但,他对软件测试的积累还非常不够,做的事情,也一直是最低层的测试工作,工资和新手差不多,这让我很有感触!

       原因就是在我们一些国内的公司,虽然也开始注重测试了,但完全没有一个合理的测试流程,更别提什么测试驱动开发了~ 测试人员只是进行一些Ad-hoc的测试,测完了交交defect就算……

       版本控制也很混乱,开发的交个新版本过来,测试人员就测,测到一半时,又来一个新的版本……

       所以,我觉得,进入软件测试这一行的人,应该从以下几方面提高自己,不然,几年过去,遭遇很可能和他一样:

       (一)、编程能力。 这里的编程能力就是指你开发测试工具、测试脚本的能力,很难想像,纯手工的软件测试工作,你能有多大的发展,能希望别人怎么高看你一眼! 尽管,有人说,黑盒怎么了,做的好也不容易! 是的,如果你有能力,为什么不提高下编程能力呢??

       (二)、自动化工具的能力。 指你会使用QTP、QC、Loadrunner进行自动化测试的能力,包括你对整个项目比较清晰的计划与创建与维护脚本的能力。

       (三)、学好外语。一般学好英语、日语或其他什么语言,会有很大机会进入好点的外资公司,实话说,现在做测试的,还是在外资公司环境比较好,工资高不说,流程也很标准~~

        总之,我们做测试的,也应该注意加强自己的竞争力,不然,过几年,你经验的积累也只是草根,还不如一个刚从职业培训出来的51学员,想想看,你能接受和他们一样的薪水么??

  • 软件测试--职业规划(转)

    2008-08-21 09:12:28

    软件测试--职业规划

    每个工作三五年的人多少都会遇到瓶颈,要么是技术,要么是管理。没有一条路是可以既定的,都是摸索着前进,网上有专家的介绍,也有前辈们的总结。

    对软件测试这样一个新兴行业,在以前是算在软件开发一类的,现在大多公司都会独立出测试部门了,也就有了专职软件测试人员。职业规划一个很重要的点还要看社会环境,在中国大陆做软件开发的都是被认为吃青春饭,很多企业的职位也或多或少都如此设定,大多技术牛人最后都走向项目管理,虽然也许他不喜欢也不擅长,但为了未来为了薪水待遇很多时侯是必然之路。

    [软件测试质量保书上看来,也算世界通用的:

    1~2年,测试技能:熟悉整个测试过程及产品业务领域,学习和掌握自动化测试工具,学习测试自动化编程技术;开发和执行测试脚本,承担系统测试实施任务;掌握编程语言、操作系统、网络与数据库方面的技能。

    3~4年,测试过程:深入了解测试过程,掌握测试过程设计及改进,参与软件工作产品的同行评审;进一步了解产品业务领域,改进测试自动化编程技术;能指导初级测试工程师;加强编程语言、操作系统、网络与数据库方面的技能。

    4~5年,测试组织工作:管理1~3名测试工程师,担任任务估算、管理及进度控制;进一步培养在软件项目管理及支持工具方面的技能。

    5~6年,技术管理:管理4~8名测试工程师,提高任务估算、管理及进度控制能力,完成测试规划并制定测试计划;研究测试的技术手段,保持使用项目管理及支持工具的技能;用大量时间为其他测试工程师提供技术及过程方面的指导;开始与客户打交道并做演示推介。

    6~12年,测试管理:管理8名以上测试工程师,负责一个或多个项目的测试工作;与客户打交道并做演示推介;保持使用项目管理及支持工具的技能。

      这个不适应于国内,也许适合老美他们。不过我们可以从中了解软件测试人员需要具备哪些能力。国内最重要的是第一步你入了哪一行业,业务是什么?软件测试也如此,web测试?手机测试?手工还是自动?…

    废话一堆之后来摸索软件测试,主要还是寻找自己的未来道路,但要记住的是好职业不是规划出来的,顾问们都是参谋者,总结者也仅是经验,自己的人生规划是自己的选择和实践的过程,需要适时代、市场变化而变化的。可以分步做

    Step1:分析自己的优劣势,包括自己的专业技能以及语言能力,业务能力,管理能力

    Step2:发掘自己的兴趣,喜欢和人打交道还是喜欢和机器打交道,这只是个偏向问题,人的沟通表达能力是最起码的

    Step3:分析市场需求,看看市场上需要什么样的人才以及未来需要什么人才

    Step4:结合自己的优劣势给自己定位,设定目标,大公司还是小公司,国企还是外企....

    Step5:为自己的目标努力,记住最重要是坚持!

  • 我的软件测试空间开通了!

    2008-08-20 16:59:41

      我的软件测试空间开通了!

      从这里开始!

784/4<1234
Open Toolbar