四川人,现在在重庆工作,以前当过一年的老师、做过几个月的开发,最终决定在测试行业奋斗,进入测试行业接近8个月了。现在主要还是功能测试,都是手工的。想在自动化测试与性能测试方面有所建树。希望能在51testing里面多认识一些同行,多结交一些朋友,多为软件测试行业尽自己的一份贡献! 欢迎加我lijiang816_xiao@hotmail.com

发布新日志

  • 来个简单的自我介绍

    2007-07-27 13:04:14Top 1

    四川人,现在在重庆工作,以前当过一年的老师、做过几个月的开发,最终决定在测试行业奋斗,进入测试行业接近8个月了。现在主要还是功能测试,都是手工的。想在自动化测试与性能测试方面有所建树。希望能在无忧testing里面多认识一些同行,多结交一些朋友,多为测试这个新新行业尽自己的一份贡献!

    欢迎加我lijiang816_xiao@hotmail.com

  • 期待2008年

    2007-12-31 13:35:44

    2008年到了,明年将会是奋斗的一年!相信明年也将会是硕果累累的一年!
  • LR监控windows、linux方法

    2007-11-09 15:23:41

    看了网上有不少这方面的资料,自己亲自动手在windows\linux\unix上配置了一遍,再总结了一下:
    一、监控windows系统:
    1、监视连接前的准备工作
            1)进入被监视windows系统,开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry Service (开始—)运行 中输入services.msc,开启对应服务即可)。
            2)在被监视的WINDOWS机器上:右击我的电脑,选择管理->共享文件夹->共享 在这里面要有C$这个共享文件夹 (要是没有自己手动加上)。
            3)在安装LR的机器上,开始—》运行,输入 \\被监视机器IP\C$ 然后输入管理员帐号和密码,如果能看到被监视机器的C盘了,就说明你得到了那台机器的管理员权限,可以使用LR去连接了。(LR要连接WINDOWS机器进行监视要有管理员帐号和密码才行。)
        问题:在执行步骤3)时,输入 \\被监视机器IP\C$,出现不能以administrator身份访问被监控系统(若采用这种方式用LR对其监控的话,会提示:“找不到网络路径”)的情况,现象就是用户名输入框是灰色的,并且默认用户是guest。
        解决办法:这是安全策略的设置问题(管理工具 -> 本地安全策略 -> 安全选项 -> "网络访问:本地帐户的共享和安全模式")。默认情况下,XP的访问方式是"仅来宾"的方式,如果你访问它,当然就固定为Guest来访问,而guest账户没有监控的权限,所以要把访问方式改为“经典”模式,这样就可以以administrator的身份登陆了。修改后,再次执行步骤3),输入管理员用户名和密码,就可以访问被监控机器C盘了
        若这样都不行的话(可能是其它问题引起的),那只好采取别的方法了。在服务器的机子上,通过windows自带的“性能日志和警报”下的“计数器日志”中新增加一个监控日志(管理工具—)性能—)性能日志和警报),配置好日志,也能监控服务器的cpu、memory、disk等计数器。当然,这种方法就不是用LR来监控了。

    2、用LR监视windows的步骤
        在controller 中,Windows Resources窗口中右击鼠标选择Add Measurements,添加被监控windows的IP地址,选择所属系统,然后选择需要监控的指标就可以开始监控了。

    二、监控linux
    1 准备工作
    1)首先,监视Linux一定要有rstatd这个守护进程,有的Linux版本里也有可能是rpc.rstatd这里只是名字不同而已,功能是一样的。一般来说LINUX需要下载一个包才有这个服务,包名字是rpc.rstatd-4.0.1.tar.gz. 这是一个源码,需要编译,下载并安装rstatd(可以在http://sourceforge.net/projects/rstatd这个地址下载)
    下载后,开始安装,安装步骤如下:
    tar -xzvf  rpc.rstatd-4.0.1.tar.gz
    cd  rpc.rstatd-4.0.1/
    ./configure  —配置操作
    make —进行编译
    make install —开始安装
    rpc.rstatd —启动rstatd进程

    2)安装完成后配置rstatd 目标守护进程xinetd,它的主配置文件是/etc/xinetd.conf ,它里面内容是一些如下的基本信息:
    #
    # xinetd.conf
    #
    # Copyright (c) 1998-2001 SuSE GmbH Nuernberg, Germany.
    # Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany.
    #
    defaults
    {
            log_type        = FILE /var/log/xinetd.log
            log_on_success  = HOST EXIT DURATION
            log_on_failure  = HOST ATTEMPT
    #        only_from       = localhost
            instances       = 30
            cps             = 50 10
    #
    # The specification of an interface is interesting, if we are on a firewall.
    # For example, if you only want to provide services from an internal
    # network interface, you may specify your internal interfaces IP-Address.
    #
    #       interface       = 127.0.0.1
    }
    includedir /etc/xinetd.d

    我们这里需要修改的是/etc/xinetd.d/下的三个conf文件 rlogin ,rsh,rexec 这三个配置文件,打这三个文件里的disable = yes都改成 disable = no ( disabled 用在默认的 {} 中 禁止服务)或是把# default: off都设置成 on 这个的意思就是在xinetd启动的时候默认都启动上面的三个服务!
      说明:我自己在配置时,没有disable = yes这项,我就将# default: off改为:default: on,重启后(cd /etc/init.d/     ./xinetd restart)通过netstat -an |grep 514查看,没有返回。然后,我就手动在三个文件中最后一行加入disable = no,再重启xinetd,再使用netstat -an |grep 514查看,得到tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN结果,表明rsh服务器已经启动。

         只要保证Linux机器上的进程里有rstatd和xinetd这二个服务就可以用LR去监视了
    两点小的技巧:
    1)检查是否启动: rsh server 监听的TCP 是514。
    [root@mg04 root]# netstat -an |grep 514
    tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN
    如果能看到514在监听说明rsh服务器已经启动。
    2)检查是否启动: rstatd
    输入命令: rpcinfo -p
    如果能看到类似如下信息:
    程序 版本 协议 端口
    100001    5   udp    937  rstatd
    100001    4   udp    937  rstatd
    100001    3   udp    937  rstatd
    100001    2   udp    937  rstatd
    100001    1   udp    937  rstatd
    那就说明rstatd服务启动了,(当然这里也可以用ps ax代替)
    3)重起xinetd方法:
    在有的系统中,通过如下命令重启:
    # service xinetd reload
    # /sbin/service xinetd rstart
    在suse linux 中如下操作:
    cd /etc/init.d/
    ./xinetd restart

    最后,在controller中,将UNIX resources拖放到右边窗口里面,右击鼠标选择Add Measurements,添加被监控linux的IP地址,然后选择需要监控的指标就可以了。

    三、监控UNIX
    lr监控UNIX ,UNIX先启动一rstatd服务
       以下是在IBM AIX系统中启动rstatd服务的方法:
    1、        使用telnet以root用户的身份登录入AIX系统
    2、        在命令行提示符下输入:vi /etc/inetd.conf
    3、        查找rstatd,找到
    #rstatd   sunrpc_udp     udp     wait    root    /usr/sbin/rpc.rstatd rstatd 100001 1-3
    4、将#去掉
    5、:wq保存修改结果
    6、命令提示符下输入:refresh –s inetd 重新启动服务。
    这样使用loadrunner就可以监视AIX系统的性能情况了。

  • Linux实用代码(1)--文件系统操作(转载)

    2007-11-03 12:47:17

    Linux实用代码(1)--文件系统操作

    这篇文档实用性很强,它不是讲某个命令的参数具体含义,而是从实际

    工作的角度来考虑,完成什么工作需要什么指令。


      文件系统操作是最基本的操作,没有文件系统,操作系统根本就运行不了。

      下面是我们经常要做的一些事情。在下面具体参数意义不解释,要了解这些

      可以查询该命令帮助文档

      1. 创建目录

         mkdir

         NO1. 在当前路径创建一级目录

              [root@rehat root]# mkdir test

         NO2. 在当前路径创建多级目录

              [root@rehat root]# mkdir -p mytest/test1/test1_1

         NO3. 在创建目录的同时给新建的目录赋权限

              [root@rehat root]# mkdir -m 777 testmod

              这样任何人对此目录都有任何权限

      2. 复制文件与文件夹

         cp

         NO1. 复制指定目录的文件到当前目录,并重命名

              [root@rehat root]# cp ~/.bashrc bashrc_bak

         NO2. 强制复制指定目录的文件到当前目录,而不管当前目录是否含有该文件

              [root@rehat root]# cp -f ~/.bashrc bashrc

         NO2. 复制指定目录到当前目录

              [root@rehat root]# cp -r /root/test .
           
              [root@rehat root]# cp -r /root/test/ .

              两者效果一样,在复制目录时,会将源路径的最后一级目录全部复制过去,包括它本身。

         NO3. 复制指定目录的文件到指定目录

              [root@rehat root]# cp ~/.bashrc /bak/.bashrc

         NO4. 在复制时将源文件的全部属性也复制过来。若不指定参数,则目标文件与源文件属性可能不一致。

              [root@rehat root]# cp -a ~/.bashrc /bak/.bashrc

         NO5. 若两个文件夹要保证同步,一个文件的改了,另一个文件也跟着改,但是要保证两个文件的文件都是最新的。

              [root@rehat root]# cp -u /src/.bashrc /bak_src/bashrc

      3. 建立链接文件,包括硬链接与软链接

         ln

         NO1. 建立类似于 Windows 的快捷方式

              [root@rehat root]# ln -s test.txt test.txt_slnk

         NO2. 当想备份一个文件,但空间又不够,则可以为该文件建立一个硬连接。这样,就算原文件删除了,只要该

              链接文件没被删除,则在存储空间里还是没有被删除。

              [root@rehat root]# ln -l test.txt test.txt_hlnk

      4. 删除文件

         rm

         NO1. 删除当前目录的文件

              [root@rehat root]# rm test.txt

         NO2. 强制删除当前目录的文件,不弹出提示

              [root@rehat root]# rm -f test.txt

         NO3. 强制删除整个目录,包括目录与文件全部删除,需要管理员权限

              [root@rehat root]# rm -r -f test

      5. 删除文件夹

         rmdir

         NO1. 删除一个空目录

              [root@rehat root]# rmdir emptydir

         NO2. 删除多级空目录

              [root@rehat root]# rmdir -p emptydir/d1/d11

      6. 挂载文件系统与卸载文件系统

         mount / umount

         NO1. 挂载光驱

              [root@rehat root]# mount -t iso9660 /dev/cdrom /mnt/cdrom

         NO2. 挂载光驱,支持中文

              [root@rehat root]# mount -t iso9660 -o codepage=936,iocharset=cp936 /dev/cdrom /mnt/cdrom

         NO3. 挂载 Windows 分区,FAT文件系统

              [root@rehat root]# mount -t vfat /dev/hda3 /mnt/cdrom         

         NO4. 挂载 Windows 分区,NTFS文件系统

              [root@rehat root]# mount -t ntfs -o iocharset=cp936 /dev/hda7 /mnt/had7

         No5. 挂载 ISO 文件

              [root@rehat root]# mount -o loop /abc.iso /mnt/cdrom

         NO6. 挂载 软驱

              [root@rehat root]# mount /dev/fd0 /mnt/floppy

         NO7. 挂载闪盘

              [root@rehat root]# mount /dev/sda1 /mnt/cdrom

         NO8. 挂载 Windows 操作系统共享的文件夹

              [root@rehat root]# mount -t smbfs -o username=guest,password=guest //machine/path /mnt/cdrom

         NO9. 显示挂载的文件系统

              [root@rehat root]# mount

              [root@rehat root]# cat /etc/fstab        显示系统启动自动加载的文件系统

              [root@rehat root]# cat /etc/mtab        显示当前加载的文件系统

      7. 检查磁盘空间

         df

         NO1. 显示所有存储系统空间使用情况,同时显示存储系统的文件系统类型s

              [root@rehat root]# df -aT

         NO2. 显示指定文件系统的空间使用情况       

              [root@rehat root]# df -t ext3
             
         NO3. 人性化显示各存储空间大小

              [root@rehat root]# df -ah

         NO4. 有时候挂载了网络文件系统,若只想看本机的文件系统用如下命令

              [root@rehat root]# df -ahlT

         NO5. 查看某个文件系统的磁盘使用情况

              [root@rehat root]# df -h /dev/cdrom


      8. 检查目录空间大小

         du

         NO1. 查看当前文件夹大小

              [root@rehat root]# du -sh

         NO2. 查看当前文件及文件中包含的子文件夹大小

              [root@rehat root]# du -ch

         NO3. 查看文件的大小

              [root@rehat root]# du -h test1.txt

         NO4. 同时查看多个文件的大小

              [root@rehat root]# du -h test1.txt test2.txt

      9. 磁盘碎片整理

         linux 下基本上不用碎片整理,它每隔一段时间会自动整理
         
      10. 创建/改变文件系统

          NO1. 创建文件系统类型

               [root@rehat root]# umount /dev/sdb1

               [root@rehat root]# mkfs -t ext3 /dev/db1

               [root@rehat root]# mount /dev/sdb1 /practice

      11. 改变文件或文件夹权限

          chmod

          NO1. 将自己的笔记设为只有自己才能看

               [root@rehat root]# chmod go-rwx test.txt

               或者

               [root@rehat root]# chmod 700 test.txt

          NO2. 同时修改多个文件的权限

               [root@rehat root]# chmod 700 test1.txt test2.txt

          NO3. 修改一个目录的权限,包括其子目录及文件

               [root@rehat root]# chmod 700 -R test

      12. 改变文件或文件夹拥有者

          chown 该命令只有 root 才能使用

          NO1. 更改某个文件的拥有者

               [root@rehat root]# chown jim:usergroup test.txt

          NO2. 更改某个目录的拥有者,并包含子目录

               [root@rehat root]# chown jim:usergroup -R test
      
      13. 查看文本文件内容

          cat

          NO1. 查看文件内容,并在每行前面加上行号

               [root@rehat root]# cat -n test.txt

          NO2. 查看文件内容,在不是空行的前面加上行号

               [root@rehat root]# cat -b test.txt
          
          NO3. 合并两个文件的内容

               [root@rehat root]# cat test1.txt test2.txt > test_new.txt

          NO4. 全并两具文件的内容,并追回到一个文件

               [root@rehat root]# cat test1.txt test2.txt >> test_total.txt

          NO5. 清空某个文件的内容

               [root@rehat root]# cat /dev/null > test.txt

          NO6. 创建一个新的文件

               [root@rehat root]# cat > new.txt 按 CTRL + C 结束录入

      14. 编辑文件文件

          vi

          NO1. 新建档案文件

               [root@rehat root]# vi newfile.txt

          NO2. 修改档案文件

               [root@rehat root]# vi test.txt   test.txt 已存在

          NO3. vi 的两种工作模式:命令模式,编辑模式

          NO4. 进入 vi 后为命令模式,按 Insrt 键进入编辑模式

               按 ESC 进入命令模式,在命令模式不能编辑,只能输入命令

          NO5. 命令模式常用命令

               :w 保存当前文档

               :q 直接退出 vi

               :wq 先保存后退出
          
      15. 路径操作

          cd pwd

          NO1. 显示当前路径

               [root@rehat root]# pwd

          NO2. 返回用户主目录

               [root@rehat root]# cd

          NO3. 改变到其它路径

               [root@rehat root]# cd /etc

          NO4. 返回到上一级目录

               [root@rehat root]# cd ..

          NO5. 返回到根目录

               [root@rehat root]# cd /

      16. 查询文件或文件夹

          find

          NO1. 查找当前用户主目录下的所有文件

               [root@rehat root]# find ~

          NO2. 让当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;

               [root@rehat root]# find . -perm 644 -exec ls -l {} \;

          NO3. 为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;

               [root@rehat root]# find / size 0 -type f -exec ls -l {} \;

          NO4. 查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们;

               [root@rehat root]# find /var/logs -mtime +7 -type f -ok rm -i {} \;

          NO5. 为/找系统中所有属于root组的文件;

               [root@rehat root]# find / -group root -exec ls -l {} \;

          NO6. find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件

               [root@rehat root]# find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok rm { } \;

          NO7. 为了查找当前文件系统中的所有目录并排序

               [root@rehat root]# find . -type d | sort

          NO8. 为了查找系统中所有的rmt磁带设备

               [root@rehat root]# find /dev/rmt

      17. 显示文件/文件夹清单

          ls / dir

          NO1. 显示所有文件,包括以.开头的隐含文件

               [root@rehat root]# ls -a

          NO2. 显示文件的详细信息

               [root@rehat root]# ls -l

          NO3. 显示当前目录及所有子目录信息

               [root@rehat root]# ls -Rl

          NO4. 以时间排序显示目录,这在找最新文件有用

               [root@rehat root]# ls -tl

          NO5. 以文件大小排序

               [root@rehat root]# ls -Sl

          NO6. 显示文件大小,并按大小排序

               [root@rehat root]# ls -s -l -S

      18. 移动或更改文件/文件夹名称

          mv 与 cp命令用法相似

          NO1. 若移动目标文件已存在,要在移动之前,先备份原来的目录文件

               [root@rehat root]# mv -b test.txt test2/

               这样在 test2 下将有两个文件 test.txt 及 text.txt~

               其中 test.txt~ 是备份文件,test.txt是新的文件

          NO2. 若移动目标文件已存在,但不想弹出是否覆盖的提示,直接覆盖

               [root@rehat root]# mv -f test.txt test2/

          NO3. 当源与目标都拥有同一个文件,若源文件比目标新则移动,否则不移动

               [root@rehat root]# mv -u test.txt test2/

          NO4. 更改文件名称

               [root@rehat root]# mv test.txt test2.txt

          NO5. 更改目录名称
      
               [root@rehat root]# mv /test2 /test2_2
  • QTP的基本使用函数(转载)

    2007-11-03 12:44:43

    QTP的基本使用函数:

    1,获取对话框相应的文字: GetVisible Text

    2,查找相应的字符串: instr (1,查找目标字符串,所查找的字符串)

    3,随机数的获取: Randomnumber.Value() 或cstr(int(Rnd*10)+1)

    4,等待函数: Wait(秒数)

    5,获取数组下标: UBound (数组名)

    6,拆分数组:Split(MyString, ",", -1, 1)

    7,可执行步骤:OptionalStep

    8,报告信息: Reporter.ReportEvent 3, "Save Step", "Out of cycle!"

    9,判断对话框是否存在: .exist

    10,事件过滤函数:Reporter.Filter=过滤条件(0123)0代表显示所有的errorwarning,1,显示error,2,显示waining,3,任何errorwarning都不显示。

    11,循环函数:do … loop untilfor…to… then next,while.

    12数据表格:DataTable,向外赋值,Dim aa = DataTable.value(“CellingName”,”ActionName”).

    13,获得对象属性的三种方法GetTOPropertyGetTOProperties,GetROProperty,GetTOProperty获得程序中对象当前的属性,GetTOProperties获得当前属性所有集合,GetROProperty获得的是录制时对象所获得的属性。

    14,检查点方法check和输出指定属性值output

    15,函数Descrīption,可以获得某页面同标签的属性进行操作。

    16,函数nagative可以随便跳转页面到指定的URL

    17,函数Object可以获得当前页面同属性的控件。

    18,函数Focus可以让控件获得焦点,函数Blur则是失去焦点,click单击,dbclick双击。

    19,函数setAttribute可以设置控件属性,getAttribute可以获得属性。

    添加数据:

    1.       在每个要覆盖的域添加checkpoint

    2.       在不能同名的必填字段里,添加随机函数,循环增加。

    查询数据:

    1.      先添加数据,再查询数据更新,更新成功时设置checkpoint

    2.        最后删除成功时设置checkpoint

  • 观察server上运行进程的工具

    2007-10-25 15:08:19

    暂无
  • Oracle常用SQL查询列表(转载)

    2007-10-23 22:39:22

    1、查看表空间的名称及大小

    select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size

    from dba_tablespaces t, dba_data_files d

    where t.tablespace_name = d.tablespace_name

    group by t.tablespace_name;

    2、查看表空间物理文件的名称及大小

    select tablespace_name, file_id, file_name,

    round(bytes/(1024*1024),0) total_space

    from dba_data_files

    order by tablespace_name;

    3、查看回滚段名称及大小

    select segment_name, tablespace_name, r.status,

    (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,

    max_extents, v.curext CurExtent

    From dba_rollback_segs r, v$rollstat v

    Where r.segment_id = v.usn(+)

    order by segment_name ;

    4、查看控制文件

    select name from v$controlfile;

    5、查看日志文件

    select member from v$logfile;

    6、查看表空间的使用情况

    select sum(bytes)/(1024*1024) as free_space,tablespace_name

    from dba_free_space

    group by tablespace_name;

    SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,

    (B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"

    FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C

    WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;

    7、查看数据库库对象

    select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;

    8、查看数据库的版本

    Select version FROM Product_component_version

    Where SUBSTR(PRODUCT,1,6)='Oracle';

    9、查看数据库的创建日期和归档方式

    Select Created, Log_Mode, Log_Mode From V$Database;

    10、捕捉运行很久的SQL

    column username format a12

    column opname format a16

    column progress format a8

    select username,sid,opname,

    round(sofar*100 / totalwork,0) || '%' as progress,

    time_remaining,sql_text

    from v$session_longops , v$sql

    where time_remaining <> 0

    and sql_address = address

    and sql_hash_value = hash_value

    /

    11。查看数据表的参数信息

    SELECT partition_name, high_value, high_value_length, tablespace_name,

    pct_free, pct_used, ini_trans, max_trans, initial_extent,

    next_extent, min_extent, max_extent, pct_increase, FREELISTS,

    freelist_groups, LOGGING, BUFFER_POOL, num_rows, blocks,

    empty_blocks, avg_space, chain_cnt, avg_row_len, sample_size,

    last_analyzed

    FROM dba_tab_partitions

    --WHERE table_name = :tname AND table_owner = :towner

    ORDER BY partition_position

    12.查看还没提交的事务

    select * from v$locked_object;

    select * from v$transaction;

    13。查找object为哪些进程所用

    select

    p.spid,

    s.sid,

    s.serial# serial_num,

    s.username user_name,

    a.type object_type,

    s.osuser os_user_name,

    a.owner,

    a.object object_name,

    decode(sign(48 - command),

    1,

    to_char(command), 'Action Code #' || to_char(command) ) action,

    p.program oracle_process,

    s.terminal terminal,

    s.program program,

    s.status session_status

    from v$session s, v$access a, v$process p

    where s.paddr = p.addr and

    s.type = 'USER' and

    a.sid = s.sid and

    a.object='SUBSCRIBER_ATTR'

    order by s.username, s.osuser

    14。回滚段查看

    select rownum, sys.dba_rollback_segs.segment_name Name, v$rollstat.extents

    Extents, v$rollstat.rssize Size_in_Bytes, v$rollstat.xacts XActs,

    v$rollstat.gets Gets, v$rollstat.waits Waits, v$rollstat.writes Writes,

    sys.dba_rollback_segs.status status from v$rollstat, sys.dba_rollback_segs,

    v$rollname where v$rollname.name(+) = sys.dba_rollback_segs.segment_name and

    v$rollstat.usn (+) = v$rollname.usn order by rownum

    15。耗资源的进程(top session)

    select s.schemaname schema_name, decode(sign(48 - command), 1,

    to_char(command), 'Action Code #' || to_char(command) ) action, status

    session_status, s.osuser os_user_name, s.sid, p.spid , s.serial# serial_num,

    nvl(s.username, '[Oracle process]') user_name, s.terminal terminal,

    s.program program, st.value criteria_value from v$sesstat st, v$session s , v$process p

    where st.sid = s.sid and st.statistic# = to_number('38') and ('ALL' = 'ALL'

    or s.status = 'ALL') and p.addr = s.paddr order by st.value desc, p.spid asc, s.username asc, s.osuser asc

    16。查看锁(lock)情况

    select /*+ RULE */ ls.osuser os_user_name, ls.username user_name,

    decode(ls.type, 'RW', 'Row wait enqueue lock', 'TM', 'DML enqueue lock', 'TX',

    'Transaction enqueue lock', 'UL', 'User supplied lock') lock_type,

    o.object_name object, decode(ls.lmode, 1, null, 2, 'Row Share', 3,

    'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive', null)

    lock_mode, o.owner, ls.sid, ls.serial# serial_num, ls.id1, ls.id2

    from sys.dba_objects o, ( select s.osuser, s.username, l.type,

    l.lmode, s.sid, s.serial#, l.id1, l.id2 from v$session s,

    v$lock l where s.sid = l.sid ) ls where o.object_id = ls.id1 and o.owner

    <> 'SYS' order by o.owner, o.object_name

    17。查看等待(wait)情况

    SELECT v$waitstat.class, v$waitstat.count count, SUM(v$sysstat.value) sum_value

    FROM v$waitstat, v$sysstat WHERE v$sysstat.name IN ('db block gets',

    'consistent gets') group by v$waitstat.class, v$waitstat.count

    18。查看sga情况

    SELECT NAME, BYTES FROM SYS.V_$SGASTAT ORDER BY NAME ASC

    19。查看catched object

    SELECT owner, name, db_link, namespace,

    type, sharable_mem, loads, executions,

    locks, pins, kept FROM v$db_object_cache

    20。查看V$SQLAREA

    SELECT SQL_TEXT, SHARABLE_MEM, PERSISTENT_MEM, RUNTIME_MEM, SORTS,

    VERSION_COUNT, LOADED_VERSIONS, OPEN_VERSIONS, USERS_OPENING, EXECUTIONS,

    USERS_EXECUTING, LOADS, FIRST_LOAD_TIME, INVALIDATIONS, PARSE_CALLS, DISK_READS,

    BUFFER_GETS, ROWS_PROCESSED FROM V$SQLAREA

    21。查看object分类数量

    select decode (o.type#,1,'INDEX' , 2,'TABLE' , 3 , 'CLUSTER' , 4, 'VIEW' , 5 ,

    'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) object_type , count(*) quantity from

    sys.obj$ o where o.type# > 1 group by decode (o.type#,1,'INDEX' , 2,'TABLE' , 3

    , 'CLUSTER' , 4, 'VIEW' , 5 , 'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) union select

    'COLUMN' , count(*) from sys.col$ union select 'DB LINK' , count(*) from

    22。按用户查看object种类

    select u.name schema, sum(decode(o.type#, 1, 1, NULL)) indexes,

    sum(decode(o.type#, 2, 1, NULL)) tables, sum(decode(o.type#, 3, 1, NULL))

    clusters, sum(decode(o.type#, 4, 1, NULL)) views, sum(decode(o.type#, 5, 1,

    NULL)) synonyms, sum(decode(o.type#, 6, 1, NULL)) sequences,

    sum(decode(o.type#, 1, NULL, 2, NULL, 3, NULL, 4, NULL, 5, NULL, 6, NULL, 1))

    others from sys.obj$ o, sys.user$ u where o.type# >= 1 and u.user# =

    o.owner# and u.name <> 'PUBLIC' group by u.name order by

    sys.link$ union select 'CONSTRAINT' , count(*) from sys.con$

    23。有关connection的相关信息

    1)查看有哪些用户连接

    select s.osuser os_user_name, decode(sign(48 - command), 1, to_char(command),

    'Action Code #' || to_char(command) ) action, p.program oracle_process,

    status session_status, s.terminal terminal, s.program program,

    s.username user_name, s.fixed_table_sequence activity_meter, ' query,

    0 memory, 0 max_memory, 0 cpu_usage, s.sid, s.serial# serial_num

    from v$session s, v$process p where s.paddr=p.addr and s.type = 'USER'

    order by s.username, s.osuser

    2)根据v.sid查看对应连接的资源占用等情况

    select n.name,

    v.value,

    n.class,

    n.statistic#

    from v$statname n,

    v$sesstat v

    where v.sid = 71 and

    v.statistic# = n.statistic#

    order by n.class, n.statistic#

    3)根据sid查看对应连接正在运行的sql

    select /*+ PUSH_SUBQ */

    command_type,

    sql_text,

    sharable_mem,

    persistent_mem,

    runtime_mem,

    sorts,

    version_count,

    loaded_versions,

    open_versions,

    users_opening,

    executions,

    users_executing,

    loads,

    first_load_time,

    invalidations,

    parse_calls,

    disk_reads,

    buffer_gets,

    rows_processed,

    sysdate start_time,

    sysdate finish_time,

    '>' || address sql_address,

    'N' status

    from v$sqlarea

    where address = (select sql_address from v$session where sid = 71)

    24.查询表空间使用情况select a.tablespace_name "表空间名称",

    100-round((nvl(b.bytes_free,0)/a.bytes_alloc)*100,2) "占用率(%)",

    round(a.bytes_alloc/1024/1024,2) "容量(M)",

    round(nvl(b.bytes_free,0)/1024/1024,2) "空闲(M)",

    round((a.bytes_alloc-nvl(b.bytes_free,0))/1024/1024,2) "使用(M)",

    Largest "最大扩展段(M)",

    to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "采样时间"

    from (select f.tablespace_name,

    sum(f.bytes) bytes_alloc,

    sum(decode(f.autoextensible,'YES',f.maxbytes,'NO',f.bytes)) maxbytes

    from dba_data_files f

    group by tablespace_name) a,

    (select f.tablespace_name,

    sum(f.bytes) bytes_free

    from dba_free_space f

    group by tablespace_name) b,

    (select round(max(ff.length)*16/1024,2) Largest,

    ts.name tablespace_name

    from sys.fet$ ff, sys.file$ tf,sys.ts$ ts

    where ts.ts#=ff.ts# and ff.file#=tf.relfile# and ts.ts#=tf.ts#

    group by ts.name, tf.blocks) c

    where a.tablespace_name = b.tablespace_name and a.tablespace_name = c.tablespace_name

    25. 查询表空间的碎片程度

    select tablespace_name,count(tablespace_name) from dba_free_space group by tablespace_name

    having count(tablespace_name)>10;

    alter tablespace name coalesce;

    alter table name deallocate unused;

    create or replace view ts_blocks_v as

    select tablespace_name,block_id,bytes,blocks,'free space' segment_name from dba_free_space

    union all

    select tablespace_name,block_id,bytes,blocks,segment_name from dba_extents;

    select * from ts_blocks_v;

    select tablespace_name,sum(bytes),max(bytes),count(block_id) from dba_free_space

    group by tablespace_name;

    26.查看有哪些实例在运行:

    select * from v$active_instances;

  • 一个比较好的视频测试网站——3A测试网(中国测试社区)

    2007-10-20 13:24:31

    http://3atesting.com/,里面有很多视频,如LR,QTP,非常不错
  • sybase界面乱码问题解决方法

    2007-10-20 13:20:08

    最近,我在XP系统上安装了个sybase12.54客户端,安装好过后,打开sybase central java,菜单上的文字全是乱码。后来经过如下处理,终于解决乱码问题:

    进入安装目录shared-1_0\jre1.2.2\lib\,将font.properties.zh.NT4.0改成font.properties.zh.NT5.1

    在网上查了下,若是2000系统出现sybase客户端乱码现象,可以如下处理:
      若是2000系统,则将安装目录shared-1_0\jre1.2.2\lib\font.properties.zh.NT4.0改为font.properties.zh.NT5.0

    如果不行,则在‘控制面板’中的‘键盘’里多添些其它语言试试。

  • oracle启动命令

    2007-10-20 13:11:00

    一、启动oracle9i数据库命令

    $ sqlplus /nolog

    SQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003

    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

    SQL> connect / as sysdba  
    Connected to an idle instance.

    SQL> startup
    ORACLE instance started.

    二、Oracle数据库几种启动方式

    1startup nomount
    非安装启动,这种方式启动下可执行:重建控制文件、重建数据库

    读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。


    2startup mount dbname
    安装启动,这种方式启动下可执行:
    数据库日志归档、
    数据库介质恢复、
    使数据文件联机或脱机,
    重新定位数据文件、重做日志文件。

    执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,
    但此时不对数据文件和日志文件进行校验检查。


    3startup open dbname
    先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,
    这种方式下可访问数据库中的数据。


    4startup,等于以下三个命令
    startup nomount
    alter database mount
    alter database open


    5startup restrict
    约束方式启动
    这种方式能够启动数据库,但只允许具有一定特权的用户访问
    非特权用户访问时,会出现以下提示:
    ERROR
    ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用


    6startup force
    强制启动方式
    当不能关闭数据库时,可以用startup force来完成数据库的关闭
    先关闭数据库,再执行正常启动数据库命令


    7startup pfile=参数文件名
    带初始化参数文件的启动方式
    先读取参数文件,再按参数文件中的设置启动数据库
    例:startup pfile=E:Oracleadminoradbpfileinit.ora


    8startup EXCLUSIVE

  • 实现在sql server2000下批量构造数据环境[转发] 感谢baishi0502

    2007-08-01 13:47:52

    在查询分析器中编写存储过程input5,实现此功能.
    前提:
    数据库中表结构如下:
    编号sid int
    姓名sname char 10
    性别sex 2
    科目item 14
    分数score int

     
    代码:
    create proc input5
    as
    begin
         declare @i int
         declare @f float
         declare @x int
         declare @sname char(10)
         declare @sex char(2)
         declare @item char(14)
         declare @score int

         set @i=1
         while(@i<=100)
         begin
               set @sname='LI'+STR(@i,3,0)
               set @f=RAND(@i)
               set @sex=RIGHT(STR(@f,7,5),1)
               set @score=CAST(RIGHT(STR(@f,7,5),2) AS int)
               if @sex='1' or @sex='2' or @sex='3'
               begin
                    set @sex='y'
                    set @item='shuxue'
               end
               else
               begin
                    set @sex='n'
                    set @item='yuwen'
               end      
              insert into test1(sid,sname,sex,item,score) values(@i,@sname,@sex,@item,@score)
             set @i=@i+1
         end
    end
    执行:
    exec input5
  • Sybase造数据[转发] 感谢gforg

    2007-08-01 13:46:05

    建表:

    CREATE TABLE "test\"."testvar" (

           "bigint" bigint NULL DEFAULT autoincrement,

           "binary" binary(1) NULL DEFAULT current database,

           "bit" bit NULL DEFAULT 12345,

           "char" char(5) NULL DEFAULT 'char',

           "CLOB" "CLOB" NULL DEFAULT current database,

           "date" date NULL DEFAULT current date,

           "datetime" "datetime" NULL DEFAULT current timestamp,

           "decimal" decimal(30,6) NULL DEFAULT autoincrement,

           "double" double NULL DEFAULT autoincrement,

           "float" float NULL DEFAULT autoincrement,

           "image" "image" NULL DEFAULT current database,

           "integer" integer NULL DEFAULT autoincrement,

           "long binary" long binary NULL DEFAULT current database,

           "long varchar" long varchar NULL DEFAULT current database,

           "money" "money" NULL DEFAULT autoincrement,

           "numeric" numeric(30,6) NULL DEFAULT autoincrement,

           "oldbit" "oldbit" NULL DEFAULT autoincrement,

           "real" float NULL DEFAULT autoincrement,

           "smalldatetime" "smalldatetime" NULL DEFAULT current timestamp,

           "smallint" smallint NULL DEFAULT autoincrement,

           "smallmoney" "smallmoney" NULL DEFAULT autoincrement,

           "sysname" "sysname" NULL DEFAULT current database,

           "text" "text" NULL DEFAULT 'text',

           "time" time NULL DEFAULT current time,

           "timestamp" timestamp NULL DEFAULT current timestamp,

           "tinyint" tinyint NULL DEFAULT autoincrement,

           "uniqueidentifier" uniqueidentifier NULL DEFAULT '1234',

           "uniqueidentifierstr" "uniqueidentifierstr" NULL DEFAULT current database,

           "unsigned bigint" unsigned bigint NULL DEFAULT autoincrement,

           "unsigned int" unsigned int NULL DEFAULT autoincrement,

           "unsigned smallint" unsigned smallint NULL DEFAULT autoincrement,

           "varbinary" varbinary(1) NULL DEFAULT current database,

           "varchar" varchar(1) NULL DEFAULT 'varchar',

           "xml" "xml" NULL DEFAULT 'xml'

    ) IN "SYSTEM";

     

    插入一条数据:

    insert into "test"."testvar" (

    "bigint","binary","bit","char","CLOB","date",

    "datetime","decimal","double","float",image,

    "integer","long binary","long varchar","money",

    "numeric","oldbit","real","smalldatetime","smallint",

    "smallmoney","sysname","text","time","timestamp","tinyint",

    "uniqueidentifier","uniqueidentifierstr","unsigned bigint",

    "unsigned int","unsigned smallint","varbinary","varchar","xml")

    values(

    1,0x74,1,'char','<NCLOB>','2007-01-14',

    '2007-01-01 00:00:00.000',1.000000,1.0,1.0,0x30303330394639322d383444342d343531352d413739362d393437384243324542314133,

    1,0x30303330394639322d383444342d343531352d413739362d393437384243324542314133,'1',1.0000,

    1.000000,1,1.0,'2007-07-11 10:19:05.031',1,

    1.0000,'1','test','10:19:05.031','2007-06-23 10:19:05.031',1,

    0x00309f9284d44515a7969478bc2eb1a3,'00309F92-84D4-4515-A796-9478BC2EB1A3',1,

    1,1,0x30,'1','xml') ;

     

    插入10000条数据

     

    WHILE (select count(*) from "test"."testvar") <= 10000 LOOP

    insert into "test"."testvar" (

    "bigint","binary","bit","char","CLOB","date",

    "datetime","decimal","double","float",image,

    "integer","long binary","long varchar","money",

    "numeric","oldbit","real","smalldatetime","smallint",

    "smallmoney","sysname","text","time","timestamp","tinyint",

    "uniqueidentifier","uniqueidentifierstr","unsigned bigint",

    "unsigned int","unsigned smallint","varbinary","varchar","xml")

    values(

    1,0x74,1,'char','<NCLOB>','2007-01-14',

    '2007-01-01 00:00:00.000',1.000000,1.0,1.0,0x30303330394639322d383444342d343531352d413739362d393437384243324542314133,

    1,0x30303330394639322d383444342d343531352d413739362d393437384243324542314133,'1',1.0000,

    1.000000,1,1.0,'2007-07-11 10:19:05.031',1,

    1.0000,'1','test','10:19:05.031','2007-06-23 10:19:05.031',1,

    0x00309f9284d44515a7969478bc2eb1a3,'00309F92-84D4-4515-A796-9478BC2EB1A3',1,

    1,1,0x30,'1','xml') ;

    end LOOP;
  • Sqlserver2000造数据[转发] 感谢gforg

    2007-08-01 13:44:32

    Sqlserver2000建表语句

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TestVar]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

    drop table [dbo].[TestVar]

    GO

     

    CREATE TABLE [dbo].[TestVar] (

    [aInt] [int] IDENTITY (1, 1) NOT NULL ,

    [aBigint] [bigint] NULL ,

    [aBinnary] [binary] (50) NULL ,

    [aBit] [bit] NULL ,

    [aChar] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,

    [aDatetime] [datetime] NULL ,

    [aDecimal] [decimal](18, 0) NULL ,

    [aFloat] [float] NULL ,

    [aImage] [image] NULL ,

    [aMoney] [money] NULL ,

    [aNChar] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,

    [aNText] [ntext] COLLATE Chinese_PRC_CI_AS NULL ,

    [aNumeric] [numeric](18, 0) NULL ,

    [aNvarchar] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

    [aReal] [real] NULL ,

    [aSmalldatetime] [smalldatetime] NULL ,

    [aSmallInt] [smallint] NULL ,

    [aSmallMoney] [smallmoney] NULL ,

    [aSql_Variant] [sql_variant] NULL ,

    [aText] [text] COLLATE Chinese_PRC_CI_AS NULL ,

    [aTimesTamp] [timestamp] NULL ,

    [aTinYint] [tinyint] NULL ,

    [aUniQueidentifier] [uniqueidentifier] NULL ,

    [aVarBinary] [varbinary] (50) NULL ,

    [aVarchar] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL

    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

    GO

     

     

    插入1条记录示例

    INSERT INTO

    [testBase].[dbo].[TestVar]( [aBigint],

     [aBinnary], [aBit], [aChar], [aDatetime],

    [aDecimal], [aFloat], [aImage], [aMoney],

    [aNChar], [aNText], [aNumeric], [aNvarchar],

     [aReal], [aSmalldatetime], [aSmallInt], [aSmallMoney],

    [aSql_Variant], [aText],

     [aTinYint], [aUniQueidentifier], [aVarBinary], [aVarchar])

    VALUES( 1,

     CAST( 123456 AS BINARY(4) ), '0101', 'aChar', getdate(),

     132.00, 123.00,'abcdefghijk' , 123.00,

    'aNChar', 'aNText,ntext,>', 12300.00,'<aNvarchar,nvarchar(50),>',

    CAST(300 AS real) , getdate(), 123.123, 123.00,

    convert(nchar(20), N'AbCdEfGhIjKlMnOpQrStUvWxYz'), '<aText,text,>',

     

    CAST(3 AS TinYint),NEWID() , CAST( REPLICATE( 0x20, 128 ) AS varbinary(32) ),

    '<aVarchar,varchar(50),>')

     

    循环插入10000条数据示例

    While (select Count(*) from  TestVar)<10000

    begin

    INSERT INTO [testBase].[dbo].[TestVar]( [aBigint],

     [aBinnary], [aBit], [aChar], [aDatetime],

    [aDecimal], [aFloat], [aImage], [aMoney],

    [aNChar], [aNText], [aNumeric], [aNvarchar],

     [aReal], [aSmalldatetime], [aSmallInt], [aSmallMoney],

    [aSql_Variant], [aText],

     [aTinYint], [aUniQueidentifier], [aVarBinary], [aVarchar])

    VALUES( 1, CAST( 123456 AS BINARY(4) ), '0101', 'aChar', getdate(),

     132.00, 123.00,'abcdefghijk' , 123.00,

    'aNChar', 'aNText,ntext,>', 12300.00,'<aNvarchar,nvarchar(50),>',

    CAST(300 AS real) , getdate(), 123.123, 123.00,

    convert(nchar(20), N'AbCdEfGhIjKlMnOpQrStUvWxYz'), '<aText,text,>',

    CAST(3 AS TinYint),NEWID() , CAST( REPLICATE( 0x20, 128 ) AS varbinary(32) ),

    '<aVarchar,varchar(50),>')

    CONTINUE

    End

  • Oracle造数据[转发] 感谢gforg

    2007-08-01 13:40:46

    DROP TABLE GF1.TESTDBA CASCADE CONSTRAINTS;

     

    CREATE TABLE GF1.TESTDBA

    (

      ACHAR       CHAR(10),

      AVARCHAR2   VARCHAR2(10),

      ANCHAR      NCHAR(10),

      ANVARCHAR2  NVARCHAR2(10),

      ANUMBER     NUMBER(10),

      ADATE       DATE,

      ALONG       LONG,

      ARAW        RAW(10),

      AROWID      ROWID,

      ABLOB       BLOB,

      ACLOB       CLOB,

      ANCLOB      NCLOB,

      ABFILE      BFILE,

      AUROWID     UROWID,

      AFLOAT      FLOAT(10),

      AXMLTYPE    SYS.XMLTYPE

    )

     

    插入一条记录

    INSERT INTO "GF1"."TESTDBA1" ("ACHAR" ,"AVARCHAR2" ,"ANCHAR" ,

        "ANVARCHAR2" ,"ANUMBER" ,"ADATE" ,"ALONG" ,"ARAW" ,"AROWID" ,

        "AUROWID" ,"AFLOAT" )

        VALUES ('char' ,'varchar2' ,'nchar' ,'nvarchar2' ,10000 ,TO_DATE('2007-01-01','YYYY-MM-DD'),1000,

        HEXTORAW('fffff'),

        CHARTOROWID('AAAA0SAACAAAALiAAA') ,

        CHARTOROWID(DBMS_RANDOM.STRING('A',18)) , 100.0  )

     

    插入10000条数据

    declare

            maxrecords constant int:=10000;

            i int :=0;

        begin

            for i in 1..maxrecords loop

              INSERT INTO "GF1"."TESTDBA1" ("ACHAR" ,"AVARCHAR2" ,"ANCHAR" ,

               "ANVARCHAR2" ,"ANUMBER" ,"ADATE" ,"ALONG" ,"ARAW" ,"AROWID" ,

               "AUROWID" ,"AFLOAT" )

              VALUES ('char' ,'varchar2' ,'nchar' ,'nvarchar2' ,10000 ,TO_DATE('2007-01-01','YYYY-MM-DD'),1000,

                                    HEXTORAW('fffff'),     CHARTOROWID('AAAA0SAACAAAALiAAA') ,    CHARTOROWID(DBMS_RANDOM.STRING('A',18)) , 100.0  );

                commit;         

            end loop;

        dbms_output.put_line(' 成功录入数据! ');

        commit;

        end;
  • WEB测试

    2007-07-28 23:38:14

       在对WEB进行测试时,在测试的过程中,很容易忽略异常情况的测试,而程序往往就是没有对这些异常进行适当的处理。从而发生异常时,页面就会出错。现就自己在测试工作,用过的一些异常测试做一些小结。

       1、输入框的测试
          ①输入html语言,WEB中,若程序没有对输入html的情况做处理,往往后果是致命的,小则造成页面显示混乱、链接不再起作用,大则会破会整个WEB页面。在测试时,可以在输入框中输入一些html语言,看系统是否对其处理。
          ②若对输入数据长度、类型、范围有限制,那么就输入限制范围之外的数据,如要求输入数字,则故意非数字的值;要求输入类型为日期的数据,则故意输入非日期形式的数据;要求输入数字或字母,则故意输入汉字。总之,在输入框中输入和要求的长度、类型、范围不相符合的数据,然后提交,系统应该有容错功能。
          ③什么都不输入,直接提交,系统应该有相应的提示。
          ④输入sql语句,然后提交。如输入select * from users where username= ōr = and password = ōr = 之类的语句,这种情况网上已经讨论得很多了。也包括其它侵入式脚本,如可以修改某些控件属性,修改字体大小等脚本
          ⑤若系统要求数据唯一时,在增加某条数据时,故意重复增加系统已经有的数据,系统应该对重复增加数据的情况做处理;若重复增加系统中已经有的数据不成功,那么增加一条系统中没有的数据,然后修改该数据,在修改输入框中,将数据修改为系统中已有的数据,系统应该做相应的限制。
          ⑥有些WEB系统,对输入框的验证方法是逐一对输入数据进行验证,即输入一个字符,系统判断一次,如果输入信息不符合要求,则给出提示,在这种情况,可以尝试先在notepad等工具中输入想要输入的字符串,然后将该字符串复制,并粘贴到输入框中,再提交,看系统是否对粘贴进来的数据做了验证,若未验证,将会出错。
          ⑦在诸如注册之类的多个输入框,一般系统都会要求某些输入框必须输入内容,并用醒目的标志表示该输入框必须输入,此时,可以只在要求必须输入的输入框中输入测试数据,然后直接提交,若系统还提示某个属性没有输入,而这个属性没有用醒目的标志标示出来,那么问题就显而易见了。虽然问题不是很大,但对界面测试来说,这是不行的。其实这条是界面测试内容。关于界面的测试,以后会陆续谈到。
          ⑧
          ⑨
          ⑩

       2、刷新测试
       用户在浏览WEB时,如果遇上网络等原因,造成网页显示速度慢,常常会按键盘上的F5键进行快速刷新操作,这种情况在有些时候会出现问题。如我测试的一个系统,系统要求同一时刻,不能用相同的帐号在两个地方登录,所以在程序中做了一些限制。这样,只有在WEB中点了注销或退出等按钮,或者直接关闭IE,该帐号才能在其它地方被登录。但是我发现了一个问题,就是我用帐号登录后,直接按F5键刷新,这时页面进行了刷新,同时系统给出提示:该帐号已经登录了,我再次登录,就不能登录进去了。所以,在测试时,按F5键也能发现一些问题。

        3、SQL注入测试:
       这种例子在网络上已经讨论了很多了,主要就是在浏览器地址框中增加sql语句,让系统强制执行sql语句,从而达到非法目的。如:当URL为 http://www.example.com/Article.asp?ID=1055
    把ID值偷换为“0 or 1=1”等内容(也就是说,把 URL 换成 http://www.example.com/Article.asp?ID=0 or 1=1) 从而诱使 ASP 脚本生成不安全的 SQL 指令如:
    代码:Select * FROM tblArticles Where ID=0 or 1=1
    于是,数据库将会返回所有内容。

     

    未完,待续……

    望各位多多指教!谢谢

  • 测试工具下载地址大全【转】

    2007-07-27 20:02:45

  • 不错的测试网站(有很多技术讲座)

    2007-07-27 19:48:38

数据统计

  • 访问量: 12551
  • 日志数: 17
  • 图片数: 1
  • 文件数: 5
  • 书签数: 1
  • 建立时间: 2007-07-27
  • 更新时间: 2007-12-31

RSS订阅

Open Toolbar