心有多大,舞台就有多大,希望结识做网站测试的朋友们; 测试需要横向扩展也需要纵向延伸 我相信自己会在测试的道路上走的很远..............................

发布新日志

  • 工作总结(二)

    2010-02-20 10:00:03

  • 工作小结(一)

    2010-01-24 20:43:09

  • 无题

    2009-12-30 20:15:00

       离职了,明天就要到新的公司报到了,在这个公司呆了半年多了,当今天真的离开时,心里竟有些不舍,MSN上和比较好的同事说了些道别的话,感觉心里酸酸的。
       公交车上,我不禁想到,曾经的同事也许以后再也不会见到,那些因为某种原因在某种场合相识的又何尝不是这样呢?匆匆的相遇过后,便是匆匆的别离,匆匆的来,匆匆的走,我们似乎把握不了永恒。于是,便成了彼此生命中的过客。
       我希望自己生命中的所谓的过客能够成为永恒。。。。。。。。。。。。
       伤感。。。。。。。
       明天就要开始新的环境、新的挑战了,准备好了,等待出发。。。。   
  • Software testing in my eyes

    2009-12-24 10:50:38

        As far as I know software testing as a new industry has developed about at least five years. Especially recent years it grows very quickly. More and more software testing training schools are built up and more and more people join to this industry.
       It seems that the industry is very booming and one can get high salary very easily. But I think that this phenomenon is transient. With the increase of the tester supply, the demand for the tester will be reduced. And to a certain sense, the requirement for the tester will be higher and higher. When referring to the salary, the company will not only consider the work experiences , the important factor is the skills and the ability. It means that if one wants to find a good or satisfied job, she or he should have a competing skills and abilities.
       In my eyes, as a excellent tester, one should master the following skills.
    1. Master at least one kind of development language.
    2. Be familiar with one kind of database
    3. Master windows and linux operation system, especially linux
    4. Have a good knowledge of automatic testing tools, e.g. LR and QTP
    5. Be good at writing and oral English
    6. The ability of learning new knowledge
    7. Good communication with the developers
    8. Have a deep understanding of software testing thoughts

       For me, I have more things to learn and a long road to walk.
  • vm linux网络设置

    2009-12-21 22:17:01

    转自:http://www.5dlinux.com/article/1/2007/linux_7862.html
       今天试了很多种方法,都是网上看到的,有的说要桥接方式,NAT方式,又说要如何设VMnet1,VMnet8,其实不用那么复杂,按照以下方法就行

      1,选桥接方式(其实这个关系不大,关键选个方便)

      (1)Bridged方式
      用这种方式,虚拟系统的IP可设置成与本机系统在同一网段,虚拟系统相当于网络内的一台独立的机器,与本机共同插在一个Hub上,网络内其他机器可访问虚拟系统,虚拟系统也可访问网络内其他机器,当然与本机系统的双向访问也不成问题。

      (2)NAT方式
      这种方式也可以实现本机系统与虚拟系统的双向访问。但网络内其他机器不能访问虚拟系统,虚拟系统可通过本机系统用NAT协议访问网络内其他机器。

      NAT方式的IP地址配置方法:虚拟系统先用DHCP自动获得IP地址,本机系统里的VMware services会为虚拟系统分配一个IP,之后如果想每次启动都用固定IP的话,在虚拟系统里直接设定这个IP即可。

      (3)host-only方式
      顾名思义这种方式只能进行虚拟机和主机之间的网络通信,既网络内其他机器不能访问虚拟系统,虚拟系统也不能访问其他机器。

      2,先用DHCP自动获得IP地址,用ifconfig命令查看得到的IP地址,我的是192.168.1.2,然后把得到的这个IP,设为手动IP(并不是你爱设什么就设什么),子掩码255.255.255.0,网关(设自己局域网的)

      3,重启网络服务service network restart就可以上网啊,跟主机连通。
    cd /etc/sysconfig/network-scripts/
  • 如何找出深层次bug

    2009-12-21 15:17:18

      好久没有写日志了,近一段时间,工作不忙,但心里很紧张,希望事情能顺利进展。刚才看到一篇文章,感觉写的很不错,转过来以备以后学习之用。

       转自http://www.51testing.com/?2730

       在我们日常的测试活动中,单纯的功能界面测试(黑盒测试)发现的缺陷质量不高,即使发现了,也很少能从根本上去定位,这样的bug提交上去,给我们的研发同事修复带来了困难,同时也不利于提高我们自身的能力。这里我介绍一下个人的经验。

    1、按照需求说明编写用例,然后严格执行,这个方法最常见。

    2、在发现问题后,不要立刻就想着提交bug,应该做下记录,然后自己尝试着去分析这个问题产生的原因,比如看一下源代码,有些问题测试人员是可以自己定位的,只要自己确认了,提交上去的bug质量会更高。比如,执行搜索的时候,输入某个字段值,没有搜出来,查看代码后,发现sql语句并未执行,这时,我们再提交bug,描述里可以具体到那个页面文件,那个源代码,研发同事定位也方便,同事也对我们的技术能力认识上有改变。

    3、如果测试环境带有控制平台,比如tomcat,jboss,weblogic等等,都有控制平台,那么我们测试的时候,不仅仅需要关注前台的页面表现,还要看监控平台上的信息日志。有些系统对错误页面做了处理,我们在发现这类问题的时候,顶多将处理过的错误页面写到bug中,根本的原因可能无法得知,其实我们可以利用控制平台获取真正的错误原因,写到bug中。

    4、结合数据库进行测试,一般流程性的测试,最重要的就是数据在数据库中的状态变化。比如移动的项目,很多是异步的,光从页面是看不到效果的,所以我们可以结合数据库进行测试,弄清楚数据在数据库中的流转流程,这样才能发现更深层的bug,当然需要我们掌握数据库的使用,尤为重要要的是sql语句。举个例子,进行添加操作的时候,添加完成后没有反应,可能有两种情况,第一,添加根本未成功,第二,添加成功了,没回显出来,那么我们可以通过sql查一下添加的数据,如果数据库中有了,就说明回显出了问题,如果没有,就说明insert 出了问题。

    5、可以查看系统的日志检查测试过程中的问题。一切异常都需要关注

  • XP下,php,apache的安装

    2009-11-14 20:01:55

    PHP 的安装

    由于php是一个zip文件(非install版),安装较为简单
    解压就行.把解压的 php-5.2.1-Win32 重命名为 php5.并复制到C盘目录下.即安装路径为 c:\php5 

    1  找到php目录下的 php.ini.recommended (或者php.ini-dist)文件,重命名为 php.ini
    并复制到系统盘的windows目录下(以c:\windows为例). 

    2  再把php目录下的php5ts.dll,libmysql.dll复制到目录 c:\windows\system32下.

    3  把php5\ext目录下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件复制到c:\windows\system32下 
    注意:不要把 php_mysql.dll 和 php_mssql.dll 混淆
    如果没有加载 php_gd2.dll  php将不能处理图像.没有加载php_mysql.dll php将不支持mysql函数库
    php_mbstring.dll在后面使用phpmyadmin时支持宽字符

    Apache整合PHP

    1 打开apache配置文档,以作者的电脑为例:D:\myphp\apache2.2\conf\httpd.conf

    2 修改网站根目录
    查找DocumentRoot有这么一行
    DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
    这就是你网站的根目录,你可以修改,也可以用默认的.如果改,还要修改下面这项,否则可能会出现 403 错误
    查找  This should be changed to whatever you set DocumentRoot to
    在它下面两行有
    <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">
    把上面两项的 C:/Program Files/Apache Group/Apache2/htdocs 改成你想要的目录

    3 查找  DirectoryIndex index.html
    修改成
    DirectoryIndex index.html index.html.var index.php 
    这样index.php 可以充当默认页面了 

    4 Apache中模块化安装php
    查找 # LoadModule foo_module modules/mod_foo.so
    在此行后加入一行
    LoadModule php5_module C:/php5/php5apache2_2.dll

    (其中C:/php5/php5apache2_2.dll是你安装php的相应路径.
    注意不要把php5apache2_2.dll,php5apache2.dll和php5apache.dll混淆.php5apache.dll只适用于apache 版本1的.
    PHP5压缩包里的php5apache2.dll只适用于apache2.0.*版本,如果是2.2.*以上版本,必须使用php5apache2_2.dll.否则就可能会出现
    "Cannot load C:/php/php5apache2.dll into server: The specified module could not be found."
    或者:
    "The requested operation has failed"
    的情况.
    不过php5apache2_2.dll出来之后也就没有多少参考价值了)

    5 查找 AddType application/x-gzip .gz .tgz
    在此行后加入一行
    AddType application/x-httpd-php .php 
    这样apache就可以解释php文件了 
    到这里配置基本完成了 

    6 重启apache,在网站根目录下创建一个 phpinfo.php 文件

    <?php
    phpinfo();
    ?> 

    在浏览器中打开。如果能正常看到php的信息,则说明php已经配置好了。

    配置php并关联MySQL

    打开c:\windows\php.ini文件
    1 设置扩展路径
    查找 extension_dir 有这么一行
    extension_dir = "./"
    将此行改成
    extension_dir = "C:\php5\ext" 
    其中C:\php5是你安装php的路径.路径不正确将无法加载dll 
    (注意:有些php版本是 ;extension_dir = "./" 要把前面的分号去掉)

    2 分别查找 
    ;extension=php_mbstring.dll
    ;extension=php_gd2.dll
    ;extension=php_mysql.dll
    把上面3项前面的分号去掉,这样apache启动时就可以加载这些dll了
    注意不要把 ;extension=php_mysql.dl  和 ;extension=php_mssql.dl 混淆 
    当然前面我们也把这些dll复制到system32下了.(大家在安装的过程中都注意到如何把一些dll加载入来了.
    以后要加载一些dll,比如说php_mysqli.dll,也就懂得怎么加载了)

    3 设置会话保存路径
    查找session.save_path 有这么一行
    ;     session.save_path = "N;/path"
    在此行后加入一行(注意是加入一行,不是加到后面)
    session.save_path = "C:\WINDOWS\Temp" 
    保存到你的临时目录下,这里完全可以保存到windows临时目录Temp下 

    4 还有比较值得注意的是 short_open_tag .有一些php版本默认是Off的.
    也就是说 php不能使用短标记如 <? ?> 必须使用<?php ?>
    由于短标记使用方便,并且很多程序也是用短短标记来写,如discuz等
    如果不把 short_open_tag 改成On将出现的症状将很难判断是上面原因,这里建议修改 
    查找
    short_open_tag = Off
    改为
    short_open_tag = On 

    5 是否显示错误 display_errors 
    出于安全性考虑,display_errors 有些版本也默认为 Off.
    就是说在调试时,如果php代码有误,就只出现一个空白页.而不会显示出错原因和出错行数.
    这样调试起来将非常不便,建议根据自己需要修改
    查找
    display_errors = Off           (注意不是 ; - display_errors = Off           [Security])
    改成
    display_errors = On 

    6 显示NOTICE敬告提示
    第五步虽然打开了出错提示,但出错报告还受到 error_reporting 的控制.
    php5默认关闭NOTICE敬告提示,如果是在本地调试,建议打开NOTICE敬告提示.
    查找
    error_reporting  =  E_ALL
    改成
    error_reporting  =  7

    另外提示一下,在程序中也可以通过error_reporting()控制错误报告输出,具体怎么用大家参考下手册.

    7 register_globals
    出于安全性考虑它默认也是Off
    当register_globals=Off的时候,下一个程序接收的时候应该用$_POST['user_name']和$_POST['user_pass']) 
    当register_globals=On的时候,下一个程序可以直接使用$user_name和$user_pass来接受值. 
    建议根据自己需要修改,为了兼容问题,我还是把它改成On了.

    8 php5时差问题
    <?php echo date("Y-m-d H:i:s");?>时间相差八小时
    为什么呢?PHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时
    查找date.timezone有这么一行
    ;date.timezone =
    将;去掉,改成
    date.timezone = PRC 
    其中PRC:People's Republic of China 中华人民共和国, 

    9 php5上传文件问题
    a. 一般的文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.
    但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停止执行.
    这就导致出现 无法打开网页的情况.这时我们可以修改 max_execution_time

    在php.ini里查找 
    max_execution_time
    默认是30秒.改为
    max_execution_time = 0 
    0表示没有限制

    另一种方法是可以在php程序中加入
    set_time_limit();
    来设定页面最久执行时间.
    set_time_limit(0);//0表示没有限制

    b. 修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到文件上传。
    php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.
    查找 post_max_size .改为
    post_max_size = 150M

    c. 很多人都会改了第二步.但上传文件时最大仍然为 8M.
    为什么呢.我们还要改一个参数upload_max_filesize 表示所上传的文件的最大大小。 
    查找upload_max_filesize,默认为8M改为
    upload_max_filesize = 100M

    另外要说明的是,post_max_size 大于 upload_max_filesize 为佳.
  • XP,ASP,IIS配置,出现不能注册问题,解决方法

    2009-11-08 21:46:38

    出现无法对数据库进行写操作,所有与数据库相关的提交操作都是错误多多,且局域网用户也无法访问自已的网站。

    这主要是数据库只读,只需要把数据所在文件夹设置一下安全性即可,哪么怎么设置解决呢?
    1.工具-》文件夹选项-》查看-》把 使用简单文件共享(推荐)前面的扣去掉。
    2.把网站数据库所在文件夹安全性设置一下,Users的安全性设置为完全控制。

    按照如上方法,问题解决,好高兴。
  • 查询测试用例设计 转+自创

    2009-10-26 16:52:33

      以下总结中,输入一些特殊符号进行查询,是我没有想到的:

    查询输入

      (1)分别对单条件进行精确查询

      (2)输入长度的检验,输入允许的最长值进行查询,是否支持

      (3)两个查询条件是否为2选1,来回选择是否出现页面错误

      (4)输入字符

      (5)输入特殊字符

      (6)输入数字

      (7)输入汉字

      (8)输入关系表达式 与、或、异或、非、等于

      (9)输入空格

      (10)条件中含有空格

      (11)输入超长字符

      (12)输入全角字符

      (13)输入单引号

      (14)输入单引号引起来的数据

      (15)输入双引号

      (16)输入双引号引起来的数据

      (17)如果支持模糊查询,输入部分查询条件

      (18)输入系统中不存在与之匹配的条件

      查询结果检查

      (1)查询结果按什么顺利排序

      (2)查询结果是否根据字段显示排序功能

      (3)查询结果是否有分页,如果有,每页最多包含多少记录

      (4)查询结果是否匹配

      (5)查询结果是否与数据库一致

      (6)查询结果是精确查询还是模糊查询

      UI验证

      (1)文字显示是否正确

      (2)页面是否有错别字

      (3)输入框大小、文字大小是否合适

      (4)页面是否美观

      (5)查询结果字段显示是否与需求一致

      性能方面

      (1)查询处理时间是否能接受

      (2)数据库中存在大数据量数据时,查询时间是否能接受

      (3)当多个用户同时查询时,输入相同或不同的查询条件系统响应是否及时

    以下是我自己总结的:

    对于查询功能,同样可以从以下几个方面来进行用例的设计:

    1、功能方面考虑:应用边界值和等价类划分法进行用例的设计

    边界值:输入最大长度的文本,能否搜出来?输入空格或空,能否搜索出来?

    等价类:要考虑到一些特殊符号的输入查询。

    2、易用性方面

    3、界面方面

    4、安全角度:比如输入一些脚本语言,看是否执行,主要是防XSS攻击问题

    5、性能角度:查询效率、并发、响应时间问题的考虑






  • 诊断 CPU、内存或磁盘瓶颈诊断说明<转>

    2009-10-21 18:14:29

    从步骤1开始,首先查看CPU使用情况,按照诊断CPU、内存或磁盘瓶颈的指导进行操作。对于下面的每个步骤,查找一端时间内的趋势,从中收集系统运行性能较差时的数据。另外,只有将这些数据与系统正常运行时收集的数据进行比较时才能进行准确的诊断。

    步骤1

    # sar -u [interval] [iterations]
    (示例: sar -u 5 30)
    %idle是否很低?这是CPU未在运行任何进程的时间百分比。在一端时间内%idle为零可能是CPU瓶颈的第一个指示。

    不是->系统未发生CPU瓶颈。转至步骤3。
    是->系统可能发生了CPU、内存或I/O瓶颈。转至步骤2。

    步骤2

    %usr是否较高?很多系统正常情况下花费80%的CPU时间用于用户,20%用于系统。其他系统通常会使用80%左右的用户时间。

    不是->系统可能遇到CPU、内存或I/O瓶颈。转至步骤3。
    是->系统可能由于用户进程遇到CPU瓶颈。转至部分3,部分A, 调整系统的CPU瓶颈。

    步骤3

    %wio的值是否大于15?

    是->以后记住这个值。它可能表示磁盘或磁带瓶颈。转至步骤4。
    不是->转至步骤4。

    步骤4

    # sar -d [interval] [iterations]
    用于任何磁盘的%busy是否都大于50? (请记住,50%指示一个大概的 指南,它可能远远高于您系统的正常值。在某些系统上,甚至%busy值为20可能就表示发生了磁盘瓶颈,而其他系统正常情况下可能就为50% busy。)对于同一个磁盘上,avwait是否大于avserv?

    不是->很可能不是磁盘瓶颈,转至步骤6。
    是->此设备上好像发生了IO瓶颈。
    转至步骤5。

    步骤5

    系统上存在磁盘瓶颈,发生瓶颈的磁盘上有哪些内容?

    原始分区,
    文件系统->转至部分3,部分B,调整发生磁盘IO瓶颈的系统。
    Swap ->可能是由于内存瓶颈导致的。
    转至步骤6。

    步骤6

    # vmstat [interval] [iterations]
    在很长的一端时间内,po是否总是大于0?
    对于一个s800系统(free * 4k)是否小于2 MB,
    (对于s700系统free * 4k是否小于1 MB)?
    (值2 MB和1 MB指示大概的指南,真正的LOTSFREE值,即系统开始发生paging的值是在系统引导时计算的,它是基于系统内存的大小的。)

    不是->如果步骤1中的%idle较低,系统则很可能发生了CPU瓶颈。
    转至部分3,部分A,调整发生了CPU瓶颈的系统。
    如果%idle不是很低,则可能不是CPU、磁盘IO或者内存瓶颈。
    请转至部分4,其他瓶颈。
    是->系统上存在内存瓶颈,转至部分3部分C,调整发生内存瓶颈的系统。
  • LoadRunner监视服务器LINUX的方法(全面)<转>

    2009-10-21 15:19:38

    一、在服务器上安装rstatd守护进程
    安装步骤:
    1. 从网上下载rstatd
    2. 将该文件放到/home/user目录下
    3. chmod 777 rpc.rstatd----改变该文件读写的权限,拥有所有权限。
    4. chmod 777 configure ---同上
    5. ./configure ---配置
    6. make ---编译
    7. make install ---安装
    8. rpc.rstatd ---启动rstatd进程
    二、在lr中配置
    从LR里面add measurement, 填写linux机器的IP,出现所有unix/linux的计数器,包括cpu的,mem的,disk,network的。介绍几个常用的:
    average load :在过去的1分钟,的平均负载
    cpu utilization: cpu的使用率
    disk traffic: disk传输率
    paging rate: 每秒从磁盘读到物理内存,或者从物理内存写到页面文件的内存页数
    Swap-in rate: 每秒交换到内存的进程数
    Swap-out rate: 每秒从内存交换出来的进程

    补充一些常见的问题及处理方法:
    1、在执行配置或安装命令过程中出现“拒绝的权限”的提示;
    答:是由于文件的权限引起的,应该给当前用户所有文件的“777”权限,即完全控制权限。
    2、安装好后从LoadRunner中看不到信息,但是没有报错;
    答:可能是返回的信息值比较小,所以在图中几乎看不到,例如:如果没有运行程序的话,CPU的使用率接近于0,所以在监视图中看不到变化。也有可能是采样的频率过大,可以在图表中设置没1秒获取一次信息,这样界面就刷新的比较及时了。
    3、监视一段时间后LoadRunner中提示有错误发生不能继续监视到信息;
    答:可能是由于CPU长时间处于高负荷状态,而导致系统自动关闭了该服务。可以在LoadRunner中重新加一次计数器,并且设置取样的时间稍长一点,就会避免这种情况。
    4、以前用LoadRunner监视都是成功的,但是再次监视不到信息;
    答:有可能是由于系统重新启动,而没有打开rstatd守护进程。可以手工重新打开一次,使用命令“rpc.rstatd”,另外可以使用“rpcinfo -p”命令来查看当前系统是否已经启动了rstatd守护进程。



    ----------------------==========================-------------------------


    看了网上有不少这方面的资料,自己亲自动手在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系统的性能情况了。
  • LR,IP欺骗设置问题总结

    2009-10-20 14:31:07

        弄了好长时间,IP欺骗问题终于解决了,现在把IP欺骗问题总结如下:
    1、 本地的IP设置不能为“自动获取”,必须指定一个静态IP

    如果本地是动态获取IP,在运行IP Wizard时会弹出提示:

    The IP wizard does not support DHCP-enabled network cards.

    Your cards are either DHCP-enabled or configured with invalid settings.

    Please contact your system administrator.

    此时只需要将IP地址改成静态IP地址就可以了

    2、 所添加的IP只能是局域网内的网段

    只能添加192段,127段,10段IP地址

    3、添加IP地址

    第一步:

    运行Mercury LoadRunner- Tools-IP Wizard

    第二步:

    选择create new setting,点击“下一步”

    此时出现的页面是让输入服务器的IP地址,loadrunner通过该地址更新路由表。

    客户端计算机上添加新的IP地址后,服务器需要将该地址添加到路由表,以便能够识别返回到客户端的路由。如果服务器和客户端具有相同的子网掩码、IP 类和网络,则不需要修改服务器的路由表。

    注意: 如果客户端和服务器计算机之间有一个路由器,则服务器需要识别经过该

    路由器的路径。确保将以下路由添加到服务器路由表:从 Web 服务器到路由器

    的路由,以及从路由器到负载生成器计算机上的所有 IP 地址的路由。

    第三步:

    在输入服务器地址的页面中不输入任何地址,直接点击“下一步”

    进入IP添加页面

    点击“add”进行添加

    第四步:

    在from ip 输入框中输入起始ip,在Number to输入框中输入ip地址的位数

    输入正确的子网掩码

    选中“verify that new ip addresses are not already used”

    点击“ok”,此时IP Wizard会自动按照设置生成IP地址,并且将已经占用的IP列出

    第五步:

    确认可用IP地址列表内容后,点击“ok”

    此时IP Wizard提示需要重新启动计算机,点击“save as”保存IP列表

    点击“ok”,重新启动计算机

    第六步:

    计算机重新启动后,在运行行中输入:CMD,在DOS命令窗口中输入:IPCONFIG,此时便可看到虚拟的IP地址均已经被启用


    4、在loadrunner中使用虚拟IP

    第一步:

    打开controller,在controller中,选择 Scenario-〉Enable IP Spoofer,此项设置允许使用IP欺骗。

    第二步:

    设计场景:

    有两种方案来设计场景

    1、 本地使用虚拟IP设计场景(不带负载生成器使用localhost进行测试)

    在设置该类场景时,在场景中添加一个录制好的脚本,该脚本中添加如下代码便可看到虚拟用户在使用哪个IP地址进行消息发送,该场景是通过线程方式进行性能测试。

    char * ip;

    ip=lr_get_vuser_ip();

    if (ip)

    {

       lr_vuser_status_message("The ip address is %s",ip);

    }

    else

    lr_vuser_status_message("IP spoofing disabled");

        在controller中执行该脚本时,查看虚拟用户运行状态,便可看到当前虚拟用户使用的哪个IP地址发送消息

    2、 负载生成器使用虚拟IP设计场景

    在设置该类场景时,需要添加负载生成器,建立负载生成器时输入创建的虚拟IP,每个负载生成器为一个虚拟用户组,该场景是通过进程方式进行性能测试。

    如何添加负载生成器创建场景在这里就不多描述了。

    但需要注意,选中Tools下的Expert mode,启动专家模式

    再点击Tools下的options

    在Genearl选项卡中设置已线程方式或进程方式进行性能测试,这个选项一定要与当前场景的模式相匹配,也就是说使用本地虚拟IP测试时需要选中线程方式,使用负载生成器使用虚拟IP测试时需要选中进程方式

    5、使用虚拟IP测试完成后

    打开IP Wizard,释放所有虚拟IP。

    重新启动计算机


    注意:

    利用 ip wizard增加的ip地址,可以通过在cmd输入ipconfig /all命令进行察看ip,还可以在网上邻居—属性—本地连接—属性—internet协议(tcp/ip)的属性—高级—ip设置中察看ip地址,我们可以在这里添加ip地址,删除ip地址。其中这里的添加ip地址功能等于利用loadrunner中的ip wizard增加的ip地址。
      1、设置的虚拟ip地址与是否在自己网段内没有影响,如:自己的ip为:154.16.45.84,设置的10个虚拟ip:192.168.1.1.....192.168.1.10。
      2、最好是设置完ip后要重新启动机器,ping一下,在cmd中察看一下(config /all)。
      3、在controller中打开Scenario - Enable IP Spoofer,和Tools > Expert mode(这一项我不知道有什么用途,请高手指名)。
      4、一定要把程序中的LoadRunner Agent Process打开,要不然连接不上。Advanced settings 》 Agent configurations进行相应的设置。

      5、要虚拟很多IP的情况:在一台机上虚拟的IP跨网段的处理,可通过在服务器端添加路由来实现。

    例:
    【服务器】IP:192.168.0.1
    【测试机】IP:192.168.0.2
    测试机上添加的虚拟IP: 192.168.10.1~254

    那么在【服务器】端执行以下命令:
    route add 192.168.10.0 mask 255.255.255.0 192.168.0.2
    注:【格式: route add 虚拟IP网段号 mask 255.255.255.0 测试

  • some enlightment

    2009-10-19 11:58:15

      Just now,I scaned a tester's blog and read some articles.I get some enlightment and passion.
       I always ask myself why i can't write some deep articles about testing.And the answer I give myself is that I am lack of thinking about testing.
       I think an excellent tester should have some basic of testing theory,master at least one kind of programming language,be familar with some databses and some operation systerm.Of course,the important thing during testing is the ability that communicating with developers and customers.
       I gradually realize that I am bad at communicating with developers.And I always try my best to improve this ability.I feel that I have some improvement.
       When I chatted with the author of the blog,she said that she was on business in Sydney.I am very admired her.Because I always feel that being business on abroad for me is a hard thing,although I am looking forward that one day I can also say to somebody I am on business on aboard.hehe.
       I should try my best to do my things.
       I believe everything depends on myself.If you want that kind of life,then you will have as long as you work hard toward that direction.
       Hope my dream can come earlier!!
      
  • 转:容易遗漏的测试地方

    2009-10-19 10:50:23

       这篇文章写的非常不错,转过来学习下。

       通常软件测试会暴露软件中的缺陷,经过修正后可以保证软件系统的功能满足需求并正确运行。但是,在系统测试和确认测试中,测试人员容易遗漏一些隐藏的缺陷。众所周知,软件测试不可能发现所有的缺陷,而软件开发周期各个阶段仍然存在注入缺陷的可能,但是,有一些缺陷是测试中容易忽略的,也就是说,通过测试方法和用例可以充分暴露这些缺陷,遗憾的是,它们往往被忽略或者某种原因忘记测试了,这就给软件留下了隐患或者危机。这些容易被忽略的缺陷包括:

      1、安装缺陷

      通常项目组完成代码后,发布时候安装打包是最后一个环节,而软件测试人员通常在测试的时候,没有仔细的测试这一部分,而把用例集中在其他功能上。安装时候的缺陷通常通过拷贝而不是运行安装程序方式给测试人员安装软件,结果正式安装时候出现问题,引起例如控件没有注册,注册表没有导入等。删除时候没有注意安装文件夹是否存在用户文件,造成数据丢失;使用绝对路径;安装顺序没有说明书。

      2、配置文件

      有些文件在ini等配置文件中写出了管理员口令密码等信息,而且是明文的!这是一个安全隐患。另外,有些安装文件的XML文件,为了方便在数据库和中间层连接文件中写入了Admin口令和密码。作为一个合格的软件测试人员,必须检查这些可以用记事本打开的文件。因为,一个稍有常识而且喜欢探索的用户,可能从中获取信息而成为不自觉的黑客。所以,配置文件可能成为软件安全方面的一个缺陷。

      3、网页安全缺陷

      现在网站开发已经注意到:登陆网站进入其内部网页后,直接拷贝网址,然后粘贴到另一IE窗口输入,可以绕过登陆直接访问。也许商业网站很关注这个问题,但是很多行业软件却很容易忽略。

      网页安全缺陷还可能存在于IE弹出的子窗口。有些设计不严格的软件,在主页面关闭的时候子页面还可以运行,这是一个明显的漏洞,而且还大大增加了错误发生的几率。

      4、判断顺序/逻辑缺陷

      对界面进行多个输入判断的时候,非常容易出现这种问题。例如判断年月顺序,判断长度,判断非空等。假如操作员仅仅满足单个条件,保存不能成功;而按界面从上之下顺序一一满足条件之后,保存是没有问题的。但是,改变一下输入的次序,校验失效。例如,一一满足条件之后,不保存,倒过来将上面的输入改成非法输入,然后保存,结果居然也能成功,这是因为原先的判断由于发生过,或者根据语句顺序只检查最后一个判断,所以没有报错。这种错误尤其在Java scrīpt脚本的页面中要注意。能够保存不能保证数据正确,有可能引起系统崩溃或者后续数据错误。所以,在测试的时候,不要按照正常的顺序输入,而是要打乱步骤,看看代码是否强健,是否在判断逻辑上没有错误。良好的代码应该经得起折腾,至少保存时会再此全部进行判断,而不只是简简单单走到判断的最后一行。

      5、调试语句和冗余信息

      维护项目和升级改造的推广系统最容易潜伏这类缺陷。典型表现在没有删除或者屏蔽调试语句。弹出一个界面不友好的提示信息,会使不明真相的用户产生误以为系统发生了严重故障,从而引起对软件的不信任感。页面中某个角落存在当前客户不需要的冗余按钮和功能也是一种缺陷。多余的功能会使用户以为是额外附加部分而去使用,其结果可想而知;而多余的按钮会误导好奇心强的用户操作,产生不必要的错误。

      同样值得关注的还有参数设置,由于没有实际数据,开发人员在调试或者单元测试的时候,习惯性的进行自我设定而忘了删除,软件测试人员可能会忽略掉了这部分测试,也可能导致在客户现场发生错误而影响系统发布和验收。

      6、不可重现的故障

      新参加软件测试的人员或者新来的开发人员总是要问,不可重现的缺陷是否需要记录,有必要吗?回答是肯定的。测试必须如实的记录发生的问题,也许不能重现,或者使非软件系统本身问题,但是,可能这些偶然性背后是有规律的,不记录这些,就不可能发现这些规律。

      7、多节点的逆向流转缺陷

      当前软件不少喜欢使用工作流来驱动。工作流的问题,就是可能出现多个流向分支。测试容易忽略的部分,就是工作流多节点的逆向流转。例如,通过不通过涉及两个分支,但是流程逆转的时候,有可能不是回到上一节点而是平级的另一个节点去了。软件测试要格外注意这类用例的设计。另外,有些时候默认分支在向前的时候是有默认值的,例如默认通过,那么保存的时候要提示用户是否通过,否则可能由于操作疲劳而走错了节点,引起回退。

      8、输入框缺陷

      试过往输入框粘贴数据而不是直接输入吗?可能这里会出现问题。按Ctrl+V的时候,输入框会根据长度大小自动截断输入长度。但是用鼠标,截断可能会失效。有一次测试人员就是用这种方法把一篇Word文档输入进去了,保存的时候,数据库崩溃。有些网站登陆的口令****可以拷贝下来的,只要放在剪贴板里面马上明文显示。(在以后的测试中需要注意的)

      输入框可以说是问题最多的部分,能够引起的麻烦也很多。日期、数字、文本等等,都需要耐心的测试一下。

      9、界面布局缺陷

      曾经有一次,项目经理回来向测试部反映一个问题,客户对界面不满意。原因很简单,因为界面上删除按钮和保存按钮挨得很近。结果有些操作不熟练的业务人员,很容易误按。这个问题是测试人员没有意料到的,因此注意关闭、删除、退出按钮与保存、下一步等按钮的距离。类似的按钮应按此规则排列分布。

      界面布局还可能发生在窗口最大化和最小化上,有可能窗口缩小的时候没有下拉框或不匹配分辨率,对用户来讲,这个错误实在很低级。有些用户由于操作习惯,非常不喜欢腾出手使用鼠标,尤其是大量输入的界面,因此,要注意设置键盘的快捷方式。还有,按Tab定位到下一焦点时要注意顺序,避免跳转太灵活而让操作人员感到无从适应,在界面进行维护或者修改的时候,不要忘了软件测试开发人员是否无意改变了这些快捷方式和跳转顺序。

      10、版本和补丁包的环境问题

      理论上讲,这属于兼容性测试应该覆盖的问题。有些客户很喜欢更新最新的软件版本或者微软时不时打些补丁包,问题就出现了。有时候升级不一定是好事。这些问题最好在测试的时候增加几个用例,多用不同软件版本的机器跑一跑。软件测试有个定律是:你没跑过的地方,就一定会出事。经常听到开发人员抱怨,怎么我的机器没问题,你的机器就有事了呢?这不能完全靠配置管理员解决问题,环境配置项是大家最容易忽略的。

      11、用户管理缺陷

      用户管理的角色和授权需要好好研究一下,作过测试的人员都知道,有时候为了测试的方便,测试用户都是具有超级权限的用户。而且,比较容易忽略用户管理这一部分的测试。往往发往客户的时候,很多测试用户都没有删除。

      另外,有些接口的用户和口令,到软件使用寿命结束都没有更改过。在一次测试中,软件测试人员发现,给一个用户授超级用户权限,之后更改这个用户为受限权限。使用中发现,用户居然没有真正回收权限,用户管理界面上没有任何不对。及早准备用户管理用例,不要等到测试快结束时候才想起。

      12、常识缺陷

      从逻辑或者统计学上讲,计算机是允许如此处理的,但是从常识上来讲,这些情况不可能发生。例如电话号码不可能出现小数点,终止时间不能大于开始时间等等。除此之外,常识还要结合业务特点来进行判断,因此,开发和测试人员要格外注意对自己知识的培养以及增加对需求细节的了解。不能因为一味追求进度而采用最简单的代码来实现,对用户来说,这些错误可能是很荒谬的。

      尽管我们不可能完美的测试一个软件,但是我们仍然可以改进我们的软件测试。每次测试结束,及时总结测试中的不足,进一步完善用例。思考一下那些容易忽略的软件缺陷,能提高对软件测试的认识,提高所在组织软件的质量。

  • 进销存系统测试心得

    2009-10-15 16:31:29

      百无聊懒中参加了“进销存系统”的测试工作,发现自己还真是喜欢测试,拿起一个软件就想用用,想测测。
      测试该系统仅用了差不多一天的时间,没有写测试用例,因为该系统是公司内部使用,所以应上级要求,作为测试人员我只是测试了下基本的功能,对于一些输入框什么的,没有考虑一些特殊的输入,比如特殊字符等。
       感觉收获还是有的,现在总结下心得:
    一、首先要进行单元功能测试,保证每个功能使用的正确
    有以下几个问题,需要自己以后测试中注意:
    1、重复添加问题:某个产品被删除或设为“未激活”状态后,再次添加同样的产品信息,能否添加上?或者添加已经存在的产品信息,系统是否有相应的提示信息?

    2、采购单或送货单中,产品的删除问题:是否能够连续删除多个产品?当采购单或送货单重只有一个产品时,能否删除掉?

    3、产品重量是否可以改为小数?

    4、出库管理模块,汇入/汇出功能,要考虑到导入正确的数据、误写的数据、不存在的数据三种情况,但导入这些数据时,系统是否有错误提示信息?

    二、业务流程的测试
    1、各个模块间数据传递是否正确,要注意到“重量”和“金额”数值类型的问题,比如,当重量和金额都有两位小数时,传到其他模块是否数值一致?
    模块间数据传递比较复杂,一定得着重测试,凡是涉及到模块间数据传递的一定要设计不同的数据进行测试,这往往是开发最容易出错的地方。

    2、采购后相应的产品库存是否相应的增加?
    3、出库后相应的产品库存是否相应的减少?

    三、权限分配
    1、以不同权限登录时,信息显示是否正确?
    2、以不同权限登录进行操作,能否操作成功?同样要注意数据传递关系。

    四、个人对该进销存系统的认识
    该系统和我想象中的不太一样,它是以订单为驱动来开发的,包括:
    产品管理:主要是录入产品的一些基本信息
    订单管理:该模块比较复杂,以订单为驱动,下采购订单,在采购订单的基础上生成送货单,入库,涉及到了批次入库(生成批号并填写有效日期)
    出库管理:遵循先进先出的原则,即,批号小的先出

    续:
    一、搜索功能:
    1、比较长的名称是否能查到?
    2、空格 或空
    3、名称中含有特殊字符,如:' $ % & *等
    4、前面或后面有空格
    5、搜索名称中任意一个字符是否能搜索到

    二、关联几个模块的相同字段,当输入时,是否允许输入空格+字段名?
    比如:运单号,当输入时,前面含有空格时,就会出现错误。
    空格+字段名是个大问题,或 字段名+空格 同样是个大问题

    三、数量限制问题
    比如出库,当一个订单的一个产品的出库数量大于库存数量时,会提示错误信息,但是当两个订单的相同产品数量总和大于库存数量时,就不会提示错误信息。

    所以,当测试数量限制问题时,一定要发散思维进行测试。

    四、对于一个功能点,最起码一定要从易用性、功能、并发角度考虑
    比如:批号问题,当两个人同时点击该按钮时,就出现了生成相同批号的问题,这个问题很严重。





  • linux学习(5)——shell编程

    2009-10-12 10:39:05

      终于学到shell编程了,之前做了好多准备,呵呵。现在把我学到的总结如下:

    先写段完整代码:
    #!/bin/bash
    #program:
     this program is an example of shell.
    #History:
      2009/10/12  navy  first release
     PATH=(可以由echo $PATH来获得)
     export PATH
     
     echo "hello to the world!"
     
     比如保存在sh01.sh中
     执行命令:sh sh01.sh
     屏幕上显示:hello to the world!
     
    一、执行shell脚本命令
    1、将shell.sh加上可读执行rx权限,然后用./shell.sh来执行即可
    2、用sh shell.sh的方式来直接执行

    二、判断条件
    判断条件,在脚本中用的比较多,[]或test都起到判断的目的,比如判断一个文件sh01.sh是否存在,可以有这样两种方法:test -e sh01.sh、
    [ -e "sh01.sh" ]

    1、某个文件名的”类型“检测:如: test -e filename
    -e 该文件名是否存在
    -f 该文件名是否为文件
    -d 该文件名是否为目录

    2、文件权限的检验:
    -r:可读
    -w:可写
    -x:可执行

    3、比较两个文件,比如:test file1 -nt file2
    -nt: newer than 判断file1是否比file2新
    -ot:older than 判断file1是否比file2旧

    4、两个整数之间的判断,如:test n1 -eq n2
    -eq:两数值相等。equal
    -ne:not equal,不相等
    -gt:greater than,大于
    -lt:less than 小于
    -ge:greater than or equal 大于等于
    -le:less than or equal 小于等于

    5、字符串判断
    test -z string 判断字符串是否为0
    test -n string 判断字符串是否非为0
    test string1=string2 判断两个字符串是否相等
    test string1!=string2 判断两个字符串是否不等

    三、条件语句 if...then
    if [ 条件表达式一 ]; then
       当成立时,执行的命令
    elif [ 条件表达式二 ]; then
       当成立时,执行的命令
    else
        当条件1和2全不成立时,执行的命令
    fi

    eg:
    #!/bin/bash
    #program:
     this program is an example of shell.
    #History:
      2009/10/12  navy  first release
     PATH=(可以由echo $PATH来获得)
     export PATH

    read -p "please input(y/n):" yn
    if [ "$yn" == "y" ]; then
      echo "ok,continue"
    elif [ "$yn" == "n" ]; then
      echo "oh,interrupt"
    else
      echo "i don't know what is your choice"
    fi

    四、case...esac判断
    格式:
    case $变量名称 in
      ”第一个变量内容“)
         程序段
         ;;
       "第二个变量内容"
         程序段
         ;;
      *)
       不包含第一个和第二个变量内容的其他程序执行段
       exit 1
         ;;
    esac

    eg:
      #!/bin/bash
    #program:
     this program is an example of shell.
    #History:
      2009/10/12  navy  first release
     PATH=(可以由echo $PATH来获得)
     export PATH

    read -p "please input(y/n):" yn
    case $yn in
      "y")
        echo "ok,continue"
        ;;
      "n")
         echo "oh,interrupt"
      *)
         echo "i don't know what is your choice"
         ;;
     esac

    五、循环:while do done、until do done
    eg:
      #!/bin/bash
    #program:
     this program is an example of shell.
    #History:
      2009/10/12  navy  first release
     PATH=(可以由echo $PATH来获得)
     export PATH

     i=0;
     s=0
     while[ "$i" -le "100"]
     do
        $s=$(($s+$i))
        $i=$(($i+1))
     done
     echo $s

    六、循环:for do done
    1、格式:
     for(( 初始值; 限制值; 执行步长 ))
     do
       程序段
     done

    eg:
    #!/bin/bash
    #program:
     this program is an example of shell.
    #History:
      2009/10/12  navy  first release
     PATH=(可以由echo $PATH来获得)
     export PATH

     s=0
     for((i=0;i<=100;i++))
     do
       $s=$(($s+$i))
     done
    echo $s

    2、非数字方面的循环运算
    格式:
    for var in con1,con2,con3...
    do
      程序段
    done
    说明,在第一次循环时,$var的内容为con1
     在第二次循环时,$var的内容为con2
     .....
    eg:
     #!/bin/bash
    #program:
     this program is an example of shell.
    #History:
      2009/10/12  navy  first release
     PATH=(可以由echo $PATH来获得)
     export PATH
     $file=`cat /etc/passwd | cut -d ":" -f 1`
     i=1
     for usr in $file
     do
       echo "the $i account is:"$usr""
       i=$(($i+1))
     done
    说明:上面程序是取出账号名称,并打印出来。


     




     




      

     
     
     
  • 值得自己反思

    2009-10-09 16:18:32

       公司进销存系统,虽然我没有实际参与进去,但有个模块我自己测试过了,运费计算,对于这个模块我当时测试了,但今天客服人员在使用时,出现问题了,虽然没有把责任归咎于我,但我毕竟进行了测试,所以我要负主要责任。
       下面我要进行深刻的反思:
       1、运费计算,涉及到数据的传递,也就是要涉及到另外一个模块的数据,所以首先要保证下拉菜单中的数据和另外一个模块中的一致,并且保证数据都能传到该下拉菜单中,另外要注意的是,一定要在另外一个模块中新增一条数据,看该数据能否正常传到下拉菜单中。
       2、新增的数据一定要进行一次运费的计算,看能否正常进行核算,这次的问题就出在了这里。
       总之,涉及到多个模块间数据的传递问题时,一定要增加新的数据来进行测试。

       3、越来越感觉自己脱离测试了,找不到测试的感觉了,一是因为每次有点小的测试任务,一开发人员总是限制,说不用测这个,不用测那个,我不知道是该感谢他还是该痛恨他,总之是很闹心;二是因为这次的这个项目我没有参与进去,就进行这个小模块的测试时,该开发人员还说,就简单测试下就成,别的部门正在使用这个系统,里面的数据都是正确的,我不太好放手去添加一些测试数据;三是因为进入这个公司以来,总是很闲,完全没有了测试的感觉,感觉离测试越来越远了,自己的技能没有提高多少,在别人看来,我的工作很好,很闲,还照发工资,但,有时,闲着也是一种痛苦。

        学吧,把linux 学的差不多了,再考虑换工作的事情。


  • linux--top

    2009-10-09 12:03:43

    top

    top 命令可能是 Oracle DBA 在 Linux 上管理数据库时最有用的命令。如果系统很慢,您可能希望查看谁在占用所有 CPU 和/或内存。要显示最大进程,可以使用 top 命令。

    注意,与其他命令不同,top 不会产生输出,屏幕内容保持不变。它刷新屏幕以显示新信息。因此,如果您只执行 top 并保持屏幕一直开启,则屏幕始终显示最新信息。要停止并退出 shell,可以按下 Ctrl-C。

    $ top
    18:46:13   up 11 days, 21:50,   5 users,   load average: 0.11, 0.19, 0.18
    151 processes: 147 sleeping, 4 running, 0 zombie, 0 stopped
    CPU states:   cpu     user     nice   system     irq   softirq   iowait     idle
                total    12.5%     0.0%     6.7%    0.0%      0.0%     5.3%    75.2%
    Mem:   1026912k av,   999548k used,    27364k free,        0k shrd,   116104k buff
                         758312k actv,   145904k in_d,    16192k in_c
    Swap: 2041192k av,   122224k used, 1918968k free                   590140k cached
       PID USER      PRI   NI   SIZE   RSS SHARE STAT %CPU %MEM    TIME CPU COMMAND
       451 oracle     15    0   6044 4928   4216 S      0.1   0.4    0:20    0 tnslsnr
    8991 oracle     15    0   1248 1248    896 R      0.1   0.1    0:00    0 top
         1 root       19    0    440   400    372 S      0.0   0.0    0:04    0 init
         2 root       15    0      0     0      0 SW     0.0   0.0    0:00    0 keventd
         3 root       15    0      0     0      0 SW     0.0   0.0    0:00    0 kapmd
         4 root       34   19      0     0      0 SWN    0.0   0.0    0:00    0 ksoftirqd/0
         7 root       15    0      0     0      0 SW     0.0   0.0    0:01    0 bdflush
         5 root       15    0      0     0      0 SW     0.0   0.0    0:33    0 kswapd
         6 root       15    0      0     0      0 SW     0.0   0.0    0:14    0 kscand
         8 root       15    0      0     0      0 SW     0.0   0.0    0:00    0 kupdated
         9 root       25    0      0     0      0 SW     0.0   0.0    0:00    0 mdrecoveryd
    ... output snipped ...

    让我们来看看产生的不同类型的信息。第一行:

    18:46:13   up 11 days, 21:50,   5 users,   load average: 0.11, 0.19, 0.18

    显示当前时间 (18:46:13),该系统已经运行了 11 天;并且已经工作了 21 小时 50 秒。后面显示的分别是最近 1、5、15 分钟的系统平均负载 (0.11、0.19、0.18)。(顺便提一下,您也可以通过执行 uptime 命令来获得这些信息。)

    如果不需要平均负载,按下字母 "l"(小写字母 L);它将关闭。要再次将其打开,按下 l。第二行:

    151 processes: 147 sleeping, 4 running, 0 zombie, 0 stopped

    显示进程数、运行的进程数、休眠的进程数等。第三行和第四行:

    CPU states:   cpu     user     nice   system     irq   softirq   iowait     idle
                total    12.5%     0.0%     6.7%    0.0%      0.0%     5.3%    75.2%

    显示 CPU 利用率的详细信息。上面一行显示用户进程占用了 CPU 的 12.5%,系统占用了 6.7%。用户进程中包括 Oracle 进程。按下 "t" 可以关闭和打开这三行。如果有多个 CPU,屏幕将在每行显示一个 CPU 的信息。

    接下来的两行:

    Mem:   1026912k av, 1000688k used,   26224k free,     0k shrd,   113624k buff
                         758668k actv,   146872k in_d,   14460k in_c
    Swap: 2041192k av, 122476k used,    1918716k free              591776k cached

    显示可用的和已利用的内存。内存总量为 "1026912k av"(大约 1GB),其中只有 26224k(即 26MB)是可用的。交换空间为 2GB;但几乎并未使用。要关闭和打开这两行,可以按下 "m"。

    其余的显示内容以表格格式显示进程。下面对各列进行解释:

     

    描述

     

    PID 进程的进程 ID
    USER

     

    运行该进程的用户
    PRI

     

    进程的优先级
    NI nice 值:该值越高,任务的优先级越低
    SIZE

     

    该进程使用的内存(代码+数据+堆栈)
    RSS

     

    该进程使用的物理内存
    SHARE

     

    该进程使用的共享内存
    STAT

     

    该进程的状态,用代码显示。一些主要的状态代码包括:
    R — 正在运行
    S — 正在休眠
    Z — 迟滞
    T — 已停止

    您还会看到第二个和第三个字符,它们表示:
    W — 已换出的进程
    N — 正 nice 值
    %CPU

     

    该进程使用的 CPU 百分比
    %MEM

     

    该进程使用的内存百分比
    TIME

     

    该进程使用的总 CPU 时间
    CPU

     

    如果这是一个多处理器系统,该列指明正在其上运行进程的 CPU 的 ID。
    COMMAND 该进程发出的命令

    显示 top 时,您可以按几个键来设置希望的显示格式。按下大写字母 M 键可根据内存使用情况对输出进行排序。(注意,使用小写字母 m 将在显示屏的顶部打开或关闭内存汇总行。)当您希望了解谁在占用内存时,该键非常有用。示例输出如下:

    PID USER      PRI   NI   SIZE   RSS SHARE STAT %CPU %MEM    TIME CPU COMMAND
    31903 oracle     15    0 75760   72M 72508 S      0.0   7.2    0:01    0 ora_smon_PRODB2
    31909 oracle     15    0 68944   66M 64572 S      0.0   6.6    0:03    0 ora_mmon_PRODB2
    31897 oracle     15    0 53788   49M 48652 S      0.0   4.9    0:00    0 ora_dbw0_PRODB2

    既然您了解了如何解释输出,我们来看看如何使用命令行参数。

    最有用的参数是 -d,它指示两次屏幕刷新之间的延迟。要每秒刷新一次,则使用 top -d 1

    另一个有用的选项是 -p。如果您希望只监视几个进程而并非全部,可以在 -p 选项后指定这几个进程。要监视进程 13609、13608 和 13554,执行以下命令:

    top -p 13609 -p 13608 -p 13554
  • Some feelings

    2009-09-25 17:44:08

      I don't know how to describe my recent feelings.Maybe I can use Loneliess,helplessness,desperation and impulsive to present my feelings now.
       Last night,I chatted with my classmate through audio.We talked much and long.And I felt very happy.In fact I have not enjoyed this kind of  happiness feeling for long. During chatting,we were always laughing,very happy.
      
  • LR,事务每次运行时间打印及判断(转)

    2009-09-18 11:45:01

            int i,sum;

            float duration_time;

            lr_start_transaction("login");

            for (i = 1;i<100;i++) {

                    sum += i;
            }

          duration_time = lr_get_transaction_duration("zee");//注意位置

            lr_end_transaction("login", LR_AUTO);

            lr_output_message("事物执行时间为:%lf",duration_time);

           //对事务时间进行判断,如果大于0.1s,则输出信息提示说明。
            if ( duration_time > 0.1 ) {

                    lr_output_message("执行时间太长");
            }
    不错的方法,借鉴学习!!
1163/6<123456>
Open Toolbar