bnv

发布新日志

  • 代码检查,每天进步一点点(2)

    2008-04-11 11:11:48

    首先很感谢huior!

    在网上查了一下,两款静态检查工具,一个是logiscope,另外一个就是huior提到的pc-lint,知道了两款工具的各自的特色

    具体的各自的特色可以看:http://hi.baidu.com/lint/blog/item/d4d196019c30eed6267fb5ed.html

    这个人的博客里写的很清楚!

    呵呵,有点兴奋,要是能回用pc_lint的话,我的工作量简直是减轻一半多!

  • 继续代码检查,每天进步一点点

    2008-04-09 18:08:42

      今天还算很有收获,盲目了两天的这个模块的代码检查,终于找到了出路!今天在代码检查的时候发现,有个IF语句的条件是错误的,该条件在什么情况下都为真!告诉了开发人员!终于从只能找到注释到发现代码的错误,有了一点进步!

       在看代码的过程中,不要只看注释,要了解程序本身每个函数的意思,不懂得可以多上网 搜索一下,尤其是搜索的时候关键字最好加后缀“错误”这样就可以发现,这个函数常用时候容易出现错误的地方!然后再注意代码是不是也出现类似的错误!

      今天在看代码的时候对该模块的测试用例也补充了一点!尤其是对fopen()这个函数有了很深的了解!在打开文档的时候可能出现的种种意外如:

      1.文档的路径(相对路径,绝对路径,相对路径的正确性)

      2.文档的后缀(错误的后缀,后缀的有无)

      3.文档的有无,文档是否为空

    等一些情况的考虑,这就是从一个简单的函数触发出来的这一些种种异常情况!

    ^_^,代码走查进行中!

     

  • 看似简单的代码检查其实并不简单

    2008-04-07 16:27:27

    最近一段时间在进行代码检查工作,说实在我真不知道怎么检查,不过这就是工作!不会也得努力!

    在检查经理的代码中,学习到他的代码很有条理,并且根据他的代码完善了自己的测试用例!不过在刚开始刊的时候也很迷茫!感觉很心烦!自己还是告诉自己,相信肯定会柳暗花明的!经历过半天的郁闷和烦躁!终于在不安中有了收获!

    在检查副经理的代码中,他的代码逻辑很凌乱!有注释是由注释!可惜的是,上一句注释和下一句注释对不 上号!对于一个 不懂代码的人来说,这简直是场灾难!所幸得是自己没有放弃!经过自己努力,代码看不懂,就联系文档,看能不能从文档中找到一些线索!终于明白了,原来是他在代码copy过程中,注释也cp过来了,导致注释的错误!

    通过最近一段时间工作的总结,发现只要自己不放弃,困难总会有头绪!尤其是在最烦躁的那一刻!不放弃!

  • 测试用例

    2008-03-24 10:19:35

    测试用例的概念:
    测试用例是指为实施测施而向被测系统输入的数据,操做或各种环境设置以及期望结果与预期结果的一个特定集合
    编写测试用例的好处:
    1、 组织性 2、功能覆盖 3、重复性 4、跟踪 5、测试确认
    测试用例的用途:
    1、核实需求。2、监督过程度。3评估结果。4准确回归。5防止遗漏。6提高效率。7、缩短周期。
    设计测试用例前的准备和材料组织:
    1、阅读文档,向相关人员咨询     2、探索性测试
    为什么要更新测试用例:
    1、 在执行测试过程中对被测系统的了解加入新的测试用例题。
    2、 需求变更也需要更新新的测试用例
    通用测试技术:
    1、 等价类划分:1、确定等价类。2、制定等价类表。3根据等价类表制定测试用例。4、细分等价类
    -----1、等价类特点:---测试内空相同 ---如果等价类中的一个测试能发现一个缺陷,那么该等价类的中其他测试也能同样发现缺陷 。---反之相反。
    -----2、等价类的核心要点:
          --输入必须满足某个条件则可以划分为一个有效等价类和个一个无效等价类
          --输入规定了取值范围则可划分为一个有效等价类和两个无效等价类
          --输入是布尔量则划分为一个有效等价类和一个无效等价类
          --若在某个输入中对输入数据的一组可能值进行了规定,并且程序是不用不同的的方式处理每一种值的,则为每一种值划分一个有效等价类,并针对这组值确定一个无效等价类
          --如果规定了输入数据必须遵守的规则,则可以确定一个有效等价类和若干个无效等价类
         ---若已划分为等价类的各元素在程序中的处理方式不同,应当将此等价类划分为更小的等价类
    2、 边界值:
         要注意的隐含的边界值
    3、 因果图
    (1)因果图的步骤:
    ---1、分析需求,根据需求确定输入和输出条件
    ---2、找出原因和结果之间的关系,并根据这些关系划出因果图
    ---3、在因果图上用一些记号表明约束或限制条件
    ---2、把因果图转换成判定表
    ---3、通过判定表得出测试用例
     (2)判定表的四个部分:
    ----条件桩:列出了问题的所有条件
    ----动作桩:列出了问题的所有输出
    ----条件项:列出了针对条件桩的取值
    -----动作项:列出在条件项的各种取值情况下的输出结果
    (3)如果有N个条件则有2的N次方种规则
    4、通过测试失败测试
    5、错误猜测
    6、随机测试
    7、状态图
    8、大纲法
    ----测试方法的选择:
        在任何情况下都必要使用边界值法 用等价类划分法补充一些测试用例,用错误猜测法再追加一些测试用例 如查程序有输入条件的组合情况,则一开始就选因果测试法 如果程序某些功能适合自动测试,则可采用自动测试和随机测试
    故障模型:
    1、 功能性:
    (1)       输入非法数据
    (2)       输入默人值
    (3)       输入特殊字符集(或数据类型的合法输入)如:系统保留字:NULL ETX SUB
    (4)       输入使缓冲区溢出的数据
    (5)       输入产生错误的合法数据组合
    (6)       产生同一个输入的各种可能输出
    (7)       输出不符合业务规则的无效输出
    (8)       输出属性修改后的结果
    (9)       屏幕刷新显示
    (10)   数据结构溢出
    (11)   数据结构不符合约束
    (12)   操做数与操做符不符
    (13)   递归调用自身
    (14)   计算结果溢出
    (15)   数据共享或关联功能计算出错
    (16)   文件系统超载
    (17)   介质忙或不可用
    (18)   介质损坏
    (19)   文件名不合法
    (20)   更改文件访问权限
    (21)   文件内容受损
    软件的四种基本能力:
    1、软件从其环境中接收输入
    2、软件生成输出,并将其输出交给它的环境
    3、软件内部以一种或多种数据结构形式存储数据
    4、软件使用输入和存储的数据执行计算
    设计功能和界面测试用例
    (1)   文本框测试:从输入数据的内容,长度,类型,及格式等方面来考虑
    (2)   命令按钮控件的测试:按钮功能能否实现,提示信息是否正确,对不符合业务背景的输入数据是否有相应的出错处理
    (3)   单选按钮测试:单选按钮是否只能同时选一个,各单选按钮的功能是否能正确完成,是否有被默认选中的选项
    (4)   Up-down控件文本框测试:对下下箭头的控制,对边界值的测试,对默认值的测试,对非法输入字符的测试
    (5)   组合列表模框的测试:条目内容检查,条目功能能否实现,在列表框中能否输入数据
    (6)   复选框控件的测试:多个复选框可以同时被选中,也可以部分被选中,或都不被选中,逐步执行每个复选框的工能
    (7)   列表框控件测试:条目内容是否正确,滚动条是否可以滚动,条码功能能否实现,列表框能否完全实现多选操做时的各种功能
    (8)   滚动条测试:滚动条能否被拖动,拖动滚动条时屏幕的刷新情况,拖动滚动条时信息的显示情况,滚动条上下按钮是否可用
    (9)   各种控件在窗体中混合使用的测试:控件的相互作用,Tab键的顺序,热键的使用,Enter 和ESC键的使用。控件组合后功能的实现,
    (10)              文件操做:
    ―打开文件:打开任意位置的文件,以各种方式打开文件,打开任意格式的文件,单击文件对话框中的各按钮。
    -保存文件:将文件保存在任意位置,以各种形式保存文件,选择各种保存方式,保存对话框上各按钮的功能
    -关闭文件:通赤菜单选项关闭文件,通过窗口按钮关闭文件
    -打印文件:在本地打印和网各打印能否完成,打印界面各属性的设置,打印界面和各按钮功能能否实现
     
    (11)编辑操做:
    (12)插入操做:
    ―插入文件:插入文档自身,移除插入的原文件,更换插入的原文件内容
    -链接文件:插入链接文件,在文档中链接文档自身,移除插入的原文件,   更换插入的原文件内容
    -插入对象:插入程序允许的各种对象,修改插入的对象内容,卸载生成插入对象的程序
    (13)编辑操作:对文本,文本框。图文框等进行剪切,
    (14)鼠标操做:右击,双击,三击能否完成,拖放、滚输功能能否完成、移动,单击速度
    界面测试用例设计方法:
    (1)   窗体:窗体大小,移动窗体,缩放窗体,显示分辩率,另一种情况下测试窗体需测试:状态栏,工具栏,错误信息,父窗体,子窗体
    (2) 控件:控件字体大小,字体全角半角,控件本身大小,控件本知位置,错别字,中英文混合,
    (3) 菜单:
    (4) 特殊属性
    设计文档和安装测试用例
     
  • 今天终于把活给干完了

    2008-01-22 17:05:19

    今天终于把活给干完了,2007年的扫尾工作在忙碌的进行着,今天终于可以休息一下了,闲暇下来终于可以写一下自己的日志了。

    2008年我的目标很小只要能还完我的学校贷款!努力努力!

    明年公司也要开发其他的项目,新的语言新的平台又是一次挑战,真的要进军语言了!

    学习c++,做白盒测试.即很兴奋也很迷茫!兴奋的是自己终于不再被他们说只是在点点点的工作

    终于可以向更深一层迈进了,迷茫的是不知道自己能不能适应,或是能不能学会c++!

  • 天道酬勤

    2008-01-08 16:07:20

    昨天被领导批评了

    今天太阳依然升起

    天道酬勤

    相信我用我的勤奋换取你们的认同

    加油加油

    只为和你们讨论问题时候不再被你们歧视

  • 性能测试经验01

    2008-01-07 15:15:25

     一般情况下,我会把应用服务器和数据库服务器搭建在同一机器上。

        几天前的测试环境搭建也不例外。

       
        快下班的时候,老板说要做一下性能测试

      
       
        当时我只注意的环境是:

        服务器:tomcat-6.0.13

        数据库:mysql5.0

        操作系统:CentOS 4


       所知道的要素:

          1:tomcat的优化:将maxThreads设置成100

        然后将数据库的maxActive分别设置:15,20,25 。

          2:需要测试的有三个地方:首页、电影分类、单个电影

          3:测试持续时间为5分钟,虚拟用户为100个

       期望结果:
        
          根据不同的数据库maxActive值,在条件3相同的情况下,对比哪种的测试结果的性能比较好。


     
       这个相对来说比较简单,在很快的时间我就录制好了三个需要测试的脚本, 在运行脚本的时候,

       遇到的问题:LoadRunner的关联

       解决方法:http://www.51testing.com/?58025/action_viewspace_itemid_44330.html

       得到的结果是:

        在数据库maxActive值为20时,首页、电影分类、单个电影等测试结果的性能最好。

       判断的要素:

       吞吐量、点击量、平均响应时间

       分析的方法:

         在测试持续时间和虚拟用户都相同的情况下,比较不同maxActive值时,所得到的吞吐量、点击量、平均响应时间,

       如果吞吐量和点击量都比其他两种情况下要大,而且平均响应时间比其他两种情况下要低,则其性能比较好!


      做到这里,我已经很明确在哪种配置下得到的性能比较好,下一步要做的是,就是弄清楚到底是什么影响了性能?

      是应用服务器,还是数据库服务器,还是操作系统呢?


      接下来我想先对应用服务器进行优化,

       具体情况请查看:http://www.51testing.com/?58025/action_viewspace_itemid_61154.html

     然后在:

       所知道的要素:

        1:tomcat的优化:将maxThreads设置成100
           数据库的maxActive设置:20

        2:需要测试的有三个地方:首页、电影分类、单个电影

        3:测试持续时间为5分钟,虚拟用户为100个


       期望结果:
        
          对比在没有安装apr之前的测试结果和已安装了apr之后,对比哪种的测试结果的性能比较好。

      得到的结果:
       
          在安装apr之前和安装apr之后,没有明显的变化,所以排除应用服务器的问题。(虽然比较粗,但目前水平有限也只能做到这样了)


     接下来就要找出是数据库服务器,还是操作系统的性能有问题了。

       第一步:将应用服务器和数据库服务器分开

        我把数据库服务器从CentOS 4 移到了WINDOWS XP 下。

       第二步:分别监控两台机器
       
        遇到的问题:如何监控呢?
       
        解决方法:http://www.51testing.com/?58025/action_viewspace_itemid_44676.html
                  http://www.51testing.com/?58025/action_viewspace_itemid_44562.html

       第三部:确定在运行脚本,需要监控哪些计数器

       1: 监控两台机器的CPU使用情况
       2:吞吐量、点击量、平均响应时间和成功率

      期望结果:
         对比应用服务器和数据库服务器没有分开之前的测试结果和分开之后的测试结果哪种性能比较好。

      得到的结果:
        1:CentOS 4 这台机器的CPU使用率在两次运行中一直居高不下。
        2:首页在应用服务器和数据服务器分开之后,吞吐量和点击量高了很多,并且平均响应时间也少了很多
        3:单个电影的吞吐量和点击量都比以前有所提高,但平均响应时间却没有降低。
        4:电影分类的吞吐率,点击率和平均响应时间都没有什么变化。

      分析结果:
        1: 根据两次性能测试结果:CentOS 4 这台机器的处理器存在着瓶颈,需要增加处理器来提高性能

        2: 首页没有使用到数据库的查询,而电影分类中使用到数据库查询比较多,所以初步分析数据库的性能存在着问题,需要做进一步的优化。
            由于MYSQL5.1版本中支持了分区,建议开发人员使用分区技术
       

     参考指标:  
     度量 指标    问题
     cpu 95%以上  瓶颈
     80-85% 最大上限
     70%以下 正常


        本次测试中欠缺的是:对数据库服务器的监控。

        期望提高的是:对操作系统的监控,进一步分析出问题所在,
                     对数据库服务器的监控,给出明确点优化意见


       写在这里,不知道我这样做性能测试的方法对不对,还希望看过此文章的朋友给出意见和建议。

  • 性能瓶颈分析方法

    2008-01-07 14:27:57

    性能瓶颈分析方法

    2007-09-30 09:43:03 / 个人分类:性能测试

    同一场景
    1.小用户量的情况下测试
    2.大用户量情况下的测试

    分析的方法:
    整个系统架构分析,系统响应时间消耗,利用图表分析
    查看事务响应时间,通过事务摘要图分析事务响应时间,那个消耗最大(通过小用户量和大用户量的响应时间分析,查看那个事务响应时间最高),确定哪部分功能是性能的瓶颈,分析window resource图表,查看cpu

    使用下列计数器标识cpu瓶颈
    Processor\ Interrupts/sec
    Processor\ % Processor Time
    Process(process)\ % Processor Time
    System\ Processor Queue Length

    通过它来确定是否硬件本身出现瓶颈,或者进一步确定应该怎么去判断性能产生瓶颈的地方!
    下一步去判断进程,那个进程消耗cpu最高
    下边就有很多种情况需要你自己去判断,有可能是进程调用了的函数消耗了系统资源形成上边的问题,也有可能是后台数据库出现的问题(这个就要看你的系统配置是什么样的,比如你的db服务器和应用服务器都配置在一台机器上)

    性能产生瓶颈有很多地方,所以需要进一判断,是否是后台数据库的问题还有待分析,是那条语句导致的问题需要进一步分析判断。

    分析原则:
        • 具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能关注点)
        • 查找瓶颈时按以下顺序,由易到难。
        服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)-〉中间件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)
        注:以上过程并不是每个分析中都需要的,要根据测试目的和要求来确定分析的深度。对一些要求低的,我们分析到应用系统在将来大的负载压力(并发用户数、数据量)下,系统的硬件瓶颈在哪儿就够了。
        • 分段排除法 很有效

    分析的信息来源:
        •1 根据场景运行过程中的错误提示信息
        •2 根据测试结果收集到的监控指标数据

    一.错误提示分析
    分析实例:
    1 •Error: Failed to connect to server "10.10.10.30:8080": [10060] Connection
      •Error: timed out Error: Server "10.10.10.30" has shut down the connection prematurely

      分析:
    •A、应用服务死掉。
      (小用户时:程序上的问题。程序上处理数据库的问题)
    •B、应用服务没有死
      (应用服务参数设置问题)
        例:在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25%
    •C、数据库的连接
      (1、在应用服务的性能参数可能太小了 2、数据库启动的最大连接数(跟硬件的内存有关))

    2  Error: Page download timeout (120 seconds) has expired

    分析:可能是以下原因造成
    •A、应用服务参数设置太大导致服务器的瓶颈
    •B、页面中图片太多
    •C、在程序处理表的时候检查字段太大多

    二.监控指标数据分析
    1.最大并发用户数:
    应用系统在当前环境(硬件环境、网络环境、软件环境(参数配置))下能承受的最大并发用户数。
    在方案运行中,如果出现了大于3个用户的业务操作失败,或出现了服务器shutdown的情况,则说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数。
    如果测得的最大并发用户数到达了性能要求,且各服务器资源情况良好,业务操作响应时间也达到了用户要求,那么OK。否则,再根据各服务器的资源情况和业务操作响应时间进一步分析原因所在。

    2.业务操作响应时间:
    • 分析方案运行情况应从平均事务响应时间图和事务性能摘要图开始。使用“事务性能摘要”图,可以确定在方案执行期间响应时间过长的事务。
    • 细分事务并分析每个页面组件的性能。查看过长的事务响应时间是由哪些页面组件引起的?问题是否与网络或服务器有关?
    • 如果服务器耗时过长,请使用相应的服务器图确定有问题的服务器度量并查明服务器性能下降的原因。如果网络耗时过长,请使用“网络监视器”图确定导致性能瓶颈的网络问题
    3.服务器资源监控指标:
    内存:
        1 UNIX资源监控中指标内存页交换速率(Paging rate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低。

        2 Windows资源监控中,如果Process\Private Bytes计数器和Process\Working Set计数器的值在长时间内持续升高,同时Memory\Available bytes计数器的值持续降低,则很可能存在内存泄漏。

    内存资源成为系统性能的瓶颈的征兆:
        很高的换页率(high pageout rate);
        进程进入不活动状态;
        交换区所有磁盘的活动次数可高;
        可高的全局系统CPU利用率;
        内存不够出错(out of memory errors)

    处理器:
        1 UNIX资源监控(Windows操作系统同理)中指标CPU占用率(CPU utilization),如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。如果服务器专用于SQL Server,可接受的最大上限是80-85%
        合理使用的范围在60%至70%。
        2 Windows资源监控中,如果System\Processor Queue Length大于2,而处理器利用率(Processor Time)一直很低,则存在着处理器阻塞。

    CPU资源成为系统性能的瓶颈的征兆: 
        很慢的响应时间(slow response time)
        CPU空闲时间为零(zero percent idle CPU)
        过高的用户占用CPU时间(high percent user CPU)
        过高的系统占用CPU时间(high percent system CPU)
        长时间的有很长的运行进程队列(large run queue size sustained over time)

    磁盘I/O:
        1 UNIX资源监控(Windows操作系统同理)中指标磁盘交换率(Disk rate),如果该参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。
        2 Windows资源监控中,如果 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。

    I/O资源成为系统性能的瓶颈的征兆 :
        过高的磁盘利用率(high disk utilization)
        太长的磁盘等待队列(large disk queue length)
        等待磁盘I/O的时间所占的百分率太高(large percentage of time waiting for disk I/O)
        太高的物理I/O速率:large physical I/O rate(not sufficient in itself)
        过低的缓存命中率(low buffer cache hit ratio(not sufficient in itself))
        太长的运行进程队列,但CPU却空闲(large run queue with idle CPU)

    4.数据库服务器:
    SQL Server数据库:
        1 SQLServer资源监控中指标缓存点击率(Cache Hit Ratio),该值越高越好。如果持续低于80%,应考虑增加内存。
        2 如果Full Scans/sec(全表扫描/秒)计数器显示的值比1或2高,则应分析你的查询以确定是否确实需要全表扫描,以及SQL查询是否可以被优化。
        3 Number of Deadlocks/sec(死锁的数量/秒):死锁对应用程序的可伸缩性非常有害,并且会导致恶劣的用户体验。该计数器的值必须为0。
      4 Lock Requests/sec(锁请求/秒),通过优化查询来减少读取次数,可以减少该计数器的值。

    Oracle数据库:
      1 如果自由内存接近于0而且库快存或数据字典快存的命中率小于0.90,那么需要增加SHARED_POOL_SIZE的大小。
        快存(共享SQL区)和数据字典快存的命中率:
      select(sum(pins-reloads))/sum(pins) from v$librarycache;
        select(sum(gets-getmisses))/sum(gets) from v$rowcache;
        自由内存:    select * from v$sgastat where name=’free memory’;
    2 如果数据的缓存命中率小于0.90,那么需要加大DB_BLOCK_BUFFERS参数的值(单位:块)。
      缓冲区高速缓存命中率:
        select name,value from v$sysstat where name in ('db block gets’,
        'consistent gets','physical reads') ;
       
        Hit Ratio = 1-(physical reads / ( db block gets + consistent gets))
    3 如果日志缓冲区申请的值较大,则应加大LOG_BUFFER参数的值。
        日志缓冲区的申请情况 :
        select name,value from v$sysstat where name = 'redo log space requests' ;
    4 如果内存排序命中率小于0.95,则应加大SORT_AREA_SIZE以避免磁盘排序 。
      内存排序命中率 :
        select round((100*b.value)/decode((a.value+b.value), 0, 1, (a.value+b.value)), 2)from v$sysstat a, v$sysstat b where a.name='sorts (disk)' and b.name='sorts (memory)'

  • 内存泄露检测

    2008-01-04 16:00:30

  • 十二种法宝帮你找bug(一)(译)

    2008-01-04 15:58:03

    原文 http://today.java.net/pub/a/today/2004/01/22/DozenWays.html
    如需转载,请与译者联系chdwu@bestreme.com
    测试驱动开发最近越来越受到大家的关注,而且我相信大家对它的兴趣会越来越浓厚,一个很重要的原因就是:每个人都知道测试是很重要的,现在也有一些比较专业的开发人员主张测试先行,他们认为这样可以做出更好的软件。这些人也很快发现测试驱动开发让他们的效率提高很多,也减少了很多压力。他们只需要用很少的时间就可以创造出一系列通过的测试和优秀的设计。听起来不错吧?试一试吧,你一定会受益匪浅的!
        这篇文章列出了十二种关于怎样开始写测试和怎样持续下去的实用方法。前面的两个技巧是教你怎样推翻自己已经写出来的代码,因此你不必一下子甩开代码去专注于测试,这样可能会比较容易接受吧。接下来的两个是让你尝试一下进一步了解测试驱动开发的好处的,其余的技巧则是帮你更加有效地完成你的测试。

    1 让你的计算机去做那些让人厌烦的事情
     
    开始写测试用例的最简单的方法就是将自己可以看到结果的情形都列出来,然后用自动化的方式取代手动方式去验证它们。不要说我懒,我会用计算机来完成这些事情,这样会比手动执行会更加可靠。有些时候可能会碰到比较麻烦的情况,这时候当然还是需要你亲自出马了,那就不要从这种地方开始测试,你应该从那些比较容易的地方开始,那样你可以先找到一点bug来涨涨自信。我发现一般情况下使用main()方法的测试代码比较适合自动化测试的,我不是指我们应用程序的入口点,我们需要的是一个测试的入口以及将测试结果输出来的方式。(用Main()再合适不过了^^)

    例如假设你正在写一个java类,它的功能只是实现一个电子表格,一个表格的单元格是用类似"A1"这种用行和列的标帜来定义,这个单元格可以用来存放一些数据,我们利用这个电子表格来实现数据的存储和查找等功能。这里有一个关于main()方式的测试用例:
    public static void main(String args[]) {
           
        Spreadsheet sheet = new Spreadsheet();
           
        System.out.println("Cell reference:");
        sheet.put("A1", "5");
        sheet.put("A2", "=A1");
        System.out.println("A2 = " + sheet.get("A2"));
           
        System.out.println("\nCell change propagates:");
        sheet.put("A1", "10");
        System.out.println("A2 = " + sheet.get("A2"));
           
        System.out.println("\nFormula calculation:");
        sheet.put("A1", "5");
        sheet.put("A2", "2");
        sheet.put("B1", "=A1*(A1-A2)+A2/3");
        System.out.println("B1 = " + sheet.get("B1"));
    }
    或许你会发现对这个很熟悉或者你以前也写过类似的用例,这样做的目的很简单,我们获得了期望得到的结果,然后我们对自己的代码就有了一定的信心而已。这些年来这种方式一直是我的必备武器,它很简单所以我也推荐你们也来用,但是我们也要注意,这种方法可能会耗费自己大量的时间,因为每次只要牵扯到电子表格的代码改变我们就要跑一次这样的测试来检验这些改动是否影响到这里,显然如果我再次运行测试并看到了下面的输出结果我会对自己的改动充满信心。(因为测试证明我的改动没有破坏其他的地方)
    Cell reference:
    A2 = 5

    Cell change propagates:
    A2 = 10

    Formula calculation:
    B1 = 15

    这种测试方法有一个很明显的问题:需要我每次都要看看结果然后才能确定我们的测试是否通过,更糟糕的是当我们大量采用这种方式的时候,这种劳动会让你更加痛苦。这样导致的最终结果是让你自己感觉到厌倦甚至会因此而放弃测试。人工检查结果还要求我们在测试运行的时候记住我们所希望看到的结果,这样如果你需要检查的结果由十几个部分组成的时候?……还记得住吗?如果我们记不住,我们的测试就失去了意义.

    JUnit,这个工具可以帮你解决这个问题。如果你从来没有用过它,没关系,JUnit FAQ(http://junit.sourceforge.net/doc/faq/faq.htm)可以帮上你的忙,让你快速处理测试。运用JUnit可以让计算机帮你运行这些测试并帮你验证测试结果。下面是在JUnit中运行的测试代码:

    import junit.framework.TestCase;

    public class SpreadsheetTest extends TestCase {
       
        public void testCellReference() {
            Spreadsheet sheet = new Spreadsheet();
            sheet.put("A1", "5");
            sheet.put("A2", "=A1");
            assertEquals("5", sheet.get("A2"));
        }

        public void testCellChangePropagates() {
            Spreadsheet sheet = new Spreadsheet();
            sheet.put("A1", "5");
            sheet.put("A2", "=A1");
            sheet.put("A1", "10");
            assertEquals("10", sheet.get("A2"));
        }

        public void testFormulaCalculation() {
            Spreadsheet sheet = new Spreadsheet();
            sheet.put("A1", "5");
            sheet.put("A2", "2");
            sheet.put("B1", "=A1*(A1-A2)+A2/3");
            assertEquals("15", sheet.get("B1"));
        }
    }

    请注意:结果的验证已经用assertEquals()方法来处理了,这个方法帮你验证我们所期望的值是否和测试运行后的结果一致,这样就不需要你痛苦地记忆那些数据了。

    JUnit有文本和图形化两种,不管是哪一种都能为你提供简约而精确的输出。如果使用文本形式的,当所有的测试都通过(预期结果与实际运行结果一致)的时候你可看到:

    > java junit.textui.TestRunner SpreadsheetTest

    ...
    Time: 0.04

    OK (3 tests)

    如果是使用具有图形界面的,这时候你会看到一个绿色的条:
    Green bar
    Figure 1. Green is good
    如果期望与实际运行结果不符,JUnit会迅速作出反应,根据选用的JUnit形式不同,看到的可能是一个刺眼的失败信息或者一个红色的条,同时会提供关于测试详细信息。

    自动化测试是多此一举?现在你有了一个自动化测试方法来取代那些让你深感痛苦的人工测试(想想你要同时记住十五个数据吧),它还可以让你有充足的时间去设计更加全面的测试。有本书Pragmatic Unit Testinghttp://www.pragmaticprogrammer.com/starter_kit/ut/index.html)可以帮助你提升你的测试技巧从而写出更好的测试,如果你写了很多测试,你也不需要多花很多时间来运行这些测试,实际上随着项目测试的逐渐深入,自动化测试的价值会逐渐提升,还是因为它节省时间,从而让你有充足的时间写出好的测试。

  • Linux下常用网络配置命令

    2007-12-29 15:44:10

    Linux下常用网络配置命令

    字体:        | 上一篇 下一篇 | 打印  | 我要投稿

    1、 ifconfig
      可以使用ifconfig命令来配置并查看网络接口的配置情况。
      例如:
      (1) 配置eth0的IP地址, 同时激活该设备。
      #ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
      (2) 配置eth0别名设备eth0:1的IP地址,并添加路由。
      #ifconfig eth0 192.168.1.3
      #route add –host 192.168.1.3 dev eth0:1
      (3) 激活设备。
      #ifconfig eth0 up
      (4) 禁用设备。
      #ifconfig eth0 down
      (5) 查看指定的网络接口的配置。
      #ifconfig eth0
      (6) 查看所有的网络接口配置。
      #ifconfig
      2、 route
      可以使用route命令来配置并查看内核路由表的配置情况。
      例如:
      (1) 添加到主机的路由。
      #route add –host 192.168.1.2 dev eth0:0
      #route add –host 10.20.30.148 gw 10.20.30.40
      (2) 添加到网络的路由。
      #route add –net 10.20.30.40 netmask 255.255.255.248 eth0
      #route add –net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
      #route add –net 192.168.1.0/24 eth1
      (3) 添加默认网关。
      #route add default gw 192.168.1.1
      (4) 查看内核路由表的配置。
      #route
      (5)删除路由。
      #route del –host 192.168.1.2 dev eth0:0
      #route del –host 10.20.30.148 gw 10.20.30.40
      #route del –net 10.20.30.40 netmask 255.255.255.248 eth0
      #route del –net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
      #route del –net 192.168.1.0/24 eth1
      #route del default gw 192.168.1.1
      对于1和2两点可使用下面的语句实现:
      Ifconfig eth0 172.16.19.71 netmask 255.255.255.0
      Route 0.0.0.0 gw 172.16.19.254
      Service network restart
      3、 traceroute
      可以使用traceroute命令显示数据包到达目的主机所经过的路由。
      例如:
      #traceroute www.sina.com.cn
      4、 ping
      可以使用ping 命令来测试网络的连通性。
      例如:
      #ping www.sina.com.cn
      #ping –c 4 192.168.1.12
      5、 netstat
      可以使用netstat命令来显示网络状态信息。
      例如:
      (1) 显示网络接口状态信息。
      #netstat –i
      (2) 显示所有监控中的服务器的Socket和正使用Socket的程序信息。
      #netstat –lpe
      (3) 显示内核路由表信息。
      #netstat –r
      #netstat –nr
      (4) 显示TCP/UDP传输协议的连接状态。
      #netstat –t
      #netstat –u
      6、 hostname
      可以使用hostname命令来更改主机名。例如;
      #hostname myhost
      7、 arp
      可以使用arp命令来配置并查看arp缓存。例如:
      (1) 查看arp缓存。
      #arp
      (2) 添加一个IP地址和MAC地址的对应记录。
      #arp –s 192.168.33.15 00:60:08:27:CE:B2
      (3) 删除一个IP地址和MAC地址的对应缓存记录。
      #arp –d192.168.33.15
  • 让软件测试走向规范

    2007-12-29 15:29:26

    建立软件测试管理体系的主要目的是确保软件测试在软件质量保证中发挥应有的关键作用:

      软件产品的监视和测量 对软件产品的特性进行监视和测量,主要依据软件需求规格说明书,验证产品是否满足要求。所开发的软件产品是否可以交付,要预先设定质量指标,并进行测试,只有符合预先设定的指标,才可以交付。

      对不符合要求的产品的识别和控制 对于软件测试中发现的软件缺陷,要认真记录它们的属性和处理措施,并进行跟踪,直至最终解决。在排除软件缺陷之后,要再次进行验证。

      产品设计和开发的验证 通过设计测试用例对需求分析、软件设计、程序代码进行验证,确保程序代码与软件设计说明书的一致,以及软件设计说明书与需求规格说明书的一致。对于验证中发现的不合格现象,同样要认真记录和处理,并跟踪解决。解决之后,也要再次进行验证。

      软件过程的监视和测量 从软件测试中可以获取大量关于软件过程及其结果的数据和信息,它们可用于判断这些过程的有效性,为软件过程的正常运行和持续改进提供决策依据。

      建立测试管理体系

      一般应用过程方法和系统方法来建立软件测试管理体系,也就是把测试管理作为一个系统,对组成这个系统的各个过程加以识别和管理,以实现设定的系统目标。同时要使这些过程协同作用、互相促进,从而使它们的总体作用大于各过程作用之和。其主要目标是在设定的条件限制下,尽可能发现和排除软件缺陷。测试系统主要由下面6个相互关联、相互作用的过程组成:

      测试规划

      确定各测试阶段的目标和策略。这个过程将输出测试计划,明确要完成的测试活动,评估完成活动所需要的时间和资源,设计测试组织和岗位职权,进行活动安排和资源分配,安排跟踪和控制测试过程的活动。

      测试规划与软件开发活动同步进行。在需求分析阶段,要完成验收测试计划,并与需求规格说明一起提交评审。类似地,在概要设计阶段,要完成和评审系统测试计划;在详细设计阶段,要完成和评审集成测试计划;在编码实现阶段,要完成和评审单元测试计划。对于测试计划的修订部分,需要进行重新评审。

      测试设计

      根据测试计划设计测试方案。测试设计过程输出的是各测试阶段使用的测试用例。测试设计也与软件开发活动同步进行,其结果可以作为各阶段测试计划的附件提交评审。测试设计的另一项内容是回归测试设计,即确定回归测试的用例集。对于测试用例的修订部分,也要求进行重新评审。

      测试实施

      使用测试用例运行程序,将获得的运行结果与预期结果进行比较和分析,记录、跟踪和管理软件缺陷,最终得到测试报告。

      配置管理

      测试配置管理是软件配置管理的子集,作用于测试的各个阶段。其管理对象包括测试计划、测试方案(用例)、测试版本、测试工具及环境、测试结果等。

      资源管理

      包括对人力资源和工作场所,以及相关设施和技术支持的管理。如果建立了测试实验室,还存在其他的管理问题。

      测试管理

      采用适宜的方法对上述过程及结果进行监视,并在适用时进行测量,以保证上述过程的有效性。如果没有实现预定的结果,则应进行适当的调整或纠正。

      此外,测试系统与软件修改过程是相互关联、相互作用的。测试系统的输出(软件缺陷报告)是软件修改的输入。反过来,软件修改的输出(新的测试版本)又成为测试系统的输入。

      根据上述6个过程,可以确定建立软件测试管理体系的6个步骤:

      识别软件测试所需的过程及其应用,即测试规划、测试设计、测试实施、配置管理、资源管理和测试管理;

      确定这些过程的顺序和相互作用,前一过程的输出是后一过程的输入。其中,配置管理和资源管理是这些过程的支持性过程,测试管理则对其他测试过程进行监视、测试和管理;

      确定这些过程所需的准则和方法,一般应制订这些过程形成文件的程序,以及监视、测量和控制的准则和方法;

      确保可以获得必要的资源和信息,以支持这些过程的运行和对它们的监测;

      监视、测量和分析这些过程;

      实施必要的改进措施。

      在具体的软件缺陷中,它将其生命周期分为6个生命状态:open、working、verify、cancel、close和defer,能详细记录、跟踪和管理每个软件缺陷的生命过程,直至排除这个缺陷。它还为软件缺陷设定了严重级别、优先级、缺陷类型等属性,可自动分清软件缺陷的轻重缓急,并能提供相关的分析和统计功能。

  • web test

    2007-11-09 15:21:25

    web test

    1页面部分
    1 页面清单是否完整(是否已经将所需要的页面全部都列出来了)
    2 页面是否显示(在不同分辨率下页面是否存在,在不同浏览器版本中页面是是否显示)
    3 页面在窗口中的显示是否正确、美观(在调整浏览器窗口大小时,屏幕刷新是否正确)
    4 页面特殊效果(如特殊字体效果、动画效果)是否显示
    5 页面特殊效果显示是否正确

    2
    页面元素部分
    1)页面元素清单(为实现功能,是否将所需要的元素全部都列出来了,如按钮、单选框、复选框、列表框、超连接、输入框等等)
    2)素是否显示(元素是否存在)
    3)页面元素是否显示正确(主要针对文字、图形、签章)
    4)页面元素的外形、摆放位置(如按钮、列表框、核选框、输入框、超连接等)
    5 页面元素基本功能是否实现(如文字特效、动画特效、按钮、超连接)
    6 页面元素的容错性列表(如输入框、时间列表或日历)
    7 页面元素的容错性是否存在
    8 页面元素的容错性是否正确

    3
    功能部分
    1 数据初始化是否执行
    2 数据初始化是否正确
    3 数据处理功能是否执行
    4 数据处理功能是否正确
    5 数据保存是否执行
    6 数据保存是否正确
    7 是否对其他功能有影响
    8 如果影响其他功能,系统能否作出正确的反应
    9 其他错误
    10 对模块的具体功能进行测试时可以列出功能模块的所有功能,进行排列组合,测试所有情况
    如:某一功能模块具有最基本的增删改查功能,则需要进行以下测试
    单项功能测试(增加、修改、查询、删除)
    增加——>增加——>增加 (连续增加测试)
    增加——>删除
    增加——>删除——>增加 (新增加的内容与删除内容一致)
    增加——>修改——>删除
    修改——>修改——>修改 (连续修改测试)
    修改——>增加 (新增加的内容与修改前内容一致)
    修改——>删除
    修改——>删除——>增加 (新增加的内容与删除内容一致)
    删除——>删除——>删除 (连续删除测试)
    11)查询功能分为两种情况,验证操作结果。
    一、打开页面时自动显示结果,则不特别强调;
    二、需要手工操作进行查询,则每次在其他功能完成后进行。
    4
    提示信息
    1 成功、失败提示
    2 操作结果提示

    3 确认提示
    4 危险操作、重要操作提示

    5 返回页面 提示后显示的页面
    5
    容错性
    注意以下几种情况
    1 为空、非空
    2 唯一性
    3 )字长、格式
    4 数字、邮政编码、金额、电话、电子邮件、ID号、密码
    5 日期、时间
    6 特殊字符 (对数据库)英文单、双引号,&符号
    6
    权限部分
    功能权限: 指定用户可以使用那些功能,不能使用那些功能
    数据权限: 指定用户可以处理那些数据,不可以处理那些数据。可
    以合并到功能测试

    操作权限: 在逻辑关系上,操作前后顺序、数据处理情况。可以合
    并到功能测试

    权限变化: 可以合并到功能测试

    1 功能权限是否存在
    2 )功能权限是否正确
    3 数据权限是否存在
    4 数据权限是否正确
    5)操作权限是否存在
    6 操作权限是否正确
    7 引起权限变化的功能列表
    8 功能权限变化还是数据权限变化,或两者兼有
    9 权限变化是否正确

    7
    键盘操作
    1 Tab键的使用
    2 上下方向键的使用
    3 Enter键的使用
    4 系统设定快捷键的使用(如果设置有快捷键)

    8
    测试中还应注意的其他事项
    6 完整性:是否是一个整体,没有功能缺损
    7 易用性:使用是否方便
    8 一致性:类似的问题用类似的方法处理
    9 提示信息:提示信息是否完整、正确、详细
    10 帮助信息:是否提供帮助信息,帮助信息的表现形式(页面文字、提示信息、帮助文件),帮助信息是否正确、详细
    11 兼容性:包括操作系统兼容和应用软件兼容,可能还包括硬件兼容
    12 可扩展性:是否由升级的余地,是否保留了接口
    13 稳定性:运行所需的软硬件配置,占用资源情况,出现问题时的容错性,对数据的保护
    14 运行速度:运行的快慢,带宽占用情况

    有几点:
    1.
    功能点测试:是否满足需求所要求的功能
    2.
    字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错.
    3.
    字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错
    .
    4.
    标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确
    .
    5.
    中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错
    .
    6.
    信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理
    .
    7.
    界面测试:界面的正确性、一致性、友好性、易用性。


    用户界面测试是从最终的使用者用户的角度来看软件,软件难以理解,不易使用就是软件缺陷。可以从以下几个方面重点来检查用户界面:

    1.
    易用性检查:确保软件易于理解,方便使用。
    2.
    一致性检查:
    a.
    注意系统页面的风格是否一致,如字的大小、颜色、字体要相同。
    b.
    提示信息的表达方式是否一致。
    c.
    按钮排列顺序是否一致。
    d.back, cancel
    等按钮跳转页面处理是否一致。
    e.
    各字段的名称,位置、长度、类型是否和设计文档要求一致,如Employee NoLoginName不一致。
    3.
    正确性检查:检查页面上的form, button, table, header, footer,提示信息,还有其他文字拼写,句子的语法等是否正确。
    4.
    友好性检查:
    a.
    提示信息是否友好.
    b.
    系统应该在用户执行错误的操作之前提出警告,提示信息
    .
    c.
    页面分辨率检查,在各种分辨率浏览系统检查系统界面友好性。

    5.
    合理性检查:做delete, update, add, cancel, back等操作后,查看信息回到的页面是否合理。

    6.
    检查本地化是否通过:英文版不应该有中文信息,英文翻译准确,专业。
    7.
    页面最大化检查:测试最大化/最小化/还原时页面是否做了对应的处理

  • web测试20界

    2007-11-09 15:15:41

    1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。

            2. 相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。

            3. 检查按钮的功能是否正确:如update、cancel、delete、save等功能是否正确。

            4. 字符串长度检查:输入超出需求所说明的字符串长度的内容,看系统是否检查字符串长度,会不会出错。

            5. 字符类型检查:在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错。

            6. 标点符号检查:输入内容包括各种标点符号,特别是空格、各种引号、回车键。看系统处理是否正确。

            7. 中文字符处理:在可以输入中文的系统输入中文,看会否出现乱码或出错。

            8. 检查带出信息的完整性:在查看信息和update信息时,查看所填写的信息是不是全部带出,带出信息和添加的是否一致。

            9. 信息重复:在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理。

            10. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理。

            11. 检查添加和修改是否一致:检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型。

            12. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错。同时,也要注意,会不会报和自己重名的错。

            13. 重复提交表单:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。

            14. 检查多次使用back键的情况:在有back的地方,back,回到原来页面,再back,重复多次,看会否出错。

            15. search检查:在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确。如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确。

            16. 输入信息位置:注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方。

            17. 上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。

            18. 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加* 

            19. 快捷键检查:是否支持常用快捷键,如Ctrl+C Ctrl+V Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。

            20. 回车键检查:在输入结束后直接按回车键,看系统处理如何,会否报错。


  • 1222

    2007-09-30 11:26:04

    一位研究生的职业生涯规划和心得体会      查看评论
    来自: 来自网上

    一位研究生的职业生涯规划和心得体会

    NetReptile推荐  [2005-11-8]
    出处:来自网上
    作者:不详

    我今年39岁了,25岁研究生毕业,工作14年,回头看看,应该说走了不少的弯路,有一些经验和教训。现在开一个小公司,赚的钱刚够养家糊口的。看看这些刚毕业的学生,对前景也很迷茫,想抛砖引玉,谈谈自己的看法,局限于理工科的学生,我对文科的不懂,身边的朋友也没有这一类型的。

      91年研究生毕业,那时出路就是1种:留在北京的国营单位,搞一个北京户口,这是最好的选择。到后来的2~3年内,户口落定了,又分成4条出路:

      1、  上国内的大企业,如:华为

      2、  自己做公司,做产品开发;

      3、  上外企,比如:爱立信、诺基亚

      4、  自己做公司,做买卖;

      5、  移民加拿大

      我想,首先要看自己适合做什么?做技术还是做买卖。

      做技术,需要你对技术感兴趣。我掰着数了一遍,我们研究生班的30来号人,实际上,适合做技术的,大概只有3、4个人,这几个人,1个现在还在华为,3个移民加拿大了,现在这4个人混的还可以,在华为的同学也移民加拿大了,他在华为呆了6年,在华为奖金工资加起来大概30万吧,还有华为的股票,再过几年,华为的股票一上市,也能值个100~200万。要是一毕业就去华为,那现在就绝对不是这个数字了。

      要是做技术,最好的就是上大公司,国内的大型企业,象华为中兴肯定是首选,能学到很多东西。华为虽然累,但是,年轻人不能怕累,要是到老了,还需要去打拼,那才是真的累啊。

      在外企,我想他们主要就是技术支持和销售,但是技术是学不到的,当然不能一概而论,我指的是象爱立信和诺基亚,真正的研发不会在中国做的,学到的也不如在华为多,其它的中兴我不是很了解,我想应该也不错啊。

      一个人都有一技之长,有傍身之技,那是最好的,走到哪里,都能有一口饭吃,还吃的不错,这是传统的观点。

      任何技术都是要在某个行业去应用,这个行业市场越大当然越好;要在一个领域之内,做深做精,成为绝对的专家,这是走技术道路的人的选择。不要跳来跳去,在中国,再小的行业你要做精深了,都可以产生很大的利润。


    研究生刚毕业的时候,做产品开发的有不少人,都是自己拍拍脑子,觉得这个产品有市场,就自己出来做。现在看来,我的这些同学,做产品开发的成功的没有一例,为什么?资源不足。

      1.  资金,刚毕业的学生啊,就是没钱;没钱,也意味着你开发的东西都是小产品;而且只能哥几个自己上,研发、生产、销售都是一个人或者几个人自己来,没有积累,什么都是重新来过。

      2.  人脉,任何一个行业,要想进去,需要有很深的人脉,否则,谁会用你的东西啊?谁敢用你的东西啊?

      我看到的,我这个班上开发产品的,自己还在坚持的,只剩下一个人了,说实在的,到现在,没有自己的汽车,也没有自己的房子,混的挺惨的。现在出国的不说了,在外企、在华为,至少都是几十万的年薪了,还有各种福利,就是产品开发成功了,又能如何?也就是这样了,但是以前那些年,都没有金钱的积累,等于白干。

      我身边的一个自动化系的研究生班的同学,能靠自己开发产品活得还可以的,也只有2个人。说明这条路不是那么好走的啊。

      其次就是上外企。我的2个同学,一个上了爱立信,一个先到爱立信后到诺基亚,都混的不错。到诺基亚的后来利用在诺基亚结识的人脉(就是哪些电信的头头脑脑),自己开了公司,也赚了不少的钱。

      外企最大的好处就是除了能学到比较规范的管理外,还能给你的职业生涯镀金。到了一个外企外,再到同行业的外企我想就很容易了。而且外企的收入高啊。

      自己做公司,做买卖,一开始有3~4个人走这条路,但是真正发财的只有一个人,其他人后来上外企了。做买卖,还是要有一定的天赋,还有机遇。要有对金钱的赤裸裸的欲望,要有商业上的头脑。后来我们同学在一起谈,说,我们即使给自己这个机遇,也未必能做的好。何况当时那个同学看好的产品(做一个台湾产品的代理),我们大家都没有看好,说明,真理还是掌握在少数人手里。

      到后来,同学们纷纷移民移民加拿大。

      移民加拿大对搞技术的人来说,还是一个不错的选择,但是要尽早,练了几年的技术,就赶紧出去,大概是在1996年走了不到10个,现在都还可以,买了房子和车了。要是晚了,语言再学也难了,而且在国内都混的还可以了,也就没有必要出去了。

      我自己呢,先是在国营的研究所混了4年,后来到一家公司干了6年,2002年出来自己做公司,现在也就是混了一个温饱吧,算是有房有车,有点积蓄,但是不多,还有一个可爱的女儿。回首这10来年,有一些经验和教训。
    1.  要有一个职业生涯的规划。首先需要定位自己做什么合适,是做买卖还是做技术,一条路走到黑;当然,做了技术,后来改行也行;

      2.  做技术,就是要做精做深,成为这个行业的这个技术的专家;最好就是去国内的大公司,才能全面学到东西,能够给你培训的机会;如果大公司进不去,先到小公司练技术,找机会再到大公司去镀金,学高深的技术。千万不要自己做产品,要做也是对这个行业熟悉了,再去做。

      3.  积极争取机会。积极争取学习和进步的机会。比如,做技术,就需要多锻炼,多学习,来提高自己的水平。一门技术,只要有机会去学习,都能学的会;要是没有机会,天才也没有办法学到这个技术。柳传志就说,杨元庆就是“哭着喊着要进步”,实际上,就是争取自己的机会;当然,这种强烈的进步欲望,也是领导看重的地方。每一步都走在前面,积累10年,你就有了比其他人更多的机会了。  

      4.  积累个人的信誉。从你的职业生涯的第一天,就要按照诚信的原则办事。要做到,当人们提起你的名字的时候,说,这哥们还不错,做事还行。

      5.  注意利用资源。如果你有有钱的亲戚、成功的长辈或者朋友,可以充分利用这些机会,得到更加顺利的发展前景。

      6.  注意财富的不断积累。人生要想得到自由,财富是很关键的。否则,永远仰人鼻息,永远看人脸色。人都是势利眼。今后的家庭、职业生涯,金钱的积累很重要,没有钱,永远不能开张自己的事业,得到更多的机会;财富要做到逐年积累,你才能家庭生活幸福。没有钱是不可能有幸福的家庭的。

      7.  注意人脉的积累。最终,事业要靠在社会上的人脉的资源。要注意认识在你这个行业的人,结交他们,最终他们会成为你事业上的助力。

      8.  寻求贵人相助。要找大老板来帮助你,得到大老板的赏识。想想看,大蛋糕,切一点就够了,小蛋糕,都给你也吃不饱啊。

      9.  多听听成功的前辈和成功的朋友的意见。注意少听家里长辈的意见,尤其是都已经退休的长辈,他们对社会的认识还停留在很久以前,而这个社会已经发生很大的变化呢。最重要的是,长辈有时候会强求你做一些事情,但是,最终的结果他们是不负责的。只有你才能对自己负责。  



      
  • 用户注册和密码修改测试点

    2007-06-21 17:27:21

    用户注册和密码修改测试点

    2007-06-18 10:49:56 / 个人分类:测试精华

    一.用户注册

            只从用户名和密码角度写了几个要考虑的测试点,如果需求中明确规定了安全问题,Email,出生日期,地址,性别等等一系列的格式和字符要求,那就都要写用例测了~

            以等价类划分和边界值法来分析
            1.填写符合要求的数据注册: 用户名字和密码都为最大长度 (边界值分析,取上点)
            2.填写符合要求的数据注册 :用户名字和密码都为最小长度 (边界值分析,取上点)
            3.填写符合要求的数据注册:用户名字和密码都是非最大和最小长度的数据(边界值分析,取内点)
            4.必填项分别为空注册          
            5.用户名长度大于要求注册1位(边界值分析,取离点)
            6.用户名长度小于要求注册1位(边界值分析,取离点)
            7.密码长度大于要求注册1位(边界值分析,取离点)
            8.密码长度小于要求注册1位(边界值分析,取离点)
            9.用户名是不符合要求的字符注册(这个可以划分几个无效的等价类,一般写一两个就行了,如含有空格,#等,看需求是否允许吧~)
            10.密码是不符合要求的字符注册(这个可以划分几个无效的等价类,一般写一两个就行了)
            11.两次输入密码不一致(如果注册时候要输入两次密码,那么这个是必须的)
            12.重新注册存在的用户
            13.改变存在的用户的用户名和密码的大小写,来注册。(有的需求是区分大小写,有的不区分)
            14.看是否支持tap和enter键等;密码是否可以复制粘贴;密码是否以* 之类的加秘符号显示


    二.修改密码
            当然具体情况具体分析哈~不能一概而论~
            实际测试中可能只用到其中几条而已,比如银行卡密码的修改,就不用考虑英文和非法字符,更不用考虑那些TAP之类的快捷键.
            而有的需要根据需求具体分析了,比如连续出错多少次出现的提示,和一些软件修改密码要求一定时间内有一定的修改次数限制等等。

            1.不输入旧密码,直接改密码
            2.输入错误旧密码
            3.不输入确认新密码
            4.不输入新密码
            5.新密码和确认新密码不一致
            6.新密码中有空格
            7.新密码为空
            8.新密码为符合要求的最多字符
            9.新密码为符合要求的最少字符
            10.新密码为符合要求的非最多和最少字符
            11.新密码为最多字符-1
            12.新密码为最少字符+1
            13.新密码为最多字符+1
            14.新密码为最少字符-1
            15.新密码为非允许字符(如有的密码要求必须是英文和数字组成,那么要试汉字和符号等)
            16.看是否支持tap和enter键等;密码是否可以复制粘贴;密码是否以* 之类的加秘符号
            17.看密码是否区分大小写,新密码中英文小写,确认密码中英文大写.
            18.新密码与旧密码一样能否修改成功.


            有个朋友问我,注册的时候测试了密码长度,修改的时候为什么还要测试.
            我在这里举个我亲身经历的例子,以前我玩一个游戏,叫恋爱盒子,在游戏里我把密码改成了xuewufengtian,后来怎么也上不去了.因为资料填写不全无法找回密码.后来我在一次注册过程中发现,注册的时候密码长度最长是10位,这时我灵机一动,用了原来的用户名和xuewufengt的密码就进去了. 这表明,修改密码时候的最大长度和注册及登陆的时候密码最大长度有可能是不一致的.

  • 设计功能和界面测试用例

    2007-06-21 17:16:31

    设计功能和界面测试用例

    2007-06-08 10:36:07 / 个人分类:测试精华

    1.1 文本框、按钮等控件测试

    1.1.1 文本框的测试

    如何对文本框进行测试

     a,输入正常的字母或数字。
     b,输入已存在的文件的名称;
     c,输入超长字符。例如在“名称”框中输入超过允许边界个数的字符,假设最多255个字符,尝试输入 256个字符,检查程序能否正确处理;
     d,输入默认值,空白,空格;
     e,若只允许输入字母,尝试输入数字;反之;尝试输入字母;
     f,利用复制,粘贴等操作强制输入程序不允许的输入数据;
     g,输入特殊字符集,例如,NUL及\n等;
     h,输入超过文本框长度的字符或文本,检查所输入的内容是否正常显示;
     i,输入不符合格式的数据,检查程序是否正常校验,如,程序要求输入年月日格式为yy/mm/dd,实际输入yyyy/mm/dd,程序应该给出错误提示

    在测试过程中所用到的测试方法

     1,输入非法数据;
     2,输入默认值;
     3,输入特殊字符集;
     4,输入使缓冲区溢出的数据;
     5,输入相同的文件名;

    命令按钮控件的测试

    测试方法:

     a,点击按钮正确响应操作。如,单击确定,正确执行操作;单击取消,退出窗口;
     b,对非法的输入或操作给出足够的提示说明,如,输入月工作天数为32时,单击”确定“后系统应提示:天数不能大于31;
     c,对可能造成数据无法恢复的操作必须给出确认信息,给用户放弃选择的机会;

    单选按钮控件的测试

    测试方法:

     a,一组单选按钮不能同时选中,只能选中一个。
     b,逐一执行每个单选按钮的功能。分别选择了“男”“女”后,保存到数据库的数据应该相应的分别为“男”“女”;
     c,一组执行同一功能的单选按钮在初始状态时必须有一个被默认选中,不能同时为空;

    up-down控件文本框的测试

    测试方法:

     a,直接输入数字或用上下箭头控制,如,在“数目”中直接输入10,或者单击向上的箭头,使数目变为10;
     b,利用上下箭头控制数字的自动循环,如,当最多数字为253时,单击向上箭头,数目自动变为1;反之亦适用;
     c,直接输入超边界值,系统应该提示重新输入;
     d,输入默认值,空白。如,“插入”数目为默认值,点击“确定”;或,删除默认值,使内容为空,单击“确定”进行测试;
     e,输入字符。此时系统应提示输入有误。

    组合列表框的测试

    测试方法:

     a,条目内容正确,其详细条目内容可以根据需求说明确定;
     b,逐一执行列表框中每个条目的功能;
     c,检查能否向组合列表框输入数据;

    复选框的测试

    测试方法:

     a,多个复选框可以被同时选中;
     b,多个复选框可以被部分选中;
     c,多个复选框可以都不被选中;
     d,逐一执行每个复选框的功能;

    列表框控件的测试

    测试方法:

     a,条目内容正确;同组合列表框类似,根据需求说明书确定列表的各项内容正确,没有丢失或错误;
     b,列表框的内容较多时要使用滚动条;
     c,列表框允许多选时,要分别检查shift选中条目,按ctrl选中条目和直接用鼠标选中多项条目的情况;

    滚动条控件的测试

    要注意一下几点:

     a,滚动条的长度根据显示信息的长度或宽度及时变换,这样有利于用户了解显示信息的位置和百分比,如,word中浏览100页文档,浏览到50页时,滚动条位置应处于中间;
     b,拖动滚动条,检查屏幕刷新情况,并查看是否有乱码;
     c,单击滚动条;
     d,用滚轮控制滚动条;
     e,滚动条的上下按钮。

    各种控件在窗体中混和使用时的测试

     a,控件间的相互作用;
     b,tab键的顺序,一般是从上到下,从左到右;
     c,热键的使用,逐一测试;
     d,enter键和esc键的使用;

    在测试中,应遵循由简入繁的原则,先进行单个控件功能的测试,确保实现无误后,再进行多个控件的的功能组合的测试。

    ps:密码输入框测试时要特别注意进行字母大写输入的测试。

    查找替换操作
     案例演示:打开word中的"替换"对话框
     测试本功能有通过测试和失败测试两种情况
     通过测试:

     1,输入内容直接查找,或查找全部
     2,在组合框中寻找已经查找过的内容,再次查找并确认文档的内容正确,如,已经查找过"测试用例",再次进入不用重新输入查找内容,直接在文档中搜寻就可以.

    失败测试:
     1,输入过长或过短的查询字符串.如,假设查询的字符串长度为1到255,那么输入0,1,2,256,255和254进行测试;
     2,输入特殊字符集,如,在word中.^g代表图片,^代表分栏符,可以输入这类特殊字符测试;

    替换测试大体相同.
     关于编辑操作窗口的功能测试的用例:
     1,关闭查找替换窗口.不执行任何操作,直接退出;
     2,附件和选项测试.假如,设定"精确搜寻","向后"搜索等附件选项等等来测试;
     3,控件间的相互作用.如,搜寻内容为空时,按钮"搜寻全部","搜寻","全部替换","替换"都为灰色.
     4,热键, Tab键.回车键的使用.

    插入操作
     1,插入文件
     测试的情况
     a,插入文件;
     b,插入图像;
     c,在文档中插入文档本身;
     d,移除插入的源文件;
     e,更换插入的源文件的内容;

    2,链接文件
     测试方法:
     a,插入链接文件;
     b,在文档中链接文档本身;
     c,移除插入的源文件;
     d,更换插入的源文件的内容.

    3,插入对象
     要测试的内容
     a,插入程序允许的对象,如,在word中插入excel工作表;
     b,修改所插入对象的内容.插入的对象仍能正确显示;
     c,卸载生成插入对象的程序,如,在word中插入excel工作表后卸载excel,工作表仍正常使用.

    编辑操作
     编辑操作包括剪切,复制,粘贴操作.

    测试剪切操作的方法
     a,对文本,文本框,图文框进行剪切;
     b,剪切图像
     c,文本图像混合剪切
     复制操作方法与剪切类似.

    测试时,主要是对粘贴操作的测试,方法是:
     a,粘贴剪切的文本,文本框及图文框;
     b,粘贴所剪切的图像;
     c,剪切后,在不同的程序中粘贴
     d,多次粘贴同一内容,如,剪切后,在程序中连续粘贴3次;
     e,利用粘贴操作强制输入程序所不允许输入的数据.

    界面测试用例的设计方法
     1,窗体
     测试窗体的方法:
     a,窗体大小,大小要合适,控件布局合理;
     b,移动窗体.快速或慢速移动窗体,背景及窗体本身刷新必须正确;
     c,缩放窗体,窗体上的控件应随窗体的大小变化而变化;
     d,显示分辨率.必须在不同的分辨率的情况下测试程序的显示是否正常;
     进行测试时还要注意状态栏是否显示正确;工具栏的图标执行操作是否有效,是否与菜单懒中图标显示一致;错误信息内容是否正确,无错别字,且明确等等;

    2,控件
     测试方法:
     a,窗体或控件的字体和大小要一致;
     b,注意全角,半角混合
     c,无中英文混合.

    菜单

    进行测试时要注意
     a,选择菜单是否可以正常工作,并与实际执行内容一致;
     b,是否有错别字:
     c,快捷键是否重复;
     d,热键是否重复;
     e,快捷键与热键操作是否有效
     f,是否存在中英文混合
     g,菜单要与语境相关,如,不同权限的用户登陆一个应用程序,不同级别的用户可以看到不同级别的菜单并使用不同级别的功能;
     h,鼠标右键快捷菜单

    特殊属性
     1,安装界面应有公司介绍或产品介绍,有公司的图标
     2,主界面及大多数界面最好有公司图标
     3,选择"帮助"->"关于"命令,应看

  • LoadRunner下载

    2007-06-21 17:06:31

    测试工具下载推荐

    CC/CQ,PCVS, CVS ,WinCVS , TD/QC所有配置管理工具下载网站:
    SCMLife--致力于做一流得配置管理社区

    电驴测试工具资源下载:
    1)LoadRunner7.8
    http://lib.verycd.com/2005/01/07/0000034096.html
    (2)WinRunner7.6
    http://lib.verycd.com/2005/03/16/0000042388.html
    (3)TestDirector 7.6
    http://board.verycd.com/t162206.html
    FTP:TD7.6下载:
    TD 7.6 SP4 企业版

    TD 7.6 SP4标准版
    注意要用电驴下,晚上好
    WinRunner 7.6下载用快车就行
    http://www.clzx.net.cn/Soft/ShowSoft.asp?SoftID=450
    WinRunner8。0电驴下载
    http://lib.verycd.com/2005/09/18/0000065515.html

    QuickTest Pro 8.2 电驴下载

    http://lib.verycd.com/2005/09/19/0000065551.html

    LoadRunner 8.0下载地址:http://lib.verycd.com/2005/10/01/0000067173.html

    LoadRunner 8.1下载地址

    Ftp: LoadRrunner 8.0下载http://esd.mercury.com/akdlm/trial/lr/LR8DownLoad.exe



    Mofile网络硬盘注册后,免费用户可得到1GB空间,看来以后传东东(仅保留三天)有去处了,欢迎大家注册,具体地址是:中国网络硬盘Mofile!!!

    强烈推荐测试网站,中国软件测试基地
    推荐NetYi电子书下载网站,点此注册 NetYi最大的电子图书网站

    Ftp下载:
    1.【Mercury性能测试工具LoadRunner 8.0试用版下载】
    2.【Quick Test Pro 9.0】试用版下载
    3. 【Quality Center 8.2】试用版下载
    4. 【Quick Test Pro 8.2】试用版下载

    4.1  Mercury QuickTest Professional for Java Evaluation
    4.2  Mercury QuickTest Professional for Oracle Evaluation
    4.3  Mercury QuickTest Professional for .Net Evaluation


    5. 【Quik Test Pro 8.2中文补丁】下载
    6.  【WinRunner 8.0】试用版下载
    7.  TestDirector 8.0 电驴下载
    http://lib.verycd.com/2006/03/19/0000095046.html




    IMB测试工具下载
    1. Rational2003全套下载


     

583/3<123
Open Toolbar