海是我向往的地方,吸纳和咆哮是他的魅力!!!

发布新日志

  • Windows下使用Jconsole远程监控Linux系统中java服务器资源占用情况

    qicyt1812 发布于 2009-06-22 15:37:59

    1、首先需要停止正在运行的服务:resin-XXX stop

     

    2、然后在Linux的服务器启动项中添加如下信息:

    -Djava.rmi.server.hostname=192.168.1.122

    -Dcom.sun.management.jmxremote  

    -Dcom.sun.management.jmxremote.port=911
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false


    比如说我需要了解在压力测试过程中Linux系统中resin服务器的资源占用情况,那么我就可以在resin的启动项中加入上述信息,这样通过本机WindowsJDKJconsole来监控了。

     

    其中第一个参数可以用来设置欲连接的Linux机器的IP地址,该项必须设置,否则远程连接会因为解析到127.0.0.1出现连接失败的情况。

    如果不设置该项,也可以通过修改Linux/etc/hosts文件,使hostname -i 指向正确的IP,所以还是该选项更为方便。

     

    第三个参数是设置欲连接到Linux机器上的端口号,在不跟Linux中现有端口冲突的情况下,可随意设置该端口

     

    3、重新启动服务resin-XXX start


    4、最后双击本机..\jdk1.6\bin\jconsole.exe,启动Jconsole监控界面,在远程连接处输入:192.168.1.122:911,输入Linux主机的用户名和密码,连接即可,因为第2点中的第5-Dcom.sun.management.jmxremote.authenticate=false,设置成了false,所以如果不知道Linux机器的用户名和密码,也可以不输入,直接连接

     

    综上所述,该问题就解决啦,用户Jconsole来监控java服务器的资源占用情况,非常方便直观高效。


    linux下Tomcat配置:

    在tomcat的bin目录下catalina.sh启动项中JAVA_OPTS被正式调用之前,添加如下代

    码:

    JAVA_OPTS="$JAVA_OPTS -server -Xms128m -Xmx512m -XX:PermSize=128m -

    XX:MaxNewSize=256m -Djava.rmi.server.hostname=192.168.1.160 -

    Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=911 -

    Dcom.sun.management.jmxremote.ssl=false -

    Dcom.sun.management.jmxremote.authenticate=false"

    加入没有使用vi,而是用UE编辑,则保存需要转码(FILE->转换->DOS TO UNIX)的形式并保存,可解决文件编码不对引起的bash

    脚本无法执行的问题
    [root@localhost bin]# ./startup.sh
    ./startup.sh: /usr/local/tomcat-6.0.29/bin/catalina.sh: /bin/sh^M: bad

    interpreter: 没有那个文件或目录
    ./startup.sh: line 64: /usr/local/tomcat-6.0.29/bin/catalina.sh: 成功

    重启tomcat

     

  • Linux下mysql的安装与配置

    qicyt1812 发布于 2009-07-29 20:08:45

    1、下载mysql文件,本文下载的是免安装文件:mysql-5.0.83-linux-i686-glibc23.tar.gz

    2、登录Linux,复制文件到/user/local/下
    [root@test ~]# cp /tools/mysql-5.0.83-linux-i686-glibc23.tar.gz /usr/local/
    [root@test ~]# cd /usr/local
    [root@test local]# ll
    total 120904
    -rwxr-Sr-t 1 root root 123603074 Jul 29 18:57 mysql-5.0.83-linux-i686-glibc23.tar.gz

    3、因为上面的文件带有一个复位S权限,所以使用chmod变更文件权限
    [root@test local]# chmod 755 mysql-5.0.83-linux-i686-glibc23.tar.gz
    [root@test local]# ll
    total 120904
    -rwxr-xr-x 1 root root 123603074 Jul 29 18:57 mysql-5.0.83-linux-i686-glibc23.tar.gz

    4、解压该tar.gz文件
    [root@test local]# tar zvxf mysql-5.0.83-linux-i686-glibc23.tar.gz
    mysql-5.0.83-linux-i686-glibc23/
    mysql-5.0.83-linux-i686-glibc23/bin/
    mysql-5.0.83-linux-i686-glibc23/bin/comp_err
    mysql-5.0.83-linux-i686-glibc23/bin/replace
    mysql-5.0.83-linux-i686-glibc23/bin/perror
    mysql-5.0.83-linux-i686-glibc23/bin/resolveip
    mysql-5.0.83-linux-i686-glibc23/bin/my_print_defaults
    .
    .
    .
    [root@test local]# ll
    total 120908
    drwxr-xr-x 14 7155 wheel      4096 May 30 05:24 mysql-5.0.83-linux-i686-glibc23
    -rwxr-xr-x  1 root root  123603074 Jul 29 18:57 mysql-5.0.83-linux-i686-glibc23.tar.gz

    5、删除源文件tar.gz
    [root@test local]# rm -rf mysql-5.0.83-linux-i686-glibc23.tar.gz

    6、建立符号链接,如果以后有新版本的MySQL 的话,你可以仅仅将源码解压到新
    的路径,然后重新做一个符号链接就可以了。这样非常方便,数据也更加安全。
    [root@test local]# ln -s mysql-5.0.83-linux-i686-glibc23/ mysql
    [root@test local]# ll
    total 76
    lrwxrwxrwx  1 root root    32 Jul 29 19:04 mysql -> mysql-5.0.83-linux-i686-glibc23/
    drwxr-xr-x 14 7155 wheel 4096 May 30 05:24 mysql-5.0.83-linux-i686-glibc23

    7、添加用于启动MySQL 的用户及用户组
    [root@test local]# groupadd mysql
    [root@test local]# useradd -g mysql mysql

    8、初始化授权表
    [root@test mysql]# scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
    Installing MySQL system tables...
    OK
    Filling help tables...
    OK
    .
    .
    .

    9、设置mysql和root 的访问权限

    设定root能访问/usr/local/mysql   执行命令:[root@test local]# chown -R root .

    设定mysql能访问/usr/local/mysql/ 执行命令:[root@test local]# chown -R mysql .

    设定mysql组能访问/usr/local/mysql 执行命令: [root@test local]# chgrp -R mysql .

    或者

    [root@test local]# cd /usr/local
    [root@test local]# chgrp –R mysql mysql-5.0.83-linux-i686-glibc23
    [root@test local]# chgrp –R mysql .
    [root@test local]# chown -R mysql mysql-5.0.83-linux-i686-glibc23/data
    [root@test local]# chown -R mysql mysql/data

    10、创建bin的符号链接
    [root@test local]# ln -s /usr/local/mysql/bin/* /usr/local/bin/
    [root@test local]# ll
    total 76
    drwxr-xr-x  2 root  mysql 4096 Jul 29 19:18 bin
    lrwxrwxrwx  1 mysql mysql   32 Jul 29 19:04 mysql -> mysql-5.0.83-linux-i686-glibc23/
    drwxr-xr-x 14 mysql mysql 4096 May 30 05:24 mysql-5.0.83-linux-i686-glibc23

    11、复制mysql配置文件以及启动服务文件
    [root@test local]]# cp -r /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
    cp: overwrite `/etc/my.cnf'? y
    [root@test local]]# cp /usr/local/mysql/support-files/mysql.server  /etc/rc.d/init.d/mysqld

    12、设置开机自启动

    [root@test support-files]# chkconfig  --add mysqld
    [root@test support-files]# chkconfig  --level 2345 mysqld on

    13、运行mysql:
    [root@test support-files]# /usr/local/mysql/bin/mysqld_safe –user=mysql &
    [1] 5923
    [root@test support-files]# Starting mysqld daemon with databases from /usr/local/mysql/data
    STOPPING server from pid file /usr/local/mysql/data/test.pid
    090729 19:26:44  mysqld ended
    出现上述信息表示启动成功

    14、启动mysqld服务
    [root@test mysql]# service mysqld start
    Starting MySQL.[  OK  ]
    出现ok表示启动成功

    15、检测mysql是否成功启动可以使用如下命令
    [root@test mysql]# /usr/local/mysql/bin/mysqladmin  ping
    mysqld is alive
    [root@test mysql]# /usr/local/mysql/bin/mysqladmin  version
    /usr/local/mysql/bin/mysqladmin  Ver 8.41 Distrib 5.0.83, for pc-linux-gnu on i686
    Copyright (C) 2000-2006 MySQL AB
    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL license

    Server version          5.0.83-log
    Protocol version        10
    Connection              Localhost via UNIX socket
    UNIX socket             /tmp/mysql.sock
    Uptime:                 1 min 20 sec

    Threads: 1  Questions: 2  Slow queries: 0  Opens: 12  Flush tables: 1  Open tables: 6  Queries per second avg: 0.025

    16、设置登录mysql账户的密码:
    [root@test mysql]# /usr/local/mysql/bin/mysqladmin -u root password "manager"

    17、登录mysql

    [root@test ~]# mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 2
    Server version: 5.0.83-log MySQL Community Server (GPL)

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql> exit
    Bye

    以上信息表示登录成功

    18、如果在执行第17步的时候出现错误,很可能是因为路径问题,这时就可以设置PATH环境变量,如果可以直接登录成功就无需该步骤了

    [root@test mysql]# vi /etc/profile
    HOSTNAME=`/bin/hostname`
    HISTSIZE=1000
    JAVA_HOME=/usr/java/jdk1.6.0_14
    MYSQL_HOME=/usr/local/bin
    PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$JAVA_HOME/bin
    CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
    if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
        INPUTRC=/etc/inputrc
    fi

    export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC JAVA_HOME CLASSPATH MYSQL_HOME

  • Linux实用命令全集 - 之一

    qicyt1812 发布于 2009-02-19 17:02:53Top 1 Digest 1

    题记:

       首先感谢鸟哥,提供了这么好看的《鸟哥的Linux私房菜》,因为有了这本书猪猪才得以系统的整理出这些命令,再次感谢!!!基本上猪猪遇到命令就整理下来了,并且几乎每个命令都赋予了实例,可能还存在很多不足,但这些都是根据猪猪在使用过程中的心得体会整理出来的,希望能对大家有所帮助,发言完毕,over

    正文:

    1. linux如何强制踢出登录用户

    $ w         显示当前登录用户

    13:15:06 up 1:25, 2 users, load average: 0.01, 0.01, 0.00

    USER    TTY      FROM          LOGIN@    IDLE    JCPU    PCPU WHAT

    syx     pts/0    xxx.xxx.xxx.xxx    00:10    0.00s 0.03s 0.01s w

    root    pts/1    xxx.xxx.xxx.xxx    00:20    1:25    0.34s 0.34s -bash

     

    # pkill -KILL -t pts/0          syx强制踢出

     

    2.linux如何修改主机名

    有人说使用hostname 主机名来修改,这只是暂时的,重启后将恢

    复到原来的主机名

    也有人说修改/etc/hosts文件,其实这个文件里的主机名只是提

    供给dns解析的.如果用不上dns,只需要修改主机名,那修改是这

    个没用的

    应该修改etc/sysconfig/network文件里的主机名.

     

    NETWORKING=yes

    HOSTNAME=主机名

     

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

    记得重启!!!

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

     

    完整步骤:

    第一步: #hostname oratest

    第二步: 修改/etc/sysconfig/network中的hostname

    第三步: 修改/etc/hosts文件

     

    3.linux创建、删除用户的命令是什么

    LINUX创建用户的命令

    # useradd -g group_name  -d /home/home_dir -s /etc/bash -m username p password u UID r

    注解:-g 所属组 -d 家目录 -s 所用的SHELL u 用户代号,如

    果为0,表示为管理员账户,普通用户的账号UID一般在500以上

    删除用户命令

    #userdel -r username

     

    4.修改用户密码命令

    #passwd   可以修改用户密码

     

    5.linux下切换用户命令

    #su username    #切换用户 此处的username可以是root用户,

    也可以是普通用户

    root用户切换到普通用户不需要密码

    从普通用户切换到root用户需要密码

     

    6.linux下更改系统时间命令

    一般使用“date -s”命令来修改系统时间。比如:

    #date -s 07/26/2005   将系统时间设定成2005726

    #date -s 11:12:00     将系统时间设定成上午午11120

    (注意,这里说的是系统时间,是linux由操作系统维护的。)

    在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变

    量中,以后修改时间通过修改系统时间实现。为了保持系统时间

    CMOS时间的一致性,Linux每隔一段时间会将系统时间写入

    CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在

    我们执行date -s后,如果马上重起机器,修改时间就有可能没

    有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执

    行如下命令,强制把系统时间写入CMOS

    #clock -w

     

    7.cal 显示日历

    # cal         显示当年当月的日历

    # cal 2009    显示2009年整年的日历

    # cal 3 2009  显示20093月的日历

     

    8.bc 计算器

    # bc          开始使用计算器

    # scale = 3   设定计算结果的小数位数,此处的3表示小数点

    后显示3

    # 1+2+3      (回车)

    # 5          (计算结果)

    # quit        退出计算器

     

    9.多用【Tab】键

    # ls -al .bashtab】【tab】按两次【tab】键,该目录下面

    所有含 .bash 的文件名称都会被显示出来

     

    10.man info 在线帮助

    #maninfo command   command代表所有的命令

     

  • LINUX中使用uptime监视系统状态

    qicyt1812 发布于 2009-06-09 13:49:47Top 1

    LINUX中使用uptime监视系统状态

    命令:
    uptime

    输出:
    09:05:20 up 5 min,2 users,Load Average:1.07,1.19,1.20

    说明:

    1、该输出中有用的信息是Load Average的三个负载平均值,分别表示前1分钟、5分钟和15分钟内的负载平均值

    2、观察负载平均值的变化趋势非常重要,本输出中的三个平均值几乎是恒定的,表示系统正常。如果系统出现问题,那么其负载平均值会持续下降

    3、在采取一定措施(对系统和用户会有一定影响)之前必须先观察一段时间,也许在使用ps命令寻找错误时,系统会自动的恢复到正常状态

    4、局限性:不区分高优先级和低优先级的作业,尽管高优先级对系统的影响会更大一些

    5、通过Load Average等数据可以反映出系统问题。若系统出现问题,还需要做进一步的调查分析。例如:当系统负载增大时,说明多条命令被堵塞在内存和I/O系统中,这时就需要调查系统有关调页、交换和磁盘利用率的有关信息

    6、据经验值,一般大型的LINUX系统中,负载数为2和3左右表示轻载,5和6左右为中等程度负载,10以上为过载,这个可以根据实际情况确定系统中划分轻载或负载的界限


  • Linux下jdk的安装

    qicyt1812 发布于 2009-07-29 11:20:42Top 1

    1、 以root身份登录系统

    2、 到java.sun.com去下载JDK1.6 for LINUX文件-- jdk-6u14-linux-i586.bin

    3、 通过chmod +x jdk-6u14-linux-i586.bin命令使其获得可执行权限

    4、 终端下进入存放jdk-6u14-linux-i586.bin的目录,例如:/usr/java
        # ./jdk-6u14-linux-i586.bin (管理员(root用户)安装命令)
        $ sudo -s ./jdk-6u14-linux-i586.bin (普通用户安装命令)
        一路回车,直到询问是否安装,输入yes回车

    5、 安装完毕,JDK安装在/usr/java/目录下

    6、 设置环境变量(写入/etc/profile中)

         JAVA_HOME=/usr/java/jdk1.6.0_14
         PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
         CLASSPATH=.:$JAVA_HOME/lib;$JAVA_HOME/jre/lib:$CLASSPATH
         export JAVA_HOME PATH CLASSPTH

    7、 重启机器 reboot

    8、 键入java -version 如果出现相关JDK版本信息,证明成功.

    9、 测试,在/usr/java下创建vi HelloWorld.java文件
        public class HelloWorld{
           public static void main(String[] args){
              System.out.println("Hello World! This is my first  Linux jdk test class");
           }
         }
        javac HelloWorld.java   编译成class文件
        java  HelloWorld        执行class文件
    如果出现Hello World! This is my first Linux jdk test class,就表示JDK已经完成安装

  • Linux实用命令全集 - 之二

    qicyt1812 发布于 2009-02-19 17:10:20Top 2 Digest 1

    11. 有用的系统命令

    #who             查看当前在线用户

    #netstat a     查看网络联机状态

    #ps aux          查看背景执行的程序

     

    12. 关机命令

    #sync            rebootshutdown之前最好做一下sync

                     将没来得及保存的数据写入硬盘,防止数据

                     丢失,最好多执行几次该指令,只有root

                     户可以执行

    #shutdown h now     结束程序后立刻关机

    #reboot          重新启动

    #halt            关机

    #poweroff        关机并关掉电源

    13. 更改密码命令

    # passwd          更改密码

     

    14. ls al命令

    # ls al           显示所有文件(包含隐藏文件:文件名称

                        前面有一个.号的文件)及其属性,相当

                        windows中以详细信息显示文件列表

    显示结果如下:

    total 162

    drwxr-xr-x  23     root root  4096 Feb 18 09:11 .

    drwxr-xr-x  23     root root  4096 Feb 18 09:11 ..

    -rw-r--r--   1     root root     0 Feb 18 09:11 .autofsck

    -rw-r--r--   1     root root     0 Dec  3 20:44 .autorelabel

    文件属性  文件数  拥有者 群组 文件大小(创建)最后修改日期 文件名称

    drwxr-xr-x 介绍:

    第一个字符(或是d l b c)

    d 代表目录 

    - 代表档案 

    l 代表链接文档(link file)

    b代表装置文件里面的可供储存的接口设备

    c装置文件里面的串行端口设备,如鼠标、键盘等

    后面的字符(3rwx组合,分别代表拥有者、群组、其他人对该文件的操作权限)

    r 可读 | w 可写 | x 可执行

    比如第一行中文件的属性drwxr-xr-x 表示:这是一个目录,文件拥有者(该处为root)具有可读可写可执行的权限,群组成员具有可读可执行的权限,其他人也具有可读可执行的权限

    (在Linux中,凡是具有x属性的文件都是可执行文件,跟文件后

    缀无关,与windows不同)

     

    15. 改变档案所属群组命令

    # chgrp  group_name  file_namedir_name 语法:chgrp 群组名称  文件或目录名

    (其中 group_name必须是系统中已经存在的)

    例: # ls l

         drwxr-xr-x  2 root root      4096 08-26 14:47 testDoc   

         drwxr-xr-x  2 root testGroup 4096 08-26 14:47 ACE   

    # chgrp testGroup testDoc  testDoc文件的所属群组修改为testGroup (存在)

    # ls l

    drwxr-xr-x  2 root testGroup  4096 08-26 14:47 testDoc   

    drwxr-xr-x  2 root testGroup  4096 08-26 14:47 ACE   

     

    16. 改变档案所属人命令

    # chown  owner_name file_name(dir_name)     语法:chown 所有者 文件或目录名

    # chown  owner_name:group_name file_name(dir_name)

    语法:chown 所有者:群组名称 文件或目录名

    例:#ls l

    drwxr-xr-x  2 root root      4096 08-26 14:47 testDoc   

    drwxr-xr-x  2 root testGroup 4096 08-26 14:47 ACE 

    #chown tester testDoc     testDoc文件的所有者修改为tester

    #ls l

    drwxr-xr-x  2 tester  root      4096 08-26 14:47 testDoc   

    drwxr-xr-x  2 root    testGroup 4096 08-26 14:47 ACE例:#ls l

    drwxr-xr-x  2 root root      4096 08-26 14:47 testDoc   

    drwxr-xr-x  2 root testGroup 4096 08-26 14:47 ACE 

    #chown tester:testGroup testDoc

    testDoc文件的所有者修改为tester,将群组修改为testGroup

    drwxr-xr-x  2 tester testGroup 4096 08-26 14:47 testDoc   

    drwxr-xr-x  2 root testGroup 4096 08-26 14:47 ACE 

       其中owner_namegroup_name必须是已经存在的)

  • Linux实用命令全集 - 之三

    qicyt1812 发布于 2009-02-20 11:42:46Top 3 Digest 1

    17.     改变档案的属性、SUID等等命令

    #chmod  sum_u|sum_g|sum_o  file_name(dir_name)  

    语法:chmod 所有者权限之和|群组权限之和|其他使用者权限之和 文件或目录名      其中sum_u = rwx = 4+2+1 =7 sum_o = rwx = 4+2+1 =7 sum_g = rwx = 4+2+1 =7

    r|w|x 是所有者、群组、其他使用者的使用权限,用ls l可以查看的到,r为可读,数字代号为4w为可写,数字代号为2x为可执行,数字代号为1

    例:#ls l

        drwxr-xr-x  2 root root  4096 08-26 14:47 testDoc   

        drwxr-xr-x  2 root testGroup 4096 08-26 14:47 ACE  

    对于testDoc是一个目录,他的所有者使用权限为rwx,对应代号为4+2+1=7群组使用权限为r-x,对应代号为4+0+1=5,其他使用者的使用权限为r-x,对应代号为4+0+1=5 所以目前testDoc的使用权限可以表示为755,如果想把群组和其他使用者的权限开放,群组权限为rwx,对应代号为4+2+1=7,其他使用者权限为rwx,对应代号为4+2+1=7

    也就是想修改成777,可以使用如下语句

         #chmod 777 testDoc 

         #ls l

         drwxrwxrwx  2 root root      4096 08-26 14:47 testDoc   

         drwxr-xr-x  2 root testGroup 4096 08-26 14:47 ACE

       如果想修改一个目录,并且目录下面的所有的子目录和文件也一并修改,就可以

       用chmod R 777 testDoc

     

    因为一个文档或目录有所有者(user:简称u)、群组(group:简称g)、其他使用者(other:简称o),表示这三者都拥有某属性时可以用所有人(all:简称a)如下表第2列;第234列的参数可以根据需要随意组合,下面进行用例讲解

    chmod

    u

    +
    -
    =

    r
    w
    x

    档案或目录名

    g

    o

    a

    例:#ls l

        drwxr-xr-x  2 root root      4096 08-26 14:47 testDoc   

        drwxr-xr-x  2 root testGroup 4096 08-26 14:47 ACE 

         对于testDoc目录来说,所有者具有rwx的权限,群组有rx权限,其他使用者具有r

         权限。

    如果想将该目录属性修改为所有者具有rwx的权限,群组有rw的权限,其他使用者有rw的权限,则需要进行如下操作:

         #chmod u=rwx,go=rw testDoc  (注:u=rwx,go=rw之间用逗号(,)间隔,不是空格)

    drwxrw-rw-  2 root root      4096 08-26 14:47 testDoc     

    drwxr-xr-x  2 root testGroup 4096 08-26 14:47 ACE

     

    接上面,如果想把群组的权限设置为rwx,把其他组的权限设置为r,需进行如下操作:

    #chmod g+x,o-w testDoc

    drwxrwxr--  2 root root      4096 08-26 14:47 testDoc   

    drwxr-xr-x  2 root testGroup 4096 08-26 14:47 ACE

    继续,如果想取消所有用户的写(w)权限,需进行如下操作:

    #chmod a-w testDoc

    dr-xr-xr--  2 root root      4096 08-26 14:47 testDoc   

    drwxr-xr-x  2 root testGroup 4096 08-26 14:47 ACE

     

  • http和https的区别

    ilaria 发布于 2009-06-07 23:03:19

    在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更加安全。

    Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。
    http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    http的连接很简单,是无状态的,...

    HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议
    要比http协议安全
     
    详细介绍:
     
    HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议
    它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。
    它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。

    HTTPS和HTTP的区别:
    https协议需要到ca(CA即证书管理机构)申请证书,一般免费证书很少,需要交费。
    http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
    http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
    http的连接很简单,是无状态的
    HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全

    HTTPS解决的问题:
    1 . 信任主机的问题. 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书. 改证书只有用于对应的server 的时候,客户度才信任次主机. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue 还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server.
    2 . 通讯过程中的数据的泄密和被窜改
    1. 一般意义上的https, 就是 server 有一个证书.
    a) 主要目的是保证server 就是他声称的server. 这个跟第一点一样.
    b) 服务端和客户端之间的所有通讯,都是加密的.
    i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的握手过程.
    ii. 加下来所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥. 当然窜改也就没有什么意义了.

    2. 少许对客户端有要求的情况下,会要求客户端也必须有一个证书.
    a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份. 应为个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份.
    b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体.

    HTTPS 一定是繁琐的.
    a) 本来简单的http协议,一个get一个response. 由于https 要还密钥和确认加密算法的需要.单握手就需要6/7 个往返.
    i. 任何应用中,过多的round trip 肯定影响性能.
    b) 接下来才是具体的http协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密.
    i. 尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL 芯片. 如果CPU 信能比较低的话,肯定会降低性能,从而不能serve 更多的请求.
    ii. 加密后数据量的影响. 所以,才会出现那么多的安全认证提示
    trackback:http://www.51testing.com/?uid-77325-action-spacelist-type-blog-view-track
  • Restore system image on Mac

    ilaria 发布于 2009-06-18 13:43:36

    From the desktop menu, click Go-> Utilities->Disk Utility.app

    In the "Disk Utility"window,

    1. select the Image in the left column and click on Images > Scan for restore... in the desktop menu bar, it will take care of it for you. After that you can perform. a restore as you were trying to do.

    2.select the disk you want to restore the image from the lest column, click "Restore" button from tht right block

    3.click "image" button to select the source image

    4.drag the destination disk from the left column to the "destination" textblock

    5.check "Erase destination", click "Restore" to start the restoration

     

  • 利用本地dmg文件安装Mac系统

    ilaria 发布于 2009-06-22 12:44:50

       对于拷贝到本地的Mac系统安装文件,无法通过直接点击进行安装。需要先将其restore到一个分区(以E盘为例)。该restore的过程与回复系统镜像相同。待restore完成后,及将原来的E盘制成了Mac OS X Install DVD.点击该虚拟的安装盘,即可进行常规的从光盘安装系统。

       对于Snow Leapord(Mac 10.6)的安装,安装完成后桌面上没有任何文件,也没有其他系统盘的盘符,这是可通过desktop Menu->Finder->Preference,勾选上“Hard Disks”,则其余的盘符就会显示在桌面上了。

       如果逐出某些盘,则可邮件点击该盘符, 点击Eject"Mac OS X10.5", 则该盘将会消失,该盘中的10.5的系统也将不可用。要恢复该盘及其相应系统的可用性,可采用如下操作:desktop Menu->Go->Utilities->Disk Utility,在Disk Utility中,Eject后的盘符是灰色的,右键点击该盘符,点击Mount"Mac OS X10.5"即可。

  • 更改Windows Server 2003企业版IE的安全级别

    ilaria 发布于 2009-06-23 15:43:34

        由于Windows Server 2003是微软为服务器设计的操作系统,所以微软认为使用服务器进行Internet浏览会增加服务器遭受潜在安全攻击的可能性,因此在默认设置下,Windows Server 2003系统启用了系统内的Internet Explorer增强安全配置。在这种安全设置之下,可以降低服务器遭受潜在安全攻击的可能性,但同时该设置将使部分网页无法正常显示,并且在浏览的过程中经常会发生需要将目标网站加入到信任站点列表后才能够访问的问题,个人用户使用起来会非常不便,因此我们需要改变这项安全设置。 

    如果您决定不使用Internet Explorer增强的安全配置,则可通过“开始|控制面板|添加或删除程序”功能,在“添加或删除程序”对话框中单击“添加/删除Windows组件”。在弹出对话框中列出的Windows组件中清除“Internet Explorer 增强的安全配置”的选中状态,然后单击完成,就可以在重启动Internet Explorer浏览器后使增强的安全设置失效。

    如果您想保留增强的安全设置功能,而又希望尽量减少它带来的不便,那么可以在打开浏览器时弹出“系统已启动增强的安全设置”警告对话框时,选中左下角的“以后不显示这个信息”对话框来避免每次转到新的网页都收到一次警告。

    或者,您也可以点击“开始|控制面板|Internet选项”,在“Internet选项”对话框中单击“安全”选项卡,拉动滑块将Internet、本地Intranet、受信任的站点或受限制站点等区域按照您的需要进行设置
  • XP上安装IIS [转]

    ilaria 发布于 2009-07-01 21:02:45

    1.确认计算的名字我的电脑->右键属性->计算机名->确认计算机的名字,最好不是特长的那一种。
    2.如果是完整版的xp在控制面板->添加删除程序->添加删除windows组件->选中IIS后下一步安装->下一步即可。
    3.如果是简版的xp那一种,安装的时候问题可就多了。一般要经过一番苦战。


    3.1.首先开始->运行->进入cmd模式下运行以下命令
    Regsvr32 urlmon.dll
    Regsvr32 actxprxy.dll
    Regsvr32 shdocvw.dll
    Regsvr32 oleaut32.dll
    3.2.完事之后可以装IIS了,但是你发现在 添加删除windows组件竞然没有IIS安装的选项,那怎么安装呀。按下以方法来吧。
    3.2.1.下载IIS5.1(在我的附件中有呀)
    3.2.2.在运行中输入"c:\windows\inf\sysoc.inf",系统会自动使用记事本打开sysoc.inf这个文件。
    在sysoc.inf中找到"[Components]"这一段,并继续找到类似"iis=iis.dll,OcEntry,iis.inf,hide,7"的一
    行字,把这一行替换为"iis=iis.dll,OcEntry,iis.inf,,7"。之后保存并关闭,如果没有这句话,那么直接把后面这一行加在最后即可以。


    3.2.3.把附件两个文件IIS.DL_和IIS.IN_拷贝到一个临时的目录例如c:\temp执行
      EXPAND IIS.DL_ IIS.DLL
      EXPAND IIS.IN_ IIS.INF
      当然也可以用解压软件把两个文件的后缀都改为CAB,全部解压。
      解出IIS.DLL及IIS.INF两个文件,将IIS.INF复制到C:\WINDOWS\INF目录下,将IIS.DLL 复制到C:\WINDOWS\SYSTEM32\SETUP目录下.
    3.2.4.现在,你可以再到开始->设置->控制面板->添加或删除程序->添加/删除Windows组件,哈哈,IIS安装出现了。
    3.2.5.按第二步的操作开始安装,在安装过程中会出现寻找文件路径的问题,当然,在附件中有iis5.1,直接选中这个路径,一共三次提示,下一步吧。
    4.IIS终于装完了。在控制面板->管理工具->internet->信息服务->打开网站->默认网站->IIS help->在右侧浏览区域内
    右键浏览网页,如果弹出正确的结果。ok,恭喜,你成功了。
    4.1如果不成功,那你还得麻烦。要经过以下的步骤 。
    在cmd下执行
    cd %windir%\system32\inetsrv

    rundll32 wamreg.dll, CreateIISPackage
    regsvr32 asptxn.dll


    4.2按下面步骤执行。
    控制面板->管理工具->组件服务 控制台根目录->组件服务->计算机->我的电脑->COM+应用程序 ,找到 IIS Out-Of-Process Pooled Applications 鼠标右键 属性->标识->把“下列用户”调整为“系统用户-交互式用户-当前已登录的用户”。然后点“确定”,再鼠标右键“属性”->“启动”


    4.3如果再访问网站IIS help测试的话,弹出密码要求的话。按下面步骤来进行设置 。默认WEB站点”的右键->转到“目录安全性”选项卡,点“匿名访问和验证控制”的“编辑”按钮,回弹出匿名方法新窗口,确保“匿名访问”和“集成windows身份验证前的”对号要勾上,将“允许IIS控制密码”前面的勾去掉,
    如果弹出确认密码后输入正确的密码,当然,匿名的用户必须是window的正确用户和密码,然后一路确定返回即可。
    你新发布网站的时候也要使用以上的设置。


    5.装.net framework,装数据库,然后你就可以防问asp的网站了。


  • 从瀑布模型、极限编程到敏捷开发[转]

    ilaria 发布于 2009-07-02 10:46:46

    【引自Jack zhai的博客】软件开发是一种对人类智慧的管理,对人大脑思维的“工厂化”管理。人是有感情的、有情绪的、变化的、相对独立的工作单元,这与冰冷的机器是不可比的,所以在中国的历史上,管理人是最难的工作;“学而优则仕”的观点就是让最聪明的人应该选出来做官,做官就是管理人的。软件开发不仅是代码编程,而是人员的有效组织,如何既发挥人的主观能动性,避免情绪变化对工作的影响,又可以让大家有效的交流,让多个大脑的思路统一,快速完成目标呢?多年来软件企业的管理者一直在不断地探索。

    另外,有一个问题一直是软件开发管理人员的心病:软件是工具,开发的是客户业务的应用,但客户不了解软件,开发者不了解业务,如何有效沟通是软件质量的重大障碍。把开发者变成客户业务的专家是个没有办法的办法,让软件企业付出的代价也是昂贵的。

    瀑布模型、极限编程、敏捷开发是有代表性的开发模式,在对开发者、客户、最终的产品的关注上的变化,体现了软件开发管理者在管理模式上的变化。

    一、瀑布开发

    瀑布模型(Waterfall Model)是Royce在1970年提出的,他把大型软件开发分为:分析与编程,象工厂流水线一样把软件开发过程分成各种工序,并且每个工序可以根据软件产品的规模、参与人员的多少进一步细分成更细的工序。该模型非常符合软件工程学的分层设计思路,所以成为软件开发企业使用最多的开发模型。

    图1

    瀑布模型的特点:

    1、强调文档,前一个阶段的输出就是下一个阶段的输入,文档是个阶段衔接的唯一信息。所以很多开发人员好象是在开发文档,而不是开发软件,因为要到开发的后期,才可以看到软件的“模样”。
    2、没有迭代与反馈。瀑布模型对反馈没有涉及,所以对变化的客户需求非常不容易适应,瀑布就意味着没有回头路。
    3、管理人员喜欢瀑布模型的原因是把文档理解为开发的速度,可以方便地界定不同阶段的里程碑。

    瀑布模型的用户很多,也有一些反对的意见:

    第一、瀑布模型不适合客户需求不断变化的软件开发,尤其是客户的业务管理的软件,业务随着市场变化,而软件初期的设计可能已经大大变化,而后期的需求更改成本是开始的10倍基数。在ERP盛行的软件市场里,一方面市场带动需求变化,另一方面初期客户对需求描述不清楚,都为瀑布模型的使用团队带来困难。

    第二、瀑布模型是一种软件文档的开发,把开发者变成流水线上的机器,大量重复性的工作让编程人员提不起兴趣,工作很枯燥,没有激情,编程成了一种没有创意的机械劳动,这让一向以高科技为标志的高级程序人员大为恼火。

    在这种背景下,极限编程(extreme Programming, XP)带来了新鲜的空气。

    二、极限编程

    极限编程诞生于一种加强开发者与用户的沟通需求,让客户全面参与软件的开发设计,保证变化的需求及时得到修正。要让客户能方便地与开发人员沟通,一定要用客户理解的语言,先测试再编码就是先给客户软件的外部轮廓,客户使用的功能展现,让客户感觉到未来软件的样子,先测试再编码与瀑布模型显然是背道而驰的。同时,极限编程注重用户反馈与让客户加入开发是一致的,让客户参与就是随时反馈软件是否符合客户的要求。有了反馈,开发子过程变短,迭代也就很自然出现了,快速迭代,小版本发布都让开发过程变成更多的自反馈过程,有些象更加细化的快速模型法。当然极限编程还加入了很多激励开发人员的“措施”,如结队编程、40小时工作等。

    极限编程是一种开发管理模式,它强调的重点是:

    1、角色定位
    极限编程把客户非常明确地加入到开发的团队中,并参与日常开发与沟通会议。客户是软件的最终使用者,使用是否合意一定以客户的意见为准。不仅让客户参与设计讨论,而且让客户负责编写拥护故事(User Story),也就是功能需求,包括软件要实现的功能以及完成功能的业务操作过程。用户在软件开发过程中的责任被提到与开发者同样的重要程度。

    2、敏捷开发
    敏捷开发追求合作与响应变化。迭代就是缩短版本的发布周期,缩短到周、日,完成一个小的功能模块,可以快速测试、并及时展现给客户,以便及时反馈。小版本加快了客户沟通反馈的频率,功能简单,在设计、文挡环节大大简化。极限编程中文挡不再重要的原因就是因为每个版本功能简单,不需要复杂的设计过程。极限编程追求设计简单,实现客户要求即可,无需为扩展考虑太多,因为客户的新需求随时可以添加。

    3、追求价值
    极限编程把软件开发变成自我与管理的挑战,追求沟通、简单、反馈、勇气,体现开发团队的人员价值,激发参与者的情绪,最大限度地调动开发者的积极性,情绪高涨,认真投入,开发的软件质量就大大提高。结对编程就是激发队员才智的一种方式。

    极限编程把软件开发过程重新定义为聆听、测试、编码、设计的迭代循环过程,确立了测试->编码->重构(设计)的软件开发管理思路。

    图2

    极限编程的12个实践是极限编程者总结的实践经典,是体现极限编程管理的原则,对极限编程具有指导性的意义,但并非一定要完全遵守12个实践,主要看它给软件过程管理带来的价值。

    1、小版本
    为了高度迭代,与客户展现开发的进展,小版本发布是一个可交流的好办法,客户可以针对性提出反馈。但小版本把模块缩得很小,会影响软件的整体思路连贯,所以小版本也需要总体合理的规划。

    2、规划游戏
    就是客户需求,以客户故事的形式,由客户负责编写。极限编程不讲求统一的客户需求收集,也不是由开发人员整理,而是采取让客户编写,开发人员进行分析,设定优先级别,并进行技术实现。当然游戏规则可进行多次,每次迭代完毕后再行修改。客户故事是开发人员与客户沟通的焦点,也是版本设计的依据,所以其管理一定是有效的、沟通顺畅的。

    3、现场客户
    极限编程要求客户参与开发工作,客户需求就是客户负责编写的,所以要求客户在开发现场一起工作,并为每次迭代提供反馈。

    4、隐喻
    隐喻是让项目参与人员都必须对一些抽象的概念理解一致,也就是我们常说的行业术语,因为业务本身的术语开发人员不熟悉,软件开发的术语客户不理解,因此开始要先明确双方使用的隐喻,避免歧异。

    5、简单设计
    极限编程体现跟踪客户的需求变化,既然需求是变化的,所以对于目前的需求就不必过多地考虑扩展性的开发,讲求简单设计,实现目前需求即可。简单设计的本身也为短期迭代提供了方便,若开发者考虑“通用”因素较多,增加了软件的复杂度,开发的迭代周期就会加长。简单设计包括四方面含义:(1)通过测试。(2)避免重复代码。(3)明确表达每步编码的目的,代码可读性强。(4)尽可能少的对象类和方法。由于采用简单设计,所以极限编程没有复杂的设计文档要求。

    6、重构
    重构是极限编程先测试后编码的必然需求,为了整体软件可以先进行测试,对于一些软件要开发的模块先简单模拟,让编译通过,到达测试的目的。然后再对模块具体“优化”,所以重构包括模块代码的优化与具体代码的开发。重构是使用了“物理学”的一个概念,是在不影响物体外部特性的前提下,重新优化其内部的机构。这里的外部特性就是保证测试的通过。

    7、测试驱动开发
    极限编程是以测试开始的,为了可以展示客户需求的实现,测试程序优先设计,测试是从客户实用的角度出发,客户实际使用的软件界面着想,测试是客户需求的直接表现,是客户对软件过程的理解。测试驱动开发,也就是客户的需求驱动软件的开发。

    8、持续集成
    集成的理解就是提交软件的展现,由于采用测试驱动开发、小版本的方式,所以不断集成(整体测试)是与客户沟通的依据,也是让客户提出反馈意见的参照。持续集成也是完成阶段开发任务的标志。

    9、结对编程
    这是极限编程最有争议的实践。就是两个程序员合用一台计算机编程,一个编码,一个检查,增加专人审计是为了提供软件编码的质量。两个人的角色经常变换,保持开发者的工作热情。这种编程方式对培养新人或开发难度较大的软件都有非常好的效果。

    10、代码共有
    在极限编程里没有严格文档管理,代码为开发团队共有,这样有利于开发人员的流动管理,因为所有的人都熟悉所有的编码。

    11、编码标准
    编码是开发团队里每个人的工作,又没有详细的文档,代码的可读性是很重要的,所以规定统一的标准和习惯是必要的,有些象编码人员的隐喻。

    12、每周40小时工作
    极限编程认为编程是愉快的工作,不轻易加班,今天的工作今天做,小版本的设计也为了单位时间可以完成的工作安排。

    三、敏捷开发

    极限编程的思想体现了适应客户需求的快速变化,激发开发者的热情,也是目前敏捷开发思维的重要支持者。
    2001年,17名编程大师分别代表极限编程、Scrum(“棒球”团队开发模式)、特征驱动开发、动态系统开发方法、自适应软件开发、水晶方法、实用编程等开发流派,发表“敏捷软件开发”宣言。敏捷软件开发是一个开发软件的管理新模式,用来替代以文件驱动开发的瀑布开发模式。敏捷方式也称轻量级开发方法。敏捷软件开发宣言内容:

    ◆个体和交互胜过过程和工具
    ◆可以工作的软件胜过面面具到的文档
    ◆可户合作胜过合同谈判
    ◆响应变化胜过遵循计划

    敏捷开发集成了新型开发模式的共同特点,它重点强调:

    1、以人为本,注重编程中人的自我特长发挥。
    2、强调软件开发的产品是软件,而不是文档。文档是为软件开发服务的,而不是开发的主体。
    3、客户与开发者的关系是协作,不是合约。开发者不是客户业务的“专家”,要适应客户的需求,是要客户合作来阐述实际的需求细节,而不是为了开发软件,把开发人员变成客户业务的专家,这是传统开发模式或行业软件开发企业的最大面临问题。
    4、设计周密是为了最终软件的质量,但不表明设计比实现更重要,要适应客户需求的不断变化,设计也要不断跟进,所以设计不能是“闭门造车”、“自我良好”,能不断根据环境的变化,修改自己的设计,指导开发的方向是敏捷开发的目标。

    敏捷开发避免了传统瀑布方式的弊端,主要是吸收了各种新型开发模式的“动态”特性,关注点从文档到开发者,管理方式也从工厂的流水线到团队的自我放松式的组织。总结敏捷开发与瀑布模式的不同,主要是下面几个“敏捷”的关注点:

    迭代
    软件的功能是客户的需求,界面的操作是客户的“感觉”,对迭代的强调是缩短了软件版本的周期
    客户参与
    以人为本,客户是软件的使用者,是业务理解的专家,没有客户的参与,开发者很难理解客户的真实需求
    小版本
    快速功能的展现,看似简单,但对于复杂的客户需求,合理地分割与总体上的统一,要很好地二者兼顾是不容易的。

    敏捷就是“快”,快才可以适应目前社会的快节奏;要快就要发挥个人的个性思维多一些,个性思维的增多,虽然通过结队编程、代码共有、团队替补等方式减少个人对软件的影响力,但也会造成软件开发继承性的下降,因此敏捷开发是一个新的思路,但不是软件开发的终极选择。对于长时间、人数众多的大型软件应用的开发,文档的管理与衔接作用还是不可替代的。如何把敏捷的开发思路与传统的“流水线工厂式”管理有机地结合,是软件开发组织者面临的新课题。

  • RUP

    ilaria 发布于 2009-07-02 11:02:27

    RUP(Rational Unified Process,统一软件开发过程,统一软件过程)是一个面向对象且基于网络的程序开发方法论。根据Rational(Rational Rose和统一建模语言的开发者)的说法,好像一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持。 RUP和类似的产品--例如面向对象的软件过程(OOSP),以及OPEN Process都是理解性的软件工程工具--把开发中面向过程的方面(例如定义的阶段,技术和实践)和其他开发的组件(例如文档,模型,手册以及代码等等)整合在一个统一的框架内。


      一、六大经验
      1、迭代式开发。在软件开发的早期阶段就想完全、准确的捕获用户的需求几乎是不可能的。实际上,我们经常遇到的问题是需求在整个软件开发工程中经常会改变。迭代式开发允许在每次迭代过程中需求可能有变化,通过不断细化来加深对问题的理解。迭代式开发不仅可以降低项目的风险,而且每个迭代过程都可以执行版本结束,可以鼓舞开发人员。
      2、管理需求。确定系统的需求是一个连续的过程,开发人员在开发系统之前不可能完全详细的说明一个系统的真正需求。RUP描述了如何提取、组织系统的功能和约束条件并将其文档化,用例和脚本的使用以被证明是捕获功能性需求的有效方法。
      3、基于组件的体系结构。组件使重用成为可能,系统可以由组件组成。基于独立的、可替换的、模块化组件的体系结构有助于管理复杂性,提高重用率。RUP描述了如何设计一个有弹性的、能适应变化的、易于理解的、有助于重用的软件体系结构。
      4、可视化建模。RUP往往和UML联系在一起,对软件系统建立可视化模型帮助人们提供管理软件复杂性的能力。RUP告诉我们如何可视化的对软件系统建模,获取有关体系结构于组件的结构和行为信息。
      5、验证软件质量。在RUP中软件质量评估不再是事后进行或单独小组进行的分离活动,而是内建于过程中的所有活动,这样可以及早发现软件中的缺陷。
      6、控制软件变更。迭代式开发中如果没有严格的控制和协调,整个软件开发过程很快就陷入混乱之中,RUP描述了如何控制、跟踪、监控、修改以确保成功的迭代开发。RUP通过软件开发过程中的制品,隔离来自其他工作空间的变更,以此为每个开发人员建立安全的工作空间。
      二、统一软件开发过程RUP的二维开发模型
      RUP软件开发生命周期是一个二维的软件开发模型。横轴通过时间组织,是过程展开的生命周期特征,体现开发过程的动态结构,用来描述它的术语主要包括周期(Cycle)、阶段(Phase)、迭代(Iteration)和里程碑(Milestone);纵轴以内容来组织为自然的逻辑活动,体现开发过程的静态结构,用来描述它的术语主要包括活动(Activity)、产物(Artifact)、工作者(Worker)和工作流(Workflow)。如图1:
      三、统一软件开发过程RUP核心概念
      RUP中定义了一些核心概念,如下图:
      角色:描述某个人或者一个小组的行为与职责。RUP预先定义了很多角色。
      活动:是一个有明确目的的独立工作单元。
      工件:是活动生成、创建或修改的一段信息。
      四、统一软件开发过程RUP裁剪
      RUP是一个通用的过程模板,包含了很多开发指南、制品、开发过程所涉及到的角色说明,由于它非常庞大所以对具体的开发机构和项目,用RUP时还要做裁剪,也就是要对RUP进行配置。RUP就像一个元过程,通过对RUP进行裁剪可以得到很多不同的开发过程,这些软件开发过程可以看作RUP的具体实例。RUP裁剪可以分为以下几步:
      1) 确定本项目需要哪些工作流。RUP的9个核心工作流并不总是需要的,可以取舍。
      2) 确定每个工作流需要哪些制品。
      3) 确定4个阶段之间如何演进。确定阶段间演进要以风险控制为原则,决定每个阶段要那些工作流,每个工作流执行到什么程度,制品有那些,每个制品完成到什么程度。
      4) 确定每个阶段内的迭代计划。规划RUP的4个阶段中每次迭代开发的内容。
      5) 规划工作流内部结构。工作流涉及角色、活动及制品,他的复杂程度与项目规模即角色多少有关。最后规划工作流的内部结构,通常用活动图的形式给出。
      五、开发过程中的各个阶段和里程碑
      RUP中的软件生命周期在时间上被分解为四个顺序的阶段,分别是:初始阶段(Inception)、细化阶段(Elaboration)、构造阶段(Construction)和交付阶段(Transition)。每个阶段结束于一个主要的里程碑(Major Milestones);每个阶段本质上是两个里程碑之间的时间跨度。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。
      1. 初始阶段
      初始阶段的目标是为系统建立商业案例并确定项目的边界。为了达到该目的必须识别所有与系统交互的外部实体,在较高层次上定义交互的特性。本阶段具有非常重要的意义,在这个阶段中所关注的是整个项目进行中的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来讲,初始阶段可能很短。 初始阶段结束时是第一个重要的里程碑:生命周期目标(Lifecycle Objective)里程碑。生命周期目标里程碑评价项目基本的生存能力。
      2. 细化阶段
      细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。为了达到该目的,必须在理解整个系统的基础上,对体系结构作出决策,包括其范围、主要功能和诸如性能等非功能需求。同时为项目建立支持环境,包括创建开发案例,创建模板、准则并准备工具。 细化阶段结束时第二个重要的里程碑:生命周期结构(Lifecycle Architecture)里程碑。生命周期结构里程碑为系统的结构建立了管理基准并使项目小组能够在构建阶段中进行衡量。此刻,要检验详细的系统目标和范围、结构的选择以及主要风险的解决方案。
      3. 构造阶段
      在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。从某种意义上说,构建阶段是一个制造过程,其重点放在管理资源及控制运作以优化成本、进度和质量。 构建阶段结束时是第三个重要的里程碑:初始功能(Initial Operational)里程碑。初始功能里程碑决定了产品是否可以在测试环境中进行部署。此刻,要确定软件、环境、用户是否可以开始系统的运作。此时的产品版本也常被称为“beta”版。
      4. 交付阶段
      交付阶段的重点是确保软件对最终用户是可用的。交付阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量的调整。在生命周期的这一点上,用户反馈应主要集中在产品调整,设置、安装和可用性问题,所有主要的结构问题应该已经在项目生命周期的早期阶段解决了。 在交付阶段的终点是第四个里程碑:产品发布(Product Release)里程碑。此时,要确定目标是否实现,是否应该开始另一个开发周期。在一些情况下这个里程碑可能与下一个周期的初始阶段的结束重合。
      六、统一软件开发过程RUP的核心工作流(Core Workflows)
      RUP中有9个核心工作流,分为6个核心过程工作流(Core Process Workflows)和3个核心支持工作流(Core Supporting Workflows)。尽管6个核心过程工作流可能使人想起传统瀑布模型中的几个阶段,但应注意迭代过程中的阶段是完全不同的,这些工作流在整个生命周期中一次又一次被访问。9个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和强度重复。
      1. 商业建模(Business Modeling)
      商业建模工作流描述了如何为新的目标组织开发一个构想,并基于这个构想在商业用例模型和商业对象模型中定义组织的过程,角色和责任。
      2. 需求(Requirements)
      需求工作流的目标是描述系统应该做什么,并使开发人员和用户就这一描述达成共识。为了达到该目标,要对需要的功能和约束进行提取、组织、文档化;最重要的是理解系统所解决问题的定义和范围。
      3. 分析和设计(Analysis & Design)
      分析和设计工作流将需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。分析设计的结果是一个设计模型和一个可选的分析模型。设计模型是源代码的抽象,由设计类和一些描述组成。设计类被组织成具有良好接口的设计包(Package)和设计子系统(Subsystem),而描述则体现了类的对象如何协同工作实现用例的功能。 设计活动以体系结构设计为中心,体系结构由若干结构视图来表达,结构视图是整个设计的抽象和简化,该视图中省略了一些细节,使重要的特点体现得更加清晰。体系结构不仅仅是良好设计模型的承载媒介,而且在系统的开发中能提高被创建模型的质量。
      4. 实现(Implementation)
      实现工作流的目的包括以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件)实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。
      5. 测试(Test)
      测试工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现, 识别并确 认缺陷在软件部署之前被提出并处理。RUP提出了迭代的方法,意味着在整个项目中进行测试,从而尽可能早地发现缺陷,从根本上降低了修改缺陷的成本。测试类似于三维模型,分别从可靠性、功能性和系统性能来进行。
      6. 部署(Deployment)
      部署工作流的目的是成功的生成版本并将软件分发给最终用户。部署工作流描述了那些与确保软件产品对最终用户具有可用性相关的活动,包括:软件打包、生成软件本身以外的产品、安装软件、为用户提供帮助。在有些情况下,还可能包括计划和进行beta测试版、移植现有的软件和数据以及正式验收。
      7. 配置和变更管理(Configuration & Change Management)
      配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的产物。配置和变更管理工作流提供了准则来管理演化系统中的多个变体,跟踪软件创建过程中的版本。工作流描述了如何管理并行开发、分布式开发、如何自动化创建工程。同时也阐述了对产品修改原因、时间、人员保持审计记录。
      8. 项目管理(Project Management)
      软件项目管理平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。其目标包括:为项目的管理提供框架,为计划、人员配备、执行和监控项目提供实用的准则,为管理风险提供框架等。
      9. 环境(Environment)
      环境工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。环境工作流集中于配置项目过程中所需要的活动,同样也支持开发项目规范的活动,提供了逐步的指导手册并介绍了如何在组织中实现过程。
      七、RUP的迭代开发模式
      RUP中的每个阶段可以进一步分解为迭代。一个迭代是一个完整的开发循环,产生一个可执行的产品版本,是最终产品的一个子集,它增量式地发展,从一个迭代过程到另一个迭代过程到成为最终的系统。 传统上的项目组织是顺序通过每个工作流,每个工作流只有一次,也就是我们熟悉的瀑布生命周期(见图2)。这样做的结果是到实现末期产品完成并开始测试,在分析、设计和实现阶段所遗留的隐藏问题会大量出现,项目可能要停止并开始一个漫长的错误修正周期。
      一种更灵活,风险更小的方法是多次通过不同的开发工作流,这样可以更好的理解需求,构造一个健壮的体系结构,并最终交付一系列逐步完成的版本。这叫做一个迭代生命周期。在工作流中的每一次顺序的通过称为一次迭代。软件生命周期是迭代的连续,通过它,软件是增量的开发。一次迭代包括了生成一个可执行版本的开发活动,还有使用这个版本所必需的其他辅助成分,如版本描述、用户文档等。因此一个开发迭代在某种意义上是在所有工作流中的一次完整的经过,这些工作流至少包括:需求工作流、分析和设计工作流、实现工作流、测试工作流。其本身就像一个小型的瀑布项目(见图3)。
      图3 RUP的迭代模型
      与传统的瀑布模型相比较,迭代过程具有以下优点:
      降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。
      降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。
      加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
      由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。
      八、统一软件开发过程RUP的十大要素
      

      1. 开发前景
      2. 达成计划
      3. 标识和减小风险
      4. 分配和跟踪任务。。
      5. 检查商业理由
      6. 设计组件构架
      7. 对产品进行增量式的构建和测试
      8. 验证和评价结果
      9. 管理和控制变化
      10. 提供用户支持
      让我们逐一的审视这些要素,看一看它们什么地方适合RUP,找出它们能够成为十大要素的理由。
      1. 开发一个前景
      有一个清晰的前景是开发一个满足涉众真正需求的产品的关键。 前景抓住了RUP需求流程的要点:分析问题,理解涉众需求,定义系统,当需求变化时管理需求。 前景给更详细的技术需求提供了一个高层的、有时候是合同式的基础。正像这个术语隐含的那样,它是软件项目的一个清晰的、通常是高层的视图,能被过程中任何决策者或者实施者借用。它捕获了非常高层的需求和设计约束,让前景的读者能理解将要开发的系统。它还提供了项目审批流程的输入,因此就与商业理由密切相关。最后,由于前景构成了“项目是什么?”和“为什么要进行这个项目?”,所以可以把前景作为验证将来决策的方式之一。 对前景的陈述应该能回答以下问题,需要的话这些问题还可以分成更小、更详细的问题: ? 关键术语是什么?(词汇表) ? 我们尝试解决的问题是什么?(问题陈述) ? 涉众是谁?用户是谁?他们各自的需求是什么? ? 产品的特性是什么? ? 功能性需求是什么?(Use Cases) ? 非功能性需求是什么? ? 设计约束是什么?
      2. 达成计划
      “产品的质量只会和产品的计划一样好。” (2) 在RUP中,软件开发计划(SDP)综合了管理项目所需的各种信息,也许会包括一些在先启阶段开发的单独的内容。SDP必须在整个项目中被维护和更新。 SDP定义了项目时间表(包括项目计划和迭代计划)和资源需求(资源和工具),可以根据项目进度表来跟踪项目进展。同时也指导了其他过程内容(原文:process components)的计划:项目组织、需求管理计划、配置管理计划、问题解决计划、QA计划、测试计划、评估计划以及产品验收计划。
      在较简单的项目中,对这些计划的陈述可能只有一两句话。比如,配置管理计划可以简单的这样陈述:每天结束时,项目目录的内容将会被压缩成ZIP包,拷贝到一个ZIP磁盘中,加上日期和版本标签,放到中央档案柜中。 软件开发计划的格式远远没有计划活动本身以及驱动这些活动的思想重要。正如Dwight D.Eisenhower所说:“plan什么也不是,planning才是一切。” “达成计划”—和列表中第3、4、5、8条一起—抓住了RUP中项目管理流程的要点。项目管理流程包括以下活动:构思项目、评估项目规模和风险、监测与控制项目、计划和评估每个迭代和阶段。
      3. 标识和减小风险
      RUP的要点之一是在项目早期就标识并处理最大的风险。项目组标识的每一个风险都应该有一个相应的缓解或解决计划。风险列表应该既作为项目活动的计划工具,又作为确定迭代的基础。
      4. 分配和跟踪任务
      有一点在任何项目中都是重要的,即连续的分析来源于正在进行的活动和进化的产品的客观数据。在RUP中,定期的项目状态评估提供了讲述、交流和解决管理问题、技术问题以及项目风险的机制。团队一旦发现了这些障碍物(篱笆),他们就把所有这些问题都指定一个负责人,并指定解决日期。进度应该定期跟踪,如有必要,更新应该被发布。(原文:updates should be issued as necessary。) 这些项目“快照”突出了需要引起管理注意的问题。随着时间的变化/虽然周期可能会变化(原文:While the period may vary。),定期的评估使经理能捕获项目的历史,并且消除任何限制进度的障碍或瓶颈。
      5. 检查商业理由
      商业理由从商业的角度提供了必要的信息,以决定一个项目是否值得投资。商业理由还可以帮助开发一个实现项目前景所需的经济计划。它提供了进行项目的理由,并建立经济约束。当项目继续时,分析人员用商业理由来正确的估算投资回报率(ROI,即return on investment)。 商业理由应该给项目创建一个简短但是引人注目的理由,而不是深入研究问题的细节,以使所有项目成员容易理解和记住它。在关键里程碑处,经理应该回顾商业理由,计算实际的花费、预计的回报,决定项目是否继续进行。
      6. 设计组件构架
      在RUP中,件系统的构架是指一个系统关键部件的组织或结构,部件之间通过接口交互,而部件是由一些更小的部件和接口组成的。即主要的部分是什么?他们又是怎样结合在一起的? RUP提供了一种设计、开发、验证构架的很系统的方法。在分析和设计流程中包括以下步骤:定义候选构架、精化构架、分析行为(用例分析)、设计组件。 要陈述和讨论软件构架,你必须先创建一个构架表示方式,以便描述构架的重要方面。在RUP中,构架表示由软件构架文档捕获,它给构架提供了多个视图。每个视图都描述了某一组涉众所关心的正在进行的系统的某个方面。涉众有最终用户、设计人员、经理、系统工程师、系统管理员,等等。这个文档使系统构架师和其他项目组成员能就与构架相关的重大决策进行有效的交流。
      7. 对产品进行增量式的构建和测试
      在RUP中实现和测试流程的要点是在整个项目生命周期中增量的编码、构建、测试系统组件,在先启之后每个迭代结束时生成可执行版本。在精化阶段后期,已经有了一个可用于评估的构架原型;如有必 要,它可以包括一个用户界面原型。然后,在构建阶段的每次迭代中,组件不断的被集成到可执行、经过测试的版本中,不断地向最终产品进化。动态及时的配置管理和复审活动也是这个基本过程元素(原文:essential process element)的关键。
      8. 验证和评价结果
      顾名思义,RUP的迭代评估捕获了迭代的结果。评估决定了迭代满足评价标准的程度,还包括学到的教训和实施的过程改进。 根据项目的规模和风险以及迭代的特点,评估可以是对演示及其结果的一条简单的纪录,也可能是一个完整的、正式的测试复审记录。 这儿的关键是既关注过程问题又关注产品问题。越早发现问题,就越没有问题。(原文:The sooner you fall behind, the more time you will have to catch up.)
      9. 管理和控制变化
      RUP的配置和变更管理流程的要点是当变化发生时管理和控制项目的规模,并且贯穿整个生命周期。其目的是考虑所有的涉众需求,尽可能的满足,同时仍能及时的交付合格的产品。 用户拿到产品的第一个原型后(往往在这之前就会要求变更),他们会要求变更。重要的是,变更的提出和管理过程始终保持一致。 在RUP中,变更请求通常用于记录和跟踪缺陷和增强功能的要求,或者对产品提出的任何其他类型的变更请求。变更请求提供了相应的手段来评估一个变更的潜在影响,同时记录就这些变更所作出的决策。他们也帮助确保所有的项目组成员都能理解变更的潜在影响。
      10. 提供用户支持
      在RUP中,部署流程的要点是包装和交付产品,同时交付有助于最终用户学习、使用和维护产品的任何必要的材料。 项目组至少要给用户提供一个用户指南(也许是通过联机帮助的方式提供),可能还有一个安装指南和版本发布说明。 根据产品的复杂度,用户也许还需要相应的培训材料。最后,通过一个材料清单(BOM表,即Bill of Materials)清楚地记录应该和产品一起交付哪些材料。 关于需求 有人看了我的要素清单后,可能会非常不同意我的选择。例如,他会问,需求在哪儿呢?他们不重要吗?我会告诉他我为什么没有把它们包括进来。有时,我会问一个项目组(特别是内部项目的项目组):“你们的需求是什么?”,而得到的回答却是:“我们的确没有什么需求。” 刚开始我对此非常惊讶(我有军方的宇航开发背景)。他们怎么会没有需求呢?当我进一步询问时,我发现,对他们来说,需求意味着一套外部提出的强制性的陈述,要求他们必须怎么样,否则项目验收就不能通过。但是他们的确没有得到这样的陈述。尤其是当项目组陷入了边研究边开发的境地时,产品需求从头到尾都在演化。 因此,我接着问他们另外一个问题:“好的,那么你们的产品的前景是什么呢?”。这时他们的眼睛亮了起来。然后,我们非常顺利的就第一个要素(“开发一个前景”)中列出的问题进行了沟通,需求也自然而然的流动着(原文:and the requirements just flow naturally.)。 也许只有对于按照有明确需求的合同工作的项目组,在要素列表中加入“满足需求”才是有用的。请记住,我的清单仅仅意味着进行进一步讨论的一个起点。
      九、总结
      RUP具有很多长处:提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。但同时它也存在一些不足: RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容;此外,它没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。可以说RUP是一个非常好的开端,但并不完美,在实际的应用中可以根据需要对其进行改进并可以用OPEN和OOSP等其他软件过程的相关内容对RUP进行补充和完善。
  • Build Verification Testing

    ilaria 发布于 2009-07-20 17:28:44

    Build Verification Testing or Smoke Testing is a set of tests that run on new build to verify that whether the build is testable or not. It is done prior to its release to test team for further testing. This testing is done for Build Validation and Build Acceptance.


    The test cases of Build Verification Testing can include core functionality test cases that ensure software / application is stable and can be tested thoroughly. Some key points for this kind of Software Testing is:

    • The Build Verification tests are subset of tests cases that verify main functionalities
    • These tests typically run for each build. If any of the tests fail, the build is rejected
    • It is done to save the efforts of a testing team to setup and test a build when major functionalities are having defects
    • An ideal BVT should not run more than 30 - 60 minutes depending on the testing points in the application.

    It is better is these tests can be automated. If any of the tests fails, then developers fix the issues and deploy these to testing server.

    In Build Verification Testing, one needs to check for the integrity of various modules of the application. Checking the integration of various modules is important when different teams work on different modules.


    Some Basic Checks:

    • Check whether - all the new and modified files are included in release
    • All file formats are correct
    • Every file version and language
    • Flags associated with each file

    Below are some tips to select Build Verification tests:

    • Include only critical test cases and they should be sufficient for application test coverage
    • Add only stable test cases and all the test cases should have known expected results
    • Do not include modules in BVT, which are not yet stable
    • Set some standards and these standards shall be met only by analyzing major project features and scenarios
    • BVT automation scripts needs to be maintained and modified time-to-time. Include test cases when there are new stable project modules available
    • Try to automate this process as much as possible - automate everything
    • Do not write BVT test cases scripts in hurry

    Process for running the build verification tests:

    • The results are sent to TL / PM
    • Results are analyzed by TL / PM
    • The person who runs the tests and TL / PM diagnoses the cause of failure (if any)
    • If there is any defect, the relevant information is sent to respective developers
    • Developer fixes the bug

    Once the bug is fixed; BVT test suite is executed again. This process gets repeated for every new build.


    Also, remember that some times tests fail because of the following reasons:

    • Test case coding error
    • Automation Tool error
    • Infrastructure error
    • Hardware / software failures etc.

    So, see the root causes of failures, and then take proper action. Log as much detailed info as possible to diagnose the BVT pass or fail result.

    from:http://www.softwaretestingstuff.com/2008/06/build-verification-testing.html

  • What is a test scenario?

    ilaria 发布于 2009-07-20 18:07:01

    The terms "test scenario" and "test case" are often used synonymously. Test scenarios are test cases or test scripts, and the sequence in which they are to be executed. Test scenarios are test cases that ensure that all business process flows are tested from end to end. Test scenarios are independent tests, or a series of tests that follow each other, where each of them dependent upon the output of the previous one. Test scenarios are prepared by reviewing functional requirements, and preparing logical groups of functions that can be further broken into test procedures. Test scenarios are designed to represent both typical and unusual situations that may occur in the application. Test engineers define unit test requirements and unit test scenarios. Test engineers also execute unit test scenarios. It is the test team that, with assistance of developers and clients, develops test scenarios for integration and system testing. Test scenarios are executed through the use of test procedures or scripts. Test procedures or scripts define a series of steps necessary to perform. one or more test scenarios. Test procedures or scripts may cover multiple test scenarios.
  • SQA and testing frequently asked definitions

    ilaria 发布于 2009-07-30 09:27:08

    Black box testing
    not based on any knowledge of internal design or code. Tests are based on requirements and functionality.
     
    White box testing
    based on knowledge of the internal logic of an application’s code. Tests are based on coverage of code statements, branches, paths, conditions.
     
    Unit testing
    the most ‘micro’ scale of testing; to test particular functions or code modules. Typically done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code. Not always easily done unless the application has a well-designed architecture with tight code; may require developing test driver modules or test harnesses.
     
    Incremental integration testing
    continuous testing of an application as new functionality is added; requires that various aspects of an application’s functionality be independent enough to work separately before all parts of the program are completed, or that test drivers be developed as needed; done by programmers or by testers.
     
    Integration testing
    testing of combined parts of an application to determine if they function together correctly. The ‘parts’ can be code modules, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to client/server and distributed systems.

    Functional testing
    black-box type testing geared to functional requirements of an application; this type of testing should be done by testers. This doesn’t mean that the programmers shouldn’t check that their code works before releasing it (which of course applies to any stage of testing.)
     
    System testing
    black box type testing that is based on overall requirement specifications; covers all combined parts of a system.
     
    End-to-end testing
    similar to system testing; the ‘macro’ end of the test scale; involves testing of a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate.
     
    Sanity testing
    typically an initial testing effort to determine if a new software version is performing well enough to accept it for a major testing effort. For example, if the new software is crashing systems every 5 minutes, bogging down systems to a crawl, or destroying databases, the software may not be in a ’sane’ enough condition to warrant further testing in its current state.
     
    Regression testing
    re-testing after fixes or modifications of the software or its environment. It can be difficult to determine how much re-testing is needed, especially near the end of the development cycle. Automated testing tools can be especially useful for this type of testing.
     
    Acceptance testing
    final testing based on specifications of the end-user or customer, or based on use by end-users/customers over some limited period of time.
     
    Load testing
    testing an application under heavy loads, such as testing of a web site under a range of loads to determine at what point the systems response time degrades or fails.
     
    Stress testing
    term often used interchangeably with ‘load’ and ‘performance’ testing. Also used to describe such tests as system functional testing while under unusually heavy loads, heavy repetition of certain actions or inputs, input of large numerical values, large complex queries to a database system, etc.
     
    Performance testing
    term often used interchangeably with ’stress’ and ‘load’ testing. Ideally ‘performance’ testing (and any other ‘type’ of testing) is defined in requirements documentation or QA or Test Plans.
     
    Usability testing
    testing for ‘user-friendliness’. Clearly this is subjective, and will depend on the targeted end-user or customer. User interviews, surveys, video recording of user sessions, and other techniques can be used. Programmers and testers are usually not appropriate as usability testers.
     
    Install/uninstall testing
    testing of full, partial, or upgrade install/uninstall processes.
     
    Recovery testing
    testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.
     
    Security testing
    testing how well the system protects against unauthorized internal or external access, willful damage, etc; may require sophisticated testing techniques.
     
    Compatibility testing
    testing how well software performs in a particular hardware/software/operating system/network/etc. environment.
     
    Exploratory testing
    often taken to mean a creative, informal software test that is not based on formal test plans or test cases; testers may be learning the software as they test it.
     
    Ad-hoc testing
    similar to exploratory testing, but often taken to mean that the testers have significant understanding of the software before testing it.
     
    User acceptance testing
    determining if software is satisfactory to an end-user or customer.
     
    Comparison testing
    comparing software weaknesses and strengths to competing products.
     
    Alpha testing
    testing of an application when development is nearing completion; minor design changes may still be made as a result of such testing. Typically done by end-users or others, not by programmers or testers.
     
    Beta testing
    testing when development and testing are essentially completed and final bugs and problems need to be found before final release. Typically done by end-users or others, not by programmers or testers.
     
    Mutation testing
    a method for determining if a set of test data or test cases is useful, by deliberately introducing various code changes (’bugs’) and retesting with the original test data/cases to determine if the ‘bugs’ are detected. Proper implementation requires large computational resources.
  • 状态检测防火墙

    pulingwang 发布于 2009-07-23 09:36:25

    从网络协议分层的角度,防火墙分为:

    包过滤防火墙

    状态检测防火墙

    应用层防火墙

     

    基于包过滤防火墙,由于不能预先知道报文确切的IP地址和端口信息,往往会开启很多端口,造成无法拦截,或者拦截太多的问题

    基于状态检测的防火墙,规则中允许从内部访问外部,从内部访问外部时,响应的在状态表中添加这条回话信息,包含源IP地址和端口号,目的IP地址和端口号。根据这条状态信息,防火墙允许外部的响应报文进入。回话信息有一个超时值,之后这条回话信息删除。实际中使用的聊天工具,如QQ,MSN等都是这么实现的。 另外,用户很久不在线,还是能收到腾讯给用户发送的信息,这个原因是客户端不到1分钟会主动与服务器联系,刷新回话信息。

    状态监测防火墙不能过滤掉应用层中的特定内容。这个需要应用层防火墙来完成。针对每一种协议,都需要开发一种协议过滤器,比较复杂。

     

  • 稳定性测试

    pangxiong 发布于 2009-07-22 20:32:12

    • 稳定性测试就测试系统的长期稳定运行能力。在系统运行过程中,对系统施压,观察系统的各种性能指标,以及服务器的指标。
    • 测试场景:模拟平常的压力,模拟实际中日常的用户数进行操作。数据库要存有一定的数据。
    • 稳定性测试是概率性的测试,就是说即使稳定性测试通过,也不能保证系统实际运行的时候不出问题。所以要尽可能的提高测试的可靠性。可以通过多次测试,延长测试时间,增大测试压力来提高测试的可靠性。
    • 稳定性测试的测试时间和压力存在一定的关系。在测试时间不能保证的情况下,可以通过增强压力在一定程度上来挽救。
    • 观察系统的各种监控指标曲线,预测系统的发展状况。响应时间是否有增长,可用内存是否在减少,CPU利用率是否在上升等等都可以说明系统是否存在问题,需要说明的是,随着测试时间的延长,数据库数据量的增加,响应时间等数据会有相应的增长,但只要在合理范围内就可。
    • 另外,为了使多次稳定性测试具有可比性,多次测试应该在完全相同的软硬件环境下进行,包含:计算机硬件配置,网络部署,配测软件,数据库的数据量等等。
  • 局域网经典故障解决3

    huipingzhai 发布于 2009-07-22 16:02:18

    另外,在Windows XP中激活了系统附带的防火墙之后,它会自动屏蔽一些常用的网络功能。比如在网络中的计算机采用ping命令来检测网络连接状况时,将会看见“Request timed out”的错误信息;但在“ICMP”标签下选中了“允许传入的回显请求”一项之后,再次运行ping命令就能得到正常的反馈信息了。
    4.无法看到我和你
      【故障现象】打开“网上邻居”后,只能查看到部分计算机,无法查看到局域网中的有些计算机,甚至自己的计算机,这是怎么回事呢?
      【分析与解决】在局域网畅通的前提下,无论是不能查看本机还是网络中的其他计算机,都是由于无法查看到的计算机中没有正确安装文件和打印共享服务所致。
    安装文件和打印服务时,可在控制面板中双击“网络”图标,在弹出窗口中点击“添加”按钮之后选择“服务”一项,并且在“网络服务”窗口中选取“Microsoft网络上的文件与打印机共享”。完成后在“网络”属性窗口中选择“文件及打印共享”,接着勾选“允许其他用户访问我的文件”复选框即可。安装设置好文件和打印共享服务之后需要重新启动计算机。
      另外,如果局域网中的计算机工作组设置出错也可能无法直接在某一个工作组中查看到它。比如大多数计算机的工作组设置为“office”,但有几台计算机的工作组设置为“office1”,这样当打开“office”工作组时就不能查看到“office1”工作组中的计算机,因此需要统一工作组的名称。在更改工作组名称时可在“网络”属性窗口中点击“标识”标签,分别设置好计算机的名称和工作组名称即可。为了便于区别局域网中的计算机,建议每台计算机名称按照使用者的姓名命名。
Open Toolbar