本测试空间希望能与对软件测试技术感兴趣的XDJM共同交流,欢迎大家一起来讨论有关测试问题!

发布新日志

  • 高效程序员应该养成的七个习惯

    2007-09-04 10:56:38Top 1 Digest 1

    对于软件工程师来说,工作也许意味着许多东西 -- 稳定的收入、做自己感兴趣的项目、找一份更好工作的跳板,或者你只是喜欢与其他程序员共事。但说到“效率”,强调的是在一定时间内按质完成项目的能力。Phil Chu根据自己的经验提出了高效程序员应该养成的七个习惯。建议去看看作者的原文(可能需要代理才能正常访问)。

      理解你的需求

      成为一个有效率的程序员首先要知道如何正确的支配自己的时间。对时间最大的浪费莫过于去做那些没有用处或者永远不会上线的项目。而导致这种结果的根源往往是对需求理解的偏差。
    要最大程度避免这种情况的发生,最好的办法是快速建模,尽可能让演示系统早点出来。对于客户来说,只有看得到摸得着的产品摆在面前,他们才会有兴趣去试用观察,才会在实际的操作中发现供需双方在需求理解上的偏差。否则即使你写上几百页的需求分析文档也只能是自己的一面之词,客户可没耐心去检查这些文档写的是否准确。

      另一方面,你应该让每一个阶段的开发成果都能够尽早的提交给客户。让他们以完全不考虑操作合理性和业务逻辑性的傻瓜级操作来发现程序员编程中的固有思维局限。尤其必须让QA尽早的介入到项目开发中来。如果能够每天提交一份测试版本给QA自然是最理想的了,但大多数项目开发做不到这样的粒度,那么就争取每周提交一份可测试版本。重要的是应该让QA和开发能够保持交错并行状态。只有这样,才能让QA尽早发现bug,降低每个bug的修复成本,同时缩减独立测试周期的跨度。

      程序员往往不愿意把半成品代码交付给测试人员,相反他们更喜欢在所有代码都完工,达到自己满意的程度之后再让别人来测试。因为在这之前的代码往往存在很多程序员自己知道需要修改(或者故意留待后续补全)的流程缺失和Bug,测试人员并不知道哪些是真正的Bug,哪些只是临时性的运行错误,每次都会一股脑儿作为Bug反馈给程序员。这往往让程序员们心烦。同时测试人员有时候也不喜欢测试这种很多分支都走不通的中间版本。

      但不管喜不喜欢,测试并发现问题是测试人员的工作;程序员则应该认识到,Bug反馈得越早就越是件好事情。QA和开发之间的关系往往很敌对,可实际上双方的目标是一致的。“忠言逆耳”古训有之,对于程序员来说就应该“有则改之,无则加勉”。总好过项目完成之后才发现一堆的问题,到那时候再要做修改,基本上都会牵一发而动全身,痛苦的还是程序员自己。

      保持真实性

      尽可能让你的系统运行在最接近真实环境配置下面,使用有实际意义的数据和真实的编译版本,并经常性进行模块整合。如果你的测试环境使用的数据都是些胡乱添加的东西,那么将来和测试数据大相径庭的真实数据这块大冰山早晚会撞沉你的程序。另一方面如果你只在开发环境来编译运行测试,会发现正式发布之后有各种各样莫名其妙的问题产生,到最后原来都是因为环境配置与开发环境有些不起眼的差异所导致。把所有模块整合进行编译联调,看上去应该是最后作的一项附加工作,但实际上这是一项需要在开发过程中经常性进行的工作。只有这样QA才能有最完整的东西拿来测试,得到更多的Bug反馈,同时降低模块整合的难度。

      理解你的代码

      书写规范的代码,并保持代码的整洁。Coding是一门艺术。正如写作一样,同样的文字在文豪的笔下就能够熠熠生辉,读起来赏心悦目;在普通人的笔下大概就只是词能达意的效果了;在某些人的笔下或许就需要研究半天才能猜出个大概来。当然不可能人人都成为艺术家,但至少你可以学会欣赏艺术、学习艺术。书写漂亮的代码是对自己工作的尊重,也是对其他程序员的尊重。如果你的代码中间充斥着大段过时的注释、可读性差的变量/函数,怎么去要求别人或者自己以后能够理解它们?

      最优编程

      把你的时间花在代码的功能上, 而不是去把现有的代码改得对自己胃口(尤其对于那些copy/paste过来的代码);要找到系统的瓶颈进行优化,而不是对那些无益于系统整体性能提高的地方做无用功。

      管理好你自己

      也许有人会说计划和进度控制是PM的事情,但一个好的程序员应该比PM更了解自己目前工作的进度。不论上头给的进度计划是否合理,你都应该有自己的原则和概念,清楚知道每天该做什么怎么去做。

      持续教育

      只有不断的学习、实践、犯错误,你才会真正有所提高。在我看来,对于程序员来说最好的老师不在学校,而在书本、网络、社区。学会自我学习才能保持与时俱进。

      R-E-S-P-E-C-T

      互相尊重是一切的基础。

  • 服务器性能测试,你选哪种工具?

    2007-09-04 10:51:33

        众所周知,服务器是整个网络系统和计算平台的核心,许多重要的数据都保存在服务器上,很多网络服务都在服务器上运行,因此服务器性能的好坏决定了整个应用系统的性能。

        现在市面上不同品牌、不同种类的服务器有很多种,用户在选购时,怎样从纷繁的型号中选择出所需要的,适合于自己应用的服务器产品,仅仅从配置上判别是不够的,最好能够通过实际测试来筛选。而各种的评测软件有很多种,你应该选择哪个软件测试?下面就介绍一些较典型的测试工具:

     (一)服务器整机系统性能测试工具

        一台服务器系统的性能可以按照处理器、内存、存储、网络几部分来划分,而针对不同的应用,可能会对某些部分的性能要求高一些。

    Iometer(www.iometer.org):存储子系统读写性能测试

         Iometer是Windows系统下对存储子系统的读写性能进行测试的软件。可以显示磁盘系统的最大IO能力、磁盘系统的最大吞吐量、CPU使用率、错误信息等。用户可以通过设置不同的测试的参数,有存取类型(如sequential ,random)、读写块大小(如64K、256K),队列深度等,来模拟实际应用的读写环境进行测试。
    查看更多精彩图片

    Iometer操作简单,可以录制测试脚本,可以准确有效的反映存储系统的读写性能,为各大服务器和存储厂商所广泛采用。

    Sisoft Sandra(www.sisoftware.co.uk):WINDOWS下基准评测

    SiSoft发行的Sandra系列测试软件是Windows系统下的基准评测软件。此软件有超过三十种以上的测试项目,能够查看系统所有配件的信息,而且能够对部分配件(如CPU、内存、硬盘等)进行打分(benchmark),并且可以与其它型号硬件的得分进行对比。另外,该软件还有系统稳定性综合测试、性能调整向导等附加功能。
    查看更多精彩图片

    Sisoft Sandra 测试界面

        Sisoft Sandra软件在最近发布的Intel bensley平台上测试的内存带宽性能并不理想,不知道采用该软件测试的FBD内存性能是否还有参考价值,或许软件应该针对FBD内存带宽的测试项目做一个升级。

    Iozone(www.iozone.org):linux下I/O性能测试

    现在有很多的服务器系统都是采用linux操作系统,在linux平台下测试I/O性能可以采用iozone。

         iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能。可以测试Read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read, pread ,mmap, aio_read, aio_write 等等不同的模式下的硬盘的性能。测试所有这些方面,生成excel文件,另外, iozone还附带了用gnuplot画图的脚本。

        该软件用在大规模机群系统上测试NFS的性能,更加具有说服力。

    Netperf(www.netperf.org):网络性能测试

    Netperf可以测试服务器网络性能,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多块的速度接收数据。

        Netperf工具以client/server方式工作。server端是netserver,用来侦听来自client端的连接,client端是netperf,用来向server发起网络测试。在client与server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制连接建立并传递了测试配置信息以后,client与server之间会再建立一个测试连接,用来来回传递着特殊的流量模式,以测试网络的性能。

        对于服务器系统来说,网络性能显得尤其重要,有些服务器上为了节省成本,采用了桌面级的网络芯片,性能怎样,用这个软件一测便知了。

        以上介绍的这几款测试工具都是可以免费从网上下载的非商业软件,但是其测试结果和认可程度均是为大多数使用者所认同的。你可以根据自己的应用需求选择不同的软件进行测试。

    (二)针对应用的测试工具

        随着web应用的增多,服务器应用解决方案中以Web为核心的应用也越来越多, 很多公司各种应用的架构都以web应用为主。一般的web测试和以往的应用程序的测试的侧重点不完全相同,在基本功能已经通过测试后,就要进行重要的系统性能测试了。系统的性能是一个很大的概念,覆盖面非常广泛,对一个软件系统而言包括执行效率、资源占用率、稳定性、安全性、兼容性、可靠性等等,以下重点从负载压力方面来介绍服务器系统性能的测试。系统的负载和压力需要采用负载测试工具进行,虚拟一定数量的用户来测试系统的表现,看是否满足预期的设计指标要求。负载测试的目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等如何决定系统的性能,例如稳定性和响应等。

        负载测试一般使用工具完成,有LoadRunner,Webload,QALoad等,主要的内容都是编写出测试脚本,脚本中一般包括用户常用的功能,然后运行,得出报告。

        使用压力测试工具对web服务器进行压力测试。测试可以帮助找到一些大型的问题,如死机、崩损、内存泄漏等,因为有些存在内存泄漏问题的程序,在运行一两次时可能不会出现问题,但是如果运行了成千上万次,内存泄漏得越来越多,就会导致系统崩滑。

    Loadrunner:预测系统行为和性能的负载测试工具

        目前,业界中有不少能够做性能和压力测试的工具,Mercury(美科利)Interactive公司的LoadRunner是其中的佼佼者,也已经成为了行业的规范,目前最新的版本8.1。

        LoadRunner 是一种预测系统行为和性能的负载测试工具,通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试,LoadRunner 适用于各种体系架构,能支持广范的协议和技术(如Web、Ftp、Database等),能预测系统行为并优化系统性能。它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。Loadrunner是一个强大有力的压力测试工具,它的脚本可以录制生成,自动关联。测试场景面向指标,实现了多方监控。而且测试结果采用图表显示,可以自由拆分组合。

    查看更多精彩图片

    Loadrunner 测试窗口界面

         通过Loadrunner的测试结果图表对比,你可以寻找出系统瓶颈的原因,一般来说可以按照服务器硬件、网络、应用程序、操作系统、中间件的顺序进行分析。

    查看更多精彩图片

    Loadrunner 分析窗口界面

        Loadrunner是一款收费软件,根据测试项目和虚拟用户数目的不同而花费不同的费用。不过你可以下载到免费使用10天的测试版本。

    Webload:WEB性能压力测试

        webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能。

        用户创建的是基于javascrīpt的测试脚本,称为议程agenda,用它来模拟客户的行为,通过执行该脚本来衡量web应用程序在真实环境下的性能。当前最高版本是6.0。webload提供巡航控制器cruise control的功能,利用巡航控制器,可以预定义web应用程序应该满足的性能指标,然后测试系统是否满足这些需求指标;cruise control能够自动把负载加到web应用程序,并将在此负荷下能够访问程序的客户数量生成报告。

        webload能够在测试会话执行期间对监测的系统性能生成实时的报告,这些测试结果通过一个易读的图形界面显示出来,并可以导出到excel和其他文件里。

    查看更多精彩图片

    Webload 报告界面

         这两个软件的功能虽然强大,并且可以自动生成测试报告,但其终究是一个工具,如果你想真正的定位服务器性能的好坏和性能的瓶颈所在,需要使用工具的人对于测试软件的方方面面都要有了解,比如软件体系构架,网络拓扑,服务器硬件等知识。

    结语:免费与付费的选择

        无论什么工具,基本的技术都是利用线程技术模仿和虚拟用户,在这里主要的难点在于测试脚本的编写,每种工具使用的脚本都不一样,但是大多数工具都提供录制功能就算是不会编码的测试人员同样可以测试。

        以上介绍的这些软件,只是众多评测软件中比较典型的几个,笔者曾经见过有的用户针对自己的应用专门写的测试软件,这样可以很快筛选出适合于自己的服务器产品。对于一般的企业用户来说,根据自己的应用需求,选择合适的评测软件是很重要的。有时候不必非得选择昂贵的商业软件,用那些免费的软件也可以很好的衡量服务器的性能。当然如果是需要搭配自己的应用软件在服务器上的测试,就需要花费财力购买正版的付费软件。这样可以更加准确的测试性能并定位导致系统瓶颈的原因了。

  • 周末一点也没有休息

    2007-09-03 08:54:39

         周六去了森林动物园,周日去了发现王国。等下把照片发上来

我的存档

数据统计

  • 访问量: 2953
  • 日志数: 3
  • 图片数: 1
  • 书签数: 2
  • 建立时间: 2007-09-03
  • 更新时间: 2007-09-04

RSS订阅

Open Toolbar