??xml version="1.0" encoding="utf-8" standalone="yes"?>一本大道色婷婷在线,欧美一区二区三区精品,国产aⅴ精品一区二区三区黄http://www.aygfsteel.com/xiaomage234/category/33769.html生命本就是一ơ凄的漂流Q记忆中放不下的Q永q是孩提时代的那一份浪漫与U真Q?/description>zh-cnFri, 08 Nov 2013 05:58:06 GMTFri, 08 Nov 2013 05:58:06 GMT60互联|公司linuxq维生场景常用软g工具一览【{自老男孩?/title><link>http://www.aygfsteel.com/xiaomage234/archive/2013/11/07/406109.html</link><dc:creator>马?/dc:creator><author>马?/author><pubDate>Thu, 07 Nov 2013 08:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/xiaomage234/archive/2013/11/07/406109.html</guid><wfw:comment>http://www.aygfsteel.com/xiaomage234/comments/406109.html</wfw:comment><comments>http://www.aygfsteel.com/xiaomage234/archive/2013/11/07/406109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xiaomage234/comments/commentRss/406109.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xiaomage234/services/trackbacks/406109.html</trackback:ping><description><![CDATA[<p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #555555; font-family: 宋体, 'Arial Narrow', arial, serif; line-height: 28px; background-color: #ffffff;"><span style="padding: 0px; margin: 0px; font-size: 16px;"><strong style="padding: 0px; margin: 0px;">互联|公司linuxq维生场景常用软g工具一览,同时补充了个别常用但不是开源的软g?/strong><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />下午受邀请参加了一个BBSzdQ于是有了下面的内容?br style="padding: 0px; margin: 0px;" />下面是在linux|站q维方向老男孩最q几q常用的免费的开源YӞ临时卛_惌v来的Q在q里和大家分享,希望l初学者指引一点\?br style="padding: 0px; margin: 0px;" />linux的世界真的很_ֽQ还没入门的朋友赶紧q来吧!</span></p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #555555; font-family: 宋体, 'Arial Narrow', arial, serif; line-height: 28px; background-color: #ffffff;"><span style="padding: 0px; margin: 0px; font-size: 16px;">操作pȝQCentos<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>Freebsd,Ubuntu,Redhatlinux,suselinux<br style="padding: 0px; margin: 0px;" />|站服务Qapache<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>nginx<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,lighttpd,php<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>tomcat<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>resin<span style="padding: 0px; margin: 0px; color: #ff0000;">※<br style="padding: 0px; margin: 0px;" /></span>数据库:Mysql<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>PostgreSQL,Mysql-proxy,<span style="padding: 0px; margin: 0px; background-color: #f8f8f8; text-indent: 28px; font-size: 14px; line-height: 25px; font-family: 宋体; color: #333333;">MariaDB</span><br style="padding: 0px; margin: 0px;" />代理相关Qlvs,keepalived,haproxy,nginx,apache,heartbeatQ此行都?span style="padding: 0px; margin: 0px; color: #ff0000;">※Q?br style="padding: 0px; margin: 0px;" /></span>|站~存Qsquid<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>nginx<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>varnish<br style="padding: 0px; margin: 0px;" />内存~存Qmemcached<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>memcachedb,TokyoTyrant<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>MongoDB,Cassandra<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>redis※,tair,CouchDB<br style="padding: 0px; margin: 0px;" />存储相关QNfs<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>Moosefs<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>Hadoop<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>gfs<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>lustre,FastDFS<br style="padding: 0px; margin: 0px;" />版本理Qcvs,svn<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>git<span style="padding: 0px; margin: 0px; color: #ff0000;">※<br style="padding: 0px; margin: 0px;" /></span>监控报警Qmboy,mrtg,nagios<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,cacti<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,zabbix,munin<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,hyperic<span style="padding: 0px; margin: 0px; color: #ff0000;">※<br style="padding: 0px; margin: 0px;" /></span>域名解析Qbind<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,powerdns,dnsmq<span style="padding: 0px; margin: 0px; color: #ff0000;">※<br style="padding: 0px; margin: 0px;" /></span>同步软gQrsync,inotify,sersync,drbd,csync2,union,lsyncd,scpQ此行都?#8251;Q?br style="padding: 0px; margin: 0px;" />分发工具QSecboy<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,expect<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>puppet<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>cfengine<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>ssh+rsync+sersync<span style="padding: 0px; margin: 0px; color: #ff0000;">※<br style="padding: 0px; margin: 0px;" /></span>虚拟软gQxen<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,kvm<br style="padding: 0px; margin: 0px;" />内网软gQiptables<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,zebra<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,iftraf,ntop<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,tc<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,iftop<br style="padding: 0px; margin: 0px;" />邮g软gQqmail<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>posfix<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>sendmail<br style="padding: 0px; margin: 0px;" />q程拨号Qopenvpn<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,pptp,openswan<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,ipip<span style="padding: 0px; margin: 0px; color: #ff0000;">※<br style="padding: 0px; margin: 0px;" /></span>l一认证Qldap(可结合微软活动目?<span style="padding: 0px; margin: 0px; color: #ff0000;">※<br style="padding: 0px; margin: 0px;" /></span>队列工具QActiveMQ<span style="padding: 0px; margin: 0px; color: #ff0000;">※,</span>RabbitMQ,MemcacheQ<br style="padding: 0px; margin: 0px;" />打包发布Qmvn<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,ants<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>,jenkins<span style="padding: 0px; margin: 0px; color: #ff0000;">※<br style="padding: 0px; margin: 0px;" /></span>试软gQapacheab,smokeping,siege,JMeter,Webbench,LoadRunnerQ此行都?span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>Q?br style="padding: 0px; margin: 0px;" />日志相关Qsyslog,rsyslog,Awstats<br style="padding: 0px; margin: 0px;" />DB代理Qmysql-proxy,amoebaQ更多还是程序实现读写分)<br style="padding: 0px; margin: 0px;" />搜烦软gQSphinx,XapianQ大公司会自己开发类似百度的规模内部搜索引擎)<br style="padding: 0px; margin: 0px;" /></span><span style="padding: 0px; margin: 0px; font-size: 16px;"><br style="padding: 0px; margin: 0px;" />提示Q?br style="padding: 0px; margin: 0px;" />1Q以上所有Y仉是老男孩用q或试q的?br style="padding: 0px; margin: 0px;" />2Q带<strong style="padding: 0px; margin: 0px;"><span style="padding: 0px; margin: 0px; color: #ff0000;">※</span></strong>的ؓ老男孩最q几q用的比较多Q可信Q使用的。也是近q来linuxq维的大众?br style="padding: 0px; margin: 0px;" />3Q有了功能分cd软g名,大家有需求,可以按功能找软g直接Gq道了?/span><br style="padding: 0px; margin: 0px;" /><span style="padding: 0px; margin: 0px; font-size: 16px;">4Q学习要有舍有得Q什么都抓必然短旉都不会精Q希望大家能抓重点,抓精髓,大众软gQ带<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>Q先熟练了,q是基础加提高,在研I小众YӞ不带<span style="padding: 0px; margin: 0px; color: #ff0000;">※</span>Q,q是高手之\Q最后在研究偏门的,世外高手之\Q当然前提是先掌握前面的大众和小众?br style="padding: 0px; margin: 0px;" />5Q当然还有一些没有大众开源的有一些也很棒Q如审计堡垒机程序?br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />q有用的多的Q老男孩落下的Q大家补充啊?/span></p><p style="padding: 0px; margin: 0px; clear: both; height: auto; overflow: hidden; color: #555555; font-family: 宋体, 'Arial Narrow', arial, serif; line-height: 28px; background-color: #ffffff;">本文 “<a style="padding: 0px; margin: 0px; color: #015f91; text-decoration: none;">老男孩linuxq维</a>” 博客Q请务必保留此出?a style="padding: 0px; margin: 0px; color: #015f91; text-decoration: none;">http://oldboy.blog.51cto.com/2561410/775056</a></p><img src ="http://www.aygfsteel.com/xiaomage234/aggbug/406109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xiaomage234/" target="_blank">马?/a> 2013-11-07 16:12 <a href="http://www.aygfsteel.com/xiaomage234/archive/2013/11/07/406109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>内存泄露工h? http://www.aygfsteel.com/xiaomage234/archive/2013/06/26/400968.html马?/dc:creator>马?/author>Wed, 26 Jun 2013 07:12:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2013/06/26/400968.htmlhttp://www.aygfsteel.com/xiaomage234/comments/400968.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2013/06/26/400968.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/400968.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/400968.html1.     ccmallocQLinux和Solaris下对C和C++E序的简单的使用内存泄漏和malloc调试库?/p>

2.     DmallocQDebug Malloc Library.

3.     Electric FenceQLinux分发版中由Bruce Perens~写的malloc()调试库?/p>

4.     LeakyQLinux下检内存泄漏的E序?/p>

5.     LeakTracerQLinux、Solaris和HP-UX下跟t和分析C++E序中的内存泄漏?/p>

6.     MEMWATCHQ由Johan Lindh~写Q是一个开放源代码C语言内存错误工P主要是通过gcc的precessor来进行?/p>

7.     ValgrindQDebugging and profiling Linux programs, aiming at programs written in C and C++.

8.     KCachegrindQA visualization tool for the profiling data generated by Cachegrind and Calltree.

9.     Leak MonitorQ一个Firefox扩展Q能扑և跟Firefox相关的泄漏类型?/p>

10. IE Leak Detector (Drip/IE Sieve)QDrip和IE Sieve leak detectors帮助|页开发员提升动态网|能通过报告可避免的因ؓIE局限的内存泄漏?/p>

11. Windows Leaks DetectorQ探Q何Win32应用E序中的M资源泄漏(内存Q句柄等)Q基于Win API调用钩子?/p>

12. SAP Memory AnalyzerQ是一Ƒּ源的JAVA内存分析软gQ可用于辅助查找JAVAE序的内存泄漏,能容易找到大块内存ƈ验证谁在一直占用它Q它是基于Eclipse RCP(Rich Client Platform)Q可以下载RCP的独立版本或者Eclipse的插件?/p>

13. DTraceQ即动态跟tDynamic TracingQ是一Ƒּ源YӞ能在UnixcMq_q行Q用戯够动态检操作系l内核和用户q程Q以更精地掌握pȝ的资源用状况,提高pȝ性能Q减支持成本,q进行有效的调节?/p>

14. IBM Rational PurifyPlusQ帮助开发h员查明C/C++、托?NET、Java和VB6代码中的性能和可靠性错误。PurifyPlus 内存错误和泄漏、应用程序性能描述、代码覆盖分析等功能l合在一个单一、完整的工具包中?/p>

15. Parasoft Insure++Q针对C/C++应用的运行时错误自动工P它能够自动监C/C++E序Q发现其中存在着的内存破坏、内存泄漏、指针错误和I/O{错误。ƈ通过使用一pd独特的技术(SCI技术和变异试{)Q彻底的查和试我们的代码,_定位错误的准位|ƈl出详细的诊断信息。能作ؓMicrosoft Visual C++的一个插件运行?/p>

16. Compuware DevPartner for Visual C++ BoundsChecker SuiteQؓC++开发者设计的q行错误和调试工具软g。作为Microsoft Visual Studio和C++ 6.0的一个插件运行?/p>

17. Electric Software GlowCodeQ包括内存泄漏检查,code profilerQ函数调用跟t等功能。给C++?Net开发者提供完整的错误诊断Q和q行时性能分析工具包?/p>

18. Compuware DevPartner Java EditionQ包含Java内存?代码覆盖率测?代码性能试,U程死锁,分布式应用等几大功能模块?/p>

19. Quest JProbeQ分析Java的内存泄漏?/p>

20. ej-technologies JProfilerQ一个全功能的Java剖析工具Q专用于分析J2SE和J2EE应用E序。它把CPU、执行A和内存的剖析l合在一个强大的应用中。JProfiler可提供许多IDE整合和应用服务器整合用途。JProfiler直觉式的GUI让你可以扑ֈ效能瓉、抓出内存泄漏、ƈ解决执行l的问题?.3.2注册码:A-G666#76114F-1olm9mv1i5uuly#0126

21. BEA JRockitQ用来诊断Java内存泄漏q指出根本原因,专门针对Intelq_q得C化,能在Intelg上获得最高的性能?/p>

22. SciTech Software AB .NET Memory ProfilerQ找到内存泄漏ƈ优化内存使用针对C#QVB.NetQ或其它.NetE序?/p>

23. YourKit .NET & Java ProfilerQ业界领先的Java?NETE序性能分析工具?/p>

24. AutomatedQA AQTimeQAutomatedQA的获奖品performance profiling和memory debugging工具集的下一代替换品,支持Microsoft, Borland, Intel, Compaq ?GNU~译器。可以ؓ.NET和WindowsE序生成全面l致的报告,从而帮助?zhn)L隔离q排除代码中含有的性能问题和内?资源泄露问题。支?Net 1.0,1.1,2.0,3.0和Windows 32/64位应用程序?/p>

25. JavaScript Memory Leak DetectorQ微软全球品开发欧z团?Global Product Development- Europe team, GPDE) 发布的一ƾ调试工P用来探测JavaScript代码中的内存泄漏Q运行ؓIEpd的一个插件?/p>

附录Q内存泄漏的发生方式

1.     常发性内存泄漏。发生内存泄漏的代码会被多次执行刎ͼ每次被执行的时候都会导致一块内存泄漏?/p>

2.     偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作q程下才会发生。常发性和偶发性是相对的。对于特定的环境Q偶发性的也许变成了常发性的。所以测试环境和试Ҏ(gu)Ҏ(gu)内存泄漏至关重要?/p>

3.     一ơ性内存泄漏。发生内存泄漏的代码只会被执行一ơ,或者由于算法上的缺PDM有一块且仅有一块内存发生泄漏?/p>

4.     ?式内存泄漏。程序在q行q程中不停的分配内存Q但是直到结束的时候才释放内存。严格的说这里ƈ没有发生内存泄漏Q因为最l程序释放了所有申L内存。但?对于一个服务器E序Q需要运行几天,几周甚至几个月,不及旉攑ֆ存也可能D最l耗尽pȝ的所有内存。所以,我们U这cd存泄漏ؓ隐式内存泄漏?/p>

什么是pȝ资源Q?/p>

当应用程序在Windows中运行时QWindows必须实时"跟踪"该应用程序的q行Qƈ保留与之相关的许多信息,如按钮、光标、菜单的位置和位图、窗口的状况{,q些信息由Windows保留在一U叫堆的内存块中Q堆的英文ؓHeap。简单地_堆是采用Ҏ(gu)机制理的内存块。由Windows的一个系l内核User.exe理的堆叫做User资源堆(User Resource HeapQ,由另一个系l内核Gdi.exe理的堆叫做GDI资源堆(Graphical Device Interface Resource HeapQ简UGDI Resource HeapQ,User资源堆和GDI资源堆合UCؓpȝ资源堆(System Resource HeapQ,习惯上就把它们叫做系l资源(System ResourceQ?/p>

  微YWindows的系l资源(堆)分ؓ五个堆,其中User资源堆ؓ三个Q而GDI资源堆ؓ两个?/p>

  三个User资源堆分别是Q?6位的用户堆(User HeapQ?4KBQ;32位的H口堆(Windows HeapQ?MBQ;32位的用户菜单堆(User Menu HeapQ?MBQ?/p>

  两个GDI资源堆分别是Q?6位的GDI堆(GDI HeapQ?4KBQ;32位的GDI堆(GDIQ?MBQ?/p>

  从这里的pȝ资源分类和大我们应该明白,不管CPU是P4q是486Q内存是8Mq是1GQ所有Windows的用户都拥有同样大小的系l资源(堆)Q用户不能自已增加或减少pȝ资源的大,q是由操作系l决定的Q与g档次没有M关系?/p>  Windows的User资源堆和GDI资源堆的可用QFreeQ空间称为可?User资源和可用GDI资源QWindows中以癑ֈ数表C它们,用户可以选择 "开?附g/pȝ工具/pȝ信息"Q来实时查看它们的大?nbsp;
Z(zhn)的安全Q请只打开来源可靠的网址


来自: http://hi.baidu.com/jrckkyy/blog/item/6947f42332ec80589922ed6d.html 



]]>
软g试宣言的诠?/title><link>http://www.aygfsteel.com/xiaomage234/archive/2013/03/14/396417.html</link><dc:creator>马?/dc:creator><author>马?/author><pubDate>Thu, 14 Mar 2013 02:26:00 GMT</pubDate><guid>http://www.aygfsteel.com/xiaomage234/archive/2013/03/14/396417.html</guid><wfw:comment>http://www.aygfsteel.com/xiaomage234/comments/396417.html</wfw:comment><comments>http://www.aygfsteel.com/xiaomage234/archive/2013/03/14/396417.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xiaomage234/comments/commentRss/396417.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xiaomage234/services/trackbacks/396417.html</trackback:ping><description><![CDATA[from:http://blog.csdn.net/kerryzhu/article/details/8299383<br /><br /><h2><span style="margin: 0px; padding: 0px; font-family: SimSun; font-size: 32px; font-weight: normal;">?/span><span style="margin: 0px; padding: 0px; font-family: SimSun; font-size: 14px; font-weight: normal;">2000q?/span><span style="margin: 0px; padding: 0px; font-family: SimSun; font-size: 14px; font-weight: normal;">开始从事Y件测试,逐渐形成自己的Y件测试思想Q而第一ơ比较清晰呈现自q试的思想?007q出版的《全EY件测试》,正如前言所叙:“从项目启动的W一天v到需求和设计的评审阶D,从后期的~陷修正C品维?#8212;—在整个Y件生命周期中Q开发h员和试人员愉快地合作、共同努力,Y件品的开发效率和质量推到一个新的高度?#8221;Q这些思想在测试管理工作的体现是让测试h员更早地融入目中,更主动、更密切C开发h员协作,与项目相兛_益者合作,保目按时按质地完成,卻I</span></h2><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><ul style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">试人员快地发现缺P目能早l束Q?/span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">试人员可能多地发现BugQ遗留在产品中的Bug׃少Q品的质量׃高Q?nbsp;</span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">试人员和自己(开发h员)的工作都是ؓ了相同的目标——按时、高质量地发布品; </span></li></ul><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">而此后和业界的测试h员、开发h员交更多,思考得更多Q在试上的思想更清晎ͼ于是?012q??日在新浪微博Q?a style="margin: 0px; padding: 0px; color: #336699; text-decoration: none;">http://weibo.com/1652927771/yArIqoCKW</a> Q上发表了自q个h软g试宣言Q?/span></p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;"><img src="http://img.my.csdn.net/uploads/201212/15/1355563470_2055.png" alt="" style="margin: 0px; padding: 0px; border: none;" /><br style="margin: 0px; padding: 0px;" /></span></p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">宣言发布后,得到不少|友的肯定。最l力的,要属@<span style="margin: 0px; padding: 0px; color: #262626;">Ҏ(gu)芝士牛蛙?/span><span style="margin: 0px; padding: 0px; color: #262626;">:</span><span style="margin: 0px; padding: 0px; color: #262626;">感觉ȝ的太CQ?/span><span style="margin: 0px; padding: 0px; color: #262626;">can</span><span style="margin: 0px; padding: 0px; color: #262626;">’</span><span style="margin: 0px; padding: 0px; color: #262626;">t agree more</span><span style="margin: 0px; padding: 0px; color: #262626;">了,最q在看《Y之》,很多观点都是异曲同工啊,虽说q单四句话Q但是每一句话展开去都能写一本书</span><span style="margin: 0px; padding: 0px; color: #262626;">。还有@</span><a style="margin: 0px; padding: 0px; color: #336699; text-decoration: none;"><span style="margin: 0px; padding: 0px; color: #54370d;">让测试飞h</span></a><span style="margin: 0px; padding: 0px; color: #262626;">Q?/span><span style="margin: 0px; padding: 0px; color: #262626;">又见右下八卦图亮炏V每当遇到左、右难以分辩时就惛_它,q以此ؓ基点Q偿试思考再q一步,思丝多而力争不乱。分割线不是直的哟,g体现开发中有测?</span>调试)Q测试中有开发,而又不完全符合对立统一?/span></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">当然Q也有不同声韻I例如Q@<a style="margin: 0px; padding: 0px; color: #336699; text-decoration: none;"><span style="margin: 0px; padding: 0px; color: #54370d;">胡争?/span></a><span style="margin: 0px; padding: 0px; color: #262626;">Q?/span><span style="margin: 0px; padding: 0px; color: #262626;">首先应当产品工程Q然后在产品工程中强调需求工E,其次在需求工E的基础上强调品质保证工E。脱ȝ产品工程的品质保证工E是无本之木Q无源之水?/span>q实际和我宣a没有关系Q这里丝毫没有否定品工E,也没有否定需求工E,实际W一?#8220;<span style="margin: 0px; padding: 0px; color: #262626;">更鼓׃先确定验证的标准q以此来驱动开?/span>”是需求的重要性。需求是软g开发的源泉Q而这里关注点?#8220;软g试”Q比较局限于试自n的内涵和试与开发的关系。如果拓展出去,我需要发表我?#8220;软g工程宣言”了?/span></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">q有其它有意义的补充Q?/span></p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><ul style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: SimSun;"> @</span><a title="E序员邹? style="margin: 0px; padding: 0px; color: #336699; text-decoration: none; font-family: SimSun;"><span style="margin: 0px; padding: 0px; color: black;">E序员邹?/span></a><span style="margin: 0px; padding: 0px; font-family: SimSun;">Q值得开发,试Q项目管理h员思考?认可内部试的重要? 但更重视产品对用L长期影响Q?/span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: SimSun;"> @</span><a style="margin: 0px; padding: 0px; color: #336699; text-decoration: none; font-family: SimSun;"><span style="margin: 0px; padding: 0px; color: black;">王立?/span><span style="margin: 0px; padding: 0px; color: black;">-WangLijie</span></a><span style="margin: 0px; padding: 0px; font-family: SimSun;">Q认可测试对质量的改善,但更提倡质量是內徏的;</span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: SimSun;"> ?/span><a style="margin: 0px; padding: 0px; color: #336699; text-decoration: none; font-family: SimSun;"><span style="margin: 0px; padding: 0px; color: black;">@Testin-Daiyibin</span></a><span style="margin: 0px; padding: 0px; font-family: SimSun;"> 讨论之后Q增加一条,卻I认可自动化测试的价|但更提倡测试分析和设计的创造性和pȝ性?/span></li></ul><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">那下面回归主题,我自己?strong style="margin: 0px; padding: 0px;"><u style="margin: 0px; padding: 0px;">软g试宣言</u></strong>Q逐条分别q行说明Qƈ要阐q如何将它们应用于实际的软g开发工作之中?/span></p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"> </p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: SimSun; color: #3333ff;">1. 认可试的h(hun)|但更鼓励事先定验证的标准ƈ以此来驱动开?nbsp;</span></strong></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;"><span style="margin: 0px; padding: 0px;">首先认识试的h(hun)|试是质量保证的重要手段之一Q正如在我的博客中所讨论?#8220;</span><a style="margin: 0px; padding: 0px; color: #336699; text-decoration: none;"><span style="margin: 0px; padding: 0px; color: #990000;">软g试I竟发挥什么作用?</span></a><span style="margin: 0px; padding: 0px;">”Q?/span></span></p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><ul style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">对品质量完成全面的评估Qؓ软g产品发布Q如验收试Q、Y件系l部|Ԍ如性能规划试Q、Y件品鉴定(W三方独立测试)委托方和被委托方U纷仲裁Q第三方独立试Q和其它决策提供信息Q?/span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">通过持箋的测试(包括需求评审、设计评审、代码评审等Q可以对产品质量提供持箋的、快速的反馈Q从而在整个开发过E中不断地、及时地改进产品的质量,q减各U返工,降低软g开发的成本Q?/span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">通过试发现所要交付品的~陷Q特别是可能地发现各种严重的缺P降低或消除品质量风险,提高客户的满意度Q扩大市Z额,提高客户的忠诚度?/span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">通过对缺陯行分析,扑և~陷发生的根本原因(软gq程中的问题Q包括错误的行ؓ方式Q或ȝY件品的~陷模式Q避免将来犯同样的错误或产生cM的品问题,辑ֈ~陷预防的目?/span></span></li></ul><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">所以Y件测试的价g容忽视,但是我们一直提?#8220;质量更是內徏的(Quality is built inQ?#8221;QY件品的质量是在需求分析、功能设计、系l设计、编E等q程中逐渐形成的,事先清楚客户的需求,明确软g产品的验收标准,Zq些需求和验收标准来开发,开发h员清楚自p实现的目标、清楚待实现pȝ的要求和限制Q在工作中能够第一ơ将事情做对Q或者说Q第一ơ将事情做对的可能性会显著提高Q在需求、设计、代码中引入的缺陷就会大大减。理解这一点ƈ不难Q如果还是不能很好理解,q看砖墙是如何砌成的?是先拉上水准U再墙砌Q还是墙砌好之后再拉U来?</span></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;"><img src="http://img.my.csdn.net/uploads/201212/15/1355563529_5489.png" alt="" style="margin: 0px; padding: 0px; border: none;" /><br style="margin: 0px; padding: 0px;" /></span></p><p align="center" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">而且Q对试人员_全生命周期的试依据也明了Q能够及时提供明的质量反馈Q测试与开发之间也不容易引L争议Q测试效率也会明显改善。本句宣a和验收测试驱动开发(Acceptance Test Driven Development, ATDDQ拥有共同的思想和内涵,无论是在传统研发程中还是在敏捷q程中,都可以尝试这样去做。虽然在某些目上需求不够清楚、或需求变化比较大Q但也不能成?#8220;自己懒于d分析需?#8221;的借口Q能明确60%的需求,也不能做?0%停下来了?否则Q无论是“q代”、还?#8220;重构”Q都?#8220;q工”化之后的代名词。难道企业希望自己团队常犯错误而不断修正吗Q?/span></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"> </p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: SimSun; color: #3333ff;">2. 认可专业试人员的不可替代的价|但更鼓励开发h员做好测?/span></strong></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">上一句已l回{了试的h(hun)|而这里是讨论试工作p来做Q测试有价|但不一定由专职的测试h员来做,正如一些公司(如facebookQ没有专职的试人员QY件品的研发也能正常开展。也许在某些初创的企业、特D商业模式的软g服务、某些移动终端的且免费的产品{可以不要专职的试人员Q但对大多数软g产品、Y件企业还是需要专业的试人员Q因为系l复杂、业务更复杂的原因,更可能是试本n更需要方法和技术。当我们不能单地掌握软g产品Q系l)的测试方法和技术,需要专业的试人员。即使在相对低端的制造业Q掌握其工作技能不是很难,但熟l工人的工作效率也是初操作工的几倍。而Y件测试所涉及的方法、技术与工具Q从功能试到性能试、安全性测试、兼Ҏ(gu)试、可达性测试到可靠性测试等Q从试计划、测试分析与设计到测试结果分析,从等L划分、判定表、因果图到基于模型的试、自动化试{,已Ş成一个庞大的体系Q没有专注,很难做得_,不能_N测试,又如何有良好的测试效率呢Q没有专业的试技能,试的风险也很大。这些内容,在我的另一博?#8220;</span><a style="margin: 0px; padding: 0px; color: #336699; text-decoration: none; font-family: SimSun;"><span style="margin: 0px; padding: 0px; color: #990000;">专业试团队会消亡还是新?/span></a><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">”q行了充分讨论。正如网友在本博客上q评Q?#8220;</span><span style="margin: 0px; padding: 0px; line-height: 20px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;"><span style="margin: 0px; padding: 0px; color: #ff0000;">如果没有专业的测试团?/span><span style="margin: 0px; padding: 0px;">Q那么天上的飞机一定会无缘无故地掉下来QICU里面的心늛护A|工也不会是新闻Q核Ҏ(gu)接收到真正的发射命o而自行启动也不是没有可能Q?/span><span style="margin: 0px; padding: 0px; color: #ff0000;">q个世界不再是安全的世?/span><span style="margin: 0px; padding: 0px;">?/span></span></span><span style="margin: 0px; padding: 0px; font-family: SimSun;">”</span></span></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">Z么更鼓励开发h员做好测试呢Q这是因为:</span></p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><ul style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">单元试是基Q没有单元的质量Q如何有pȝ的质量?而单元测试主要是在代码层ơ上展开Q而且和编E交l在一P~程和单元测试难以分开处理Q所以单元测试最好由开发h员来做,保良好的工作效率与工作质量Q?/span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">如果开发了一个测试工P先让开发h员用h好,q是只让试人员用?无论是功能测试工兯是性能试、安全性测试工P都可以让开发h员先用,试的效率会更高。一Ҏ(gu)建、一辚w证,更能及时发现问题Q能更快调试和修正问题,问题消除在萌芽之中。这也就是ؓ什么我们一直提倡持l构建、持l测试;</span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">如果开发h员做更多试Q就更能认识到自q问题Q了解问题生的原因Q将来在设计、编E中更好地避免同样问题的发生Q预防缺h果更好?/span></span></li></ul><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">q里鼓励开发h员做的测试,主要集中在单元测试(功能、性能斚w的测试)、集成测试等斚w。而系l的试、用户需求的q一步验证和认、大规模的性能试、兼Ҏ(gu)测试、安全性测试等则有专业的测试h员完成?/p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"> </p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: SimSun; color: #3333ff;">3. 认可试计划的h(hun)|但更计划是一个基于风险不断调整的q程</span></strong></span></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">q点比较Ҏ(gu)理解Q做一件事Q如果没有计划就比较盲目Q失败的可能性就很大。测试计划目的就是明测试的目标、测试的需求(包括试范围、测试Q务优先{)、测试风险、测试资源和q度安排{,但同旉求会发生变更、开发的设计与代码质量超出我们的预料、测试工作量估算不以及其它新的试风险{各U因素的影响Q我们可能需要不断调整测试计划,以适应新的试需求等。计划重要,但不是一成不变的Q也是我们Q?/span></p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><ul style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">试计划不能停留在文档上面,它是Ҏ(gu)试过E的规划与指|使测试工作开展得更顺利、更有效Q?/span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">试计划不是一个文档,而是一个计划的q程Q适时调整以及时满项目新的需求;</span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">Ҏ(gu)试计划的调整也是学习的过E,有利于将来(Z一个项目)制定出更可靠的测试计划?/span></span></li></ul><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"> </p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: SimSun; color: #3333ff;">4. 认可探烦式测试的价|但更希望试是具有系l方法的、相对规范的q程</span></strong></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">我们都知道,试不能I尽Q测试不能做到百分之百,L有不能测到的地方QL有缺陷遗留下来,q就l我们留下了_的探索空间。探索式试QExploratory TestingQETQ的出现正是因ؓ在Y件系l中存在许多未知的东襉K以得到快速、简单的验证Q需要我们{变思\Q不要以固定的模式来完成试Q而是要换一U新的模式来q行试Q以提高试效率。因为需求不清楚、时间紧{各U原因,探烦式测试才更有效,在一定程度上是因Y件开发本w的问题Q所以,我也戏称“敏捷开?#8221;?#8220;探烦式开?#8221;。从q个意义上讲Q探索式试Ҏ(gu)是不得已而ؓ之的一U方式。在传统行业Q没有看CU?#8220;探烦式检?#8221;Q除了食品安全检验,在我国还不够成熟Q可能会采用探烦式检验,哈哈Q,而是有明的技术规|有相应的A器或Ҏ(gu)q行验,可以明确地给出检查结果?/span></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;"><strong style="margin: 0px; padding: 0px;"><u style="margin: 0px; padding: 0px;">探烦式测?/u></strong>作ؓ明确的术语或概念Q最早是由测试专家CemKaner博士?983q提出的Q距今天差不多有30q_但绝大多数测试h只是最q几q才听到或熟知这个概c说明其价值是有限的,如果价值很高,也不至于我们现在才比较关注的。但最q几q?strong style="margin: 0px; padding: 0px;"><u style="margin: 0px; padding: 0px;">探烦式测?/u></strong>很热Qؓ什么?</span></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">一斚w要感谢James A. Whittaker撰写的?a style="margin: 0px; padding: 0px; color: #336699; text-decoration: none;"><span style="margin: 0px; padding: 0px; color: black;">ExploratorySoftware Testing</span></a>》一书,比较全面Cl了探烦式Y件测试(国内?010q引q本书的Q但也有不Q我在ؓ史亮和高写的《探索式试实践之\》的序中谈到q一点)Q对推广探烦式测试有很大的促q作用。另斚wQ在互联|时代,需求衍变越来越快;软g已经成ؓ一U服务(SaaSQ,q代周期来频J。敏h法开始流行,被Y件企业广泛采用,敏捷试随之而生Q正是探索式试用武之时。而且探烦式测试的给Z些新鲜的感觉Q将试工作变成更有的探烦式活动,在n受工作的同时完成试Q容易受到测试工E师的欢q?/span></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">探烦式测试也在不断发展,Z试图帮助它徏立一套方法体p,例如James Bach提出的基于会话的试理(Session Based Test Management,U?SBTM)。该理Ҏ(gu)测试Q务分解成一pd会话(SessionsQ发生在特定旉盒内的会话活动,对Y件系l的试是看成不断地问pȝ的过E,从系l那里获得答案,探烦式测试的会话特征更ؓ明显),试人员在会话过E中完成一个特定测试Q务的设计、执行和记录?/span></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">但从探烦式测试的“探烦”概念本n来看Q还是强?#8220;设计与执?#8221;同时发生的特Ҏ(gu)看,探烦式测试更多强调h的创造性,随Y件功能的使用对其理解不断深入来发现问题,更强调这U上下文驱动的思维模式Q而对验收的标准、验证的具体指标~ZxQ更谈不上测试需求的分析、测试的pȝ设计Q在pȝ性和规范性方面有很大的欠~,所以难以得到国际标准的支持Q在多数软g产品的测试工作中探烦式测试只能v着辅助、补充的作用?/span></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">M严重的缺L遗漏可能l公司带来不可估量的损失QY件测试更注重对Y件质量的全面评估Q最大程度地减少软g产品的质量风险,从这个意义看Q测试目标、测试需求、测试风险等都是非常重要的,需要认真分析,然后在此基础上进行系l的试设计。测试的l果需要严格的覆盖率衡量,而要保高覆盖率Q需要事先进行精心的设计Q从业务程、数据流E、用户场景等各个斚wq行l致分析Q采用合适的试Ҏ(gu)设计出相应的试用例来覆盖流E\径、数据输入空间以及各U品用的场景。事先能从需求覆盖出发来设计试用例Q事后还可以从代码覆盖来验测试的效果。当Ӟ更理想的方式是用Z模型的测试或形式化方法来验证pȝ的需求,l出更客观的、更准确的质量评伎ͼ我们对品的发布?yu)更有信心,客户p得到高质量的产品或服务?/span></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"> </p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: SimSun; color: #3333ff;">5. 认可发现~陷的h(hun)|但更重视对Y件品质量的全面评估与持l反?/span></strong></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">发现一个缺陷ƈ得到修正Q品的质量减一份风险;在当前品中发现的缺陯多,p更多地消除品的质量风险Q这是Y件测试h(hun)g一个方面的体现。但我们不能有这L思想Q测试h员发现的~陷多Q测试h员的价D大。例如,我们不能一直等开发h员把设计、代码都工作全部完成之后Q我们再来发现问题,以体现测试的价倹{我们更不能明明看着开发h员犯错误、或者明明知道开发h员可能会在某些地方犯错误Q我们也不给予提醒、不l予帮助Q而是{到他们做完工作Q我们再把问题发现出来,以体现我们的价倹{?/span></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">正确的做法则是及时提供有兌量的反馈Q可能是一U质量风险的提示Q也可能是一U质量担心的倾诉Q更可能是一U有兌量改q的、积极的。例如:</span></p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><ul style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">在需求分析时Q发现需求不够清晎ͼ发现可能l开发、测试带来困惑的地方Q都要及时指出来Qƈ帮助U正?/span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">如果发现文档中新增加的功能没有多大意义,或者是自己难以看清楚其功能对客L价|pd和品经理沟通,拿掉q个功能Q或让品经理解释清楚、说服自己?/span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">如果觉得开发Q务安排不合理Q或觉得开发之前的讨论、培训不够,对业务理解还很肤,p及时和开发沟通,帮忙消除q种潜在的质量风险;</span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">如果发现开发不重视单元试、或者单元测试做得很,p协助开发做好单元测试,提供单元试指导Q提供单元测试框Ӟ提供一切可以帮助开发改善单元测试的服务?/span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">如果发现个别的开发工E师不遵守编E规范,p启动质量反馈机制…</span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: SimSun;"> … …</span></li></ul><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="margin: 0px; padding: 0px; font-family: SimSun;">q意味着Q?/span></p><p align="left" style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><ul style="margin: 0px; padding: 0px; color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">试工作不是软g开发生命周期的某个环境、某个阶D|的工作Q而是贯穿整个软g软g开发生命周期,试人员无时无刻不在x质量Q?/span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">试人员不仅仅要x已经存在的品缺L问题Q还要关注可能导致缺陷发生的问题Q尽量帮助品需求h员、设计h员、编Eh员预防质量问题的发生?/span></span></li><li style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: KaiTi_GB2312;">试不仅仅是试人员的工作,而且和Y件开发的其他团队Qh员)有关p;试工作不是试团队内部的事Q而是整个开发团队的事?/span></span></li></ul><img src ="http://www.aygfsteel.com/xiaomage234/aggbug/396417.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xiaomage234/" target="_blank">马?/a> 2013-03-14 10:26 <a href="http://www.aygfsteel.com/xiaomage234/archive/2013/03/14/396417.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript(js) 单元试工具 -- JsUnit(转蝲)http://www.aygfsteel.com/xiaomage234/archive/2013/02/01/395013.html马?/dc:creator>马?/author>Fri, 01 Feb 2013 03:24:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2013/02/01/395013.htmlhttp://www.aygfsteel.com/xiaomage234/comments/395013.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2013/02/01/395013.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/395013.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/395013.htmlJsunit 是 Junit 的javascript 版本Q下载ƈ解压Jsunit zipQ大部分的核心文仉?jsunit/app 目录下,
两个最基本的文Ӟ
. jsUnitCore.js -- 每个试文g都要引用?/span>
. testRunner.html -- 用来q行具体的jsunit 试

(1) h例子Q?/span>
在Jsunit解压后的同目录下徏立两个文Ӟ目录l构Q?/span>
|-- jsunit
|-- simple.js
|-- simple_test.html

写完后运?jsunit/testRunner.htmlQ在面中选择simple_test.html, 点击runQ可以看到测试结果信息?/span>

// simple.js 被测试的javascript文g
function addTwoNumbers(value1, value2){
    return parseInt(value1) + parseInt(value2);
}

// simple_test.html 试文g
<!DOCTYPE HTML PUBLIC 
"-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script language="JavaScript" 
src="jsunit/app/jsUnitCore.js"></script>
<script language="JavaScript" 
src="simple.js"></script>
<script language="JavaScript">
function testValidArgs()
{
    assertEquals("2 + 2 is 4", 
    4, addTwoNumbers(2, 2));
}
function testWithNegativeNumbers()
{
    assertEquals("-2 + -2 is -4", 
    -4, addTwoNumbers(-2, -2));
}
function exposeTestFunctionNames()
{
    var tests = new Array(2);
    tests[0] = "testValidArgs";
    tests[1] = "testWithNegativeNumbers";
    return tests;
}
</script>
</HEAD>

<BODY>
test page for addTwoNumbers(value1, value2);
</BODY>
</HTML>

通常?test"开头的试函数会被自动发现Q但如果没有发现Q就需要我们用exposeTestFunctionNames 函数来显C指定测试函数?/span>

(2) setUpPage()

jsunit 包含了一ơ性启动方法,setUpPage() 只对每个试调用一ơ,卛_所有测试函数调用之前调用,适于做预处理Q但要注意在setUpPage()最后一行要?setUpPageStatus 变量讄?“complete”, 如:

var arg1;
var arg2;

function setUpPage(){
    arg1 = 2;
    arg2 = 2;
    setUpPageStatus = "complete";
}

(3) 试?/span>

试集把不同的测试页分组l织Q其中包含测试页或其他测试集Q他们会按照序执行?/span>
注意点:
. 试集中不能包含M试函数
. 必须包含一个返?jsUnitTestSuite 对象?suite 函数
. 有两个方法添加测试页QaddTestPage(testPage) addTestSuite(testSuite), 在添加测试页时要注意路径Q应是相对于testRunner.html ?/span>

例子Q?/span>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script language="JavaScript" 
src="jsunit/app/jsUnitCore.js"></script>
<script language="JavaScript" 
src="simple.js"></script>
<script language="JavaScript">
function sampleSuite()
{
var sampleSuite = new top.jsUnitTestSuite();
sampleSuite.addTestPage("../simple_test.html");
return sampleSuite;
}
function suite()
{
var testSuite = new top.jsUnitTestSuite();
testSuite.addTestSuite(sampleSuite());
testSuite.addTestPage("../simple_test.html");
return testSuite;
}
</script>
</HEAD>

<BODY>
</BODY>
</HTML>

(4) 日志和跟t?/span>

q行testRunner.html时会发现他有 Trace level ,用于现实我们在测试方法中的日志信息,包含3个函敎ͼ
warn(message, [value])
inform(message, [value])
debug(message, [value])

原文出处Qhttp://www.zhuoda.org/irini/83098.html
JsUnit下蝲地址Qhttp://sourceforge.net/projects/jsunit/

]]>
JS试工具 Google JS Testhttp://www.aygfsteel.com/xiaomage234/archive/2013/02/01/395014.html马?/dc:creator>马?/author>Fri, 01 Feb 2013 03:24:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2013/02/01/395014.htmlhttp://www.aygfsteel.com/xiaomage234/comments/395014.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2013/02/01/395014.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/395014.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/395014.html阅读全文

]]>
PHPUnit和Seleniumhttp://www.aygfsteel.com/xiaomage234/archive/2011/05/25/350990.html马?/dc:creator>马?/author>Wed, 25 May 2011 04:14:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2011/05/25/350990.htmlhttp://www.aygfsteel.com/xiaomage234/comments/350990.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2011/05/25/350990.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/350990.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/350990.html

Selenium RC

Selenium RC是一ƾ测试工P允许你ؓweb应用~写自动化的用户接口试Q支持Q何程序设计语a、Q何HTTP站点以及ML览器。它使用Selenium CoreQ这是个利用JavaScript执行自动览器Q务的库。Selenium试直接q行于浏览器中,像真实做的那样。这些测试既可用?em>验收试Q通过在集成系l上执行更高U的试而不是只独立地测试系l的各个单元Q,又可用于览器兼Ҏ(gu)测?/em>Q通过试不同操作pȝ和浏览器上的web应用Q?/p>

我看看下Selenium RC是如何安装的Q?/p>

  1. 下蝲一?a target="_top" style="text-decoration: underline; color: #0044b6; ">Selenium RC分发包存档?/li>
  2. 分发包存档ƈ拯server/selenium-server.jar?code>/usr/local/binQ例如)?/li>
  3. 通过q行java -jar /usr/local/bin/selenium-server.jar启动Selenium RC服务器?/li>

现在我们可以利用它的客户/服务器协议向Selenium RC服务器发送命令了?/p>

PHPUnit_Extensions_SeleniumTestCase

PHPUnit_Extensions_SeleniumTestCase试用例扩展同Selenium RC通话的客?服务器协议实Cؓ专门用于web试的断aҎ(gu)?/p>

范例 19.1昄如何试http://www.example.com/站点?code><title>元素的内宏V?/p>

范例 19.1: PHPUnit_Extensions_SeleniumTestCase使用举例

<?php
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
 
class WebTest extends PHPUnit_Extensions_SeleniumTestCase
{
    protected function setUp()
    {
        $this->setBrowser('*firefox /usr/lib/firefox/firefox-bin');
        $this->setBrowserUrl('http://www.example.com/');
    }
 
    public function testTitle()
    {
        $this->open('http://www.example.com/');
        $this->assertTitleEquals('Example Web Page');
    }
}
?>

不同?code>PHPUnit_Framework_TestCasec,扩展?code>PHPUnit_Extensions_SeleniumTestCase的测试用例类必须提供setUp()Ҏ(gu)。该Ҏ(gu)用于配置Selenium RC会话。可用于此的Ҏ(gu)列表?a href="file:///F:/data2/PHPUnit_Pocket_Guide_-_v32/index_cn.html#selenium.seleniumtestcase.tables.seleniumrc-api.setup" title="Table 19.1. Selenium RC API: Setup" style="text-decoration: underline; color: #0044b6; ">?19.1?/p>

?19.1. Selenium RC APIQ装?/strong>

Ҏ(gu)含义
void setBrowser(string $browser)Selenium RC服务器用的览器?/td>
void setBrowserUrl(string $browserUrl)讄用于试的基址URL?/td>
void setHost(string $host)讄q接到Selenium RC服务器的L名?/td>
void setPort(int $port)讄q接到Selenium RC服务器的端口受?/td>
void setTimeout(int $timeout)讄q接到Selenium RC服务器的时旉?/td>
void setSleep(int $seconds)讄Selenium RC客户端向Selenium RC服务器发送动作指令之间睡眠的U数?/td>

你也可以使用一l浏览器q行每一个测试:在你的测试用例类中声明一个名?code>$browsers?code>public static数组代替使用setBrowser()讄一个浏览器。该数组中的每一w描述一个浏览器配置。这些浏览器中的每一个都能被不同的Selenium RC服务器接待:

范例 19.2: 讄多浏览器配置

<?php
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
 
class WebTest extends PHPUnit_Extensions_SeleniumTestCase
{
    public static $browsers = array(
      array(
        'name'    => 'Firefox on Linux',
        'browser' => '*firefox /usr/lib/firefox/firefox-bin',
        'host'    => 'my.linux.box',
        'port'    => 4444,
        'timeout' => 30000,
      ),
      array(
        'name'    => 'Safari on MacOS X',
        'browser' => '*safari',
        'host'    => 'my.macosx.box',
        'port'    => 4444,
        'timeout' => 30000,
      ),
      array(
        'name'    => 'Safari on Windows XP',
        'browser' => '*custom C:\Program Files\Safari\Safari.exe -url',
        'host'    => 'my.windowsxp.box',
        'port'    => 4444,
        'timeout' => 30000,
      ),
      array(
        'name'    => 'Internet Explorer on Windows XP',
        'browser' => '*iexplore',
        'host'    => 'my.windowsxp.box',
        'port'    => 4444,
        'timeout' => 30000,
      )
    );
 
    protected function setUp()
    {
        $this->setBrowserUrl('http://www.example.com/');
    }
 
    public function testTitle()
    {
        $this->open('http://www.example.com/');
        $this->assertTitleEquals('Example Web Page');
    }
}
?>

PHPUnit_Extensions_SeleniumTestCase能够攉试l由Seleniumq行时的代码覆盖率信息:

  1. PHPUnit/Extensions/SeleniumTestCase/phpunit_coverage.phpC的web服务器的文g根目录中?/li>
  2. 在你的web服务器的php.ini配置文g中,配置PHPUnit/Extensions/SeleniumTestCase/prepend.php?code>PHPUnit/Extensions/SeleniumTestCase/append.php分别作ؓauto_prepend_file?code>auto_append_file?/li>
  3. 在你的扩展了PHPUnit_Extensions_SeleniumTestCase的测试用例类中,使用
    protected $coverageScriptUrl = 'http://host/phpunit_coverage.php';
    配置用于phpunit_coverage.php脚本的URL?/li>

?19.2列出PHPUnit_Extensions_SeleniumTestCase提供的各U断aҎ(gu)?/p>

?19.2. 断言

断言含义
void assertAlertPresent()如果不存在警告(对话框)则报错?/td>
void assertNoAlertPresent()如果存在警告Q对话框Q则报错?/td>
void assertChecked(string $locator)如果$locator标识的元素未选中则报错?/td>
void assertNotChecked(string $locator)如果$locator标识的元素被选中则报错?/td>
void assertConfirmationPresent()如果不存在确认(对话框)则报错?/td>
void assertNoConfirmationPresent()如果存在认Q对话框Q则报错?/td>
void assertEditable(string $locator)如果$locator标识的元素不可编辑则报错?/td>
void assertNotEditable(string $locator)如果$locator标识的元素可~辑则报错?/td>
void assertElementValueEquals(string $locator, string $text)如果$locator标识的元素的g{于l定?code>$text则报错?/td>
void assertElementValueNotEquals(string $locator, string $text)如果$locator标识的元素的值等于给定的$text则报错?/td>
void assertElementContainsText(string $locator, string $text)如果$locator标识的元素不含给定的$text则报错?/td>
void assertElementNotContainsText(string $locator, string $text)如果$locator标识的元素包含给定的$text则报错?/td>
void assertElementPresent(string $locator)如果$locator标识的元素不存在则报错?/td>
void assertElementNotPresent(string $locator)如果$locator标识的元素存在则报错?/td>
void assertLocationEquals(string $location)如果当前位置QlocationQ不{于l定?code>$location则报错?/td>
void assertLocationNotEquals(string $location)如果当前位置QlocationQ等于给定的$location则报错?/td>
void assertPromptPresent()如果不存在提C(对话框)则报错?/td>
void assertNoPromptPresent()如果存在提示Q对话框Q则报错?/td>
void assertSelectHasOption(string $selectLocator, string $option)如果l定的选项不可用则报错?/td>
void assertSelectNotHasOption(string $selectLocator, string $option)如果l定的选项可用则报错?/td>
void assertSelected($selectLocator, $option)如果l定的标{未选中则报错?/td>
void assertNotSelected($selectLocator, $option)如果l定的标{被选中则报错?/td>
void assertIsSelected(string $selectLocator, string $value)如果l定的值未选中则报错?/td>
void assertIsNotSelected(string $selectLocator, string $value)如果l定的D选中则报错?/td>
void assertSomethingSelected(string $selectLocator)如果$selectLocator标识的选项未选中则报错?/td>
void assertNothingSelected(string $selectLocator)如果$selectLocator标识的选项被选中则报错?/td>
void assertTextPresent(string $pattern)如果l定?code>$pattern不存在则报错?/td>
void assertTextNotPresent(string $pattern)如果l定?code>$pattern存在则报错?/td>
void assertTitleEquals(string $title)如果当前标题不等于给定的$title则报错?/td>
void assertTitleNotEquals(string $title)如果当前标题{于l定?code>$title则报错?/td>
void assertVisible(string $locator)如果$locator标识的元素不可见则报错?/td>
void assertNotVisible(string $locator)如果$locator标识的元素可见则报错?/td>

?19.3PHPUnit_Extensions_SeleniumTestCase的两个模板方法:

?19.3. 模板Ҏ(gu)

Ҏ(gu)含义
void defaultAssertions()重写以执行一个测试用例中的所有测试共享的断言。该Ҏ(gu)在发送给Selenium RC服务器的每个命o之后被调用?/td>
void sharedAssertions()重写以执行一个测试用例中的所有测试共享的断言。该Ҏ(gu)在一个测试执行结束之前被调用?/td>

h?a target="_top" style="text-decoration: underline; color: #0044b6; ">Selenium Core的文?/a>获得关于可用的命令以及如何用的参考?/p>

利用runSelenese($filename)Ҏ(gu)Q你也能从它的Selenese/HTML规范q行一个Selenium试。此外,利用静态属?code>$seleneseDirectoryQ你能从一个包含Selenese/HTML文g的目录自动地创徏试对象。指定的目录被递归地搜索预期包含Selenese/HTML?code>.htm文g?nbsp;范例 19.3昄一个例子?/p>

范例 19.3: 使用Selenese/HTML文g的目录作为测?/strong>

<?php
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
 
class SeleneseTests extends PHPUnit_Extensions_SeleniumTestCase
{
    public static $seleneseDirectory = '/path/to/files';
}
?>


]]>
Web服务器性能/压力试工具http_load、webbench、ab、Siege使用教程[转]http://www.aygfsteel.com/xiaomage234/archive/2010/07/22/326850.html马?/dc:creator>马?/author>Thu, 22 Jul 2010 09:00:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2010/07/22/326850.htmlhttp://www.aygfsteel.com/xiaomage234/comments/326850.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2010/07/22/326850.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/326850.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/326850.html

一、http_load

E序非常,解压后也不到100K

http_load以ƈ行复用的方式q行Q用以测试web服务器的吞吐量与负蝲。但是它不同于大多数压力试?/p>

P它可以以一个单一的进E运行,一般不会把客户机搞歅R还可以试HTTPScȝ|站h?/p>

下蝲地址Q?a >http://soft.vpser.net/test/http_load/http_load-12mar2006.tar.gz
安装很简?br /> #tar zxvf http_load-12mar2006.tar.gz
#cd http_load-12mar2006
#make && make install

命o格式Qhttp_load  -p q发讉Kq程?nbsp; -s 讉K旉  需要访问的URL文g

参数其实可以自由l合Q参C间的选择q没有什么限制。比如你写成http_load -parallel 5 -seconds

300 urls.txt也是可以的。我们把参数l大家简单说明一下?br /> -parallel ?p Q含义是q发的用戯E数?br /> -fetches ?f Q含义是总计的访问次?br /> -rate    ?p Q含义是每秒的访问频?br /> -seconds?s Q含义是总计的访问时?/p>

准备URL文gQurllist.txtQ文件格式是每行一个URLQURL最好超q?0Q?00个测试效果比较好.文g格式

如下Q?br /> http://www.vpser.net/uncategorized/choose-vps.html
http://www.vpser.net/vps-cp/hypervm-tutorial.html
http://www.vpser.net/coupons/diavps-april-coupons.html
http://www.vpser.net/security/vps-backup-web-mysql.html
例如Q?/p>

http_load -p 30 -s 60  urllist.txt
参数了解了,我们来看q行一条命令来看看它的q回l果
命oQ? ./http_load -rate 5 -seconds 10 urls说明执行了一个持l时?0U的试Q每U的频率??/p>

49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds5916 mean bytes/connection4.89274

fetches/sec, 28945.5 bytes/secmsecs/connect: 28.8932 mean, 44.243 max, 24.488 minmsecs/first

-response: 63.5362 mean, 81.624 max, 57.803 minHTTP response codes: code 200 ?49 

l果分析Q?br /> 1Q?9 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
说明在上面的试中运行了49个请求,最大的q发q程数是2Q总计传输的数据是289884bytesQ运行的旉?0.0148U?br /> 2Q?916 mean bytes/connection说明每一q接q_传输的数据量289884/49=5916
3Q?.89274 fetches/sec, 28945.5 bytes/sec
说明每秒的响应请求ؓ4.89274Q每U传递的数据?8945.5 bytes/sec
4Qmsecs/connect: 28.8932 mean, 44.243 max, 24.488 min说明每连接的q_响应旉?8.8932 msecs

Q最大的响应旉44.243 msecsQ最的响应旉24.488 msecs
5Qmsecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
6、HTTP response codes: code 200 ?49     说明打开响应面的类型,如果403的类型过多,那可?/p>

要注意是否系l遇C瓉?br /> Ҏ(gu)说明Q?br /> 试l果中主要的指标?fetches/sec、msecs/connect q个选项Q即服务器每U能够响应的查询ơ数Q?/p>

用这个指标来衡量性能。似乎比 apache的ab准确率要高一些,也更有说服力一些?br /> Qpt-每秒响应用户数和response timeQ每q接响应用户旉?br /> 试的结果主要也是看q两个倹{当然仅有这两个指标q不能完成对性能的分析,我们q需要对服务器的

cpu、menq行分析Q才能得出结?/p>

 

二、webbench

webbench是Linux下的一个网站压力测试工P最多可以模?万个q发q接L试网站的负蝲能力。下载地址可以到google搜,我这里给Z?br /> 下蝲地址Q?a >http://soft.vpser.net/test/webbench/webbench-1.5.tar.gz
q个E序更小Q解压后不到50KQ呵?br /> 安装非常?br /> #tar zxvf webbench-1.5.tar.gz
#cd webbench-1.5
#make && make install
会在当前目录生成webbench可执行文Ӟ直接可以使用?/p>

用法Q?/p>

webbench -c q发?-t q行试旉 URL
如:
webbench -c 5000 -t 120 http://www.vpser.net

三、ab
ab是apache自带的一Ƒ֊能强大的试工具
安装了apache一般就自带了,
用法可以查看它的说明

$ ./ab
./ab: wrong number of arguments
Usage: ./ab [options] [http://]hostname[:port]/path
Options are:
-n requests Number of requests to perform
-c concurrency Number of multiple requests to make
-t timelimit Seconds to max. wait for responses
-p postfile File containing data to POST
-T content-type Content-type header for POSTing
-v verbosity How much troubleshooting info to print
-w Print out results in HTML tables
-i Use HEAD instead of GET
-x attributes String to insert as table attributes
-y attributes String to insert as tr attributes
-z attributes String to insert as td or th attributes
-C attribute Add cookie, eg. ‘Apache=1234. (repeatable)
-H attribute Add Arbitrary header line, eg. ‘Accept-Encoding: gzip’
Inserted after all normal header lines. (repeatable)
-A attribute Add Basic WWW Authentication, the attributes
are a colon separated username and password.
-P attribute Add Basic Proxy Authentication, the attributes
are a colon separated username and password.
-X proxy:port Proxyserver and port number to use
-V Print version number and exit
-k Use HTTP KeepAlive feature
-d Do not show percentiles served table.
-S Do not show confidence estimators and warnings.
-g filename Output collected data to gnuplot format file.
-e filename Output CSV file with percentages served
-h Display usage information (this message)
参数众多Q一般我们用到的?n ?c
例如Q?br /> ./ab -c 1000 -n 100 http://www.vpser.net/index.php

q个表示同时处理1000个请求ƈq行100ơindex.php文g.
四、Siege
一Ƒּ源的压力试工具Q可以根据配|对一个WEB站点q行多用Lq发讉KQ记录每个用h有请求过E的相应旉Qƈ在一定数量的q发讉K下重复进行?br /> 官方Q?a >http://www.joedog.org/
Siege下蝲Q?a >http://soft.vpser.net/test/siege/siege-2.67.tar.gz
解压Q?br /> # tar -zxf siege-2.67.tar.gz
q入解压目录Q?br /> # cd siege-2.67/
安装Q?br /> #./configure ; make
#make install

使用
siege -c 200 -r 10 -f example.url
-c是ƈ发量Q?r是重复次数?url文g是一个文本,每行都是一个urlQ它会从里面随机讉K的?/p>

example.url内容:

http://www.licess.cn
http://www.vpser.net
http://soft.vpser.net

l果说明
Lifting the server siege… done.
Transactions: 3419263 hits //完成419263ơ处?br /> Availability: 100.00 % //100.00 % 成功?br /> Elapsed time: 5999.69 secs //d用时
Data transferred: 84273.91 MB //共数据传?4273.91 MB
Response time: 0.37 secs //相应用时1.65U:昄|络q接的速度
Transaction rate: 569.91 trans/sec //均每U完?569.91 ơ处理:表示服务器后
Throughput: 14.05 MB/sec //q_每秒传送数?br /> Concurrency: 213.42 //实际最高ƈ发数
Successful transactions: 2564081 //成功处理ơ数
Failed transactions: 11 //p|处理ơ数
Longest transaction: 29.04 //每次传输所花最长时?br /> Shortest transaction: 0.00 //每次传输所花最短时?/p>



]]>
Bugzilla安装http://www.aygfsteel.com/xiaomage234/archive/2008/08/14/221950.html马?/dc:creator>马?/author>Thu, 14 Aug 2008 04:30:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2008/08/14/221950.htmlhttp://www.aygfsteel.com/xiaomage234/comments/221950.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2008/08/14/221950.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/221950.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/221950.html 准备Q下载MysqlQBugzillaQApache

安装Q?br /> 1、Mysql安装
  我是到Mysql官方|站下蝲For Suse的rpm包(下蝲了所有的rpm包,本来只安装了server包,不过最后因为缺包而中断安装)?br />   安装所有的Mysql包:
  #rpm -ivh Mysql-*

  最后就是对数据库进行设|:
  #mysql
    mysql>create database bugs;
    mysql>GRANT SELECT, INSERT,UPDATE, DELETE, INDEX, ALTER,CREATE,LOCK TABLES,CREATE TEMPORARY TABLES, DROP, REFERENCES ON bugs.* TO bugs@localhost IDENTIFIED BY 'bugs';
    mysql>FLUSH PRIVILEGES;
    mysql>quit

  q样徏了一个bugs?一个用户名为bugsQ密码的Mysql用户?br />
2、安装Apache
  到Apache官方|站下蝲源代码?br />   #./configure
  #make
  #make install

安装完毕?br /> 启动Apache
  #./apachectl start
不过q里是用root来启动的Q如果切换到其它用户启动׃抛出错误Q说没有权限Q在|上找了些资料,但最l也未能完全解决?br />
3、安装Bugzilla
  到官方网站下载Bugzilla
  #tar zxvf bugzilla-2.22-...
  #cd bugzilla-2.22-...
  #./checksetup.pl
  q样׃出来Perl需要安装的模块。然后根据列出的提示信息下蝲安装Perl模块。(q个比较方便的)而且只需要安装那些必要的模块可以了?br />   ?br />   #./checksetup.pl能正常执行完毕时Q在当前目录下就会生成一个文Ӟlocalconfig
  然后Q需要修改localconfig文gQ这样就可以对Bugzilla的设|进行修攏V?br /> 在这里你可以Ҏ(gu)据库表名Q用户名和密码进行配|?br />   修改好之后再ơ运行:
  #./checksetup.pl
  如果正常则表C安装成?br />
4、配|Apache
  配置Apache是一个比较郁L事情Q因Z前都没有好好地接触过Apache?br /> 如果熟?zhn)Apache的配|文件就很容易了?br />   下面l出一些有用的配置Q?br /> 配置文g可能是apache2.conf和httpd.conf
扑ֈ文gQ然后做以下操作Q?br /> 扑ֈ
AddHandler cgi-script .cgi
把注释去?br /> d以下配置
Alias /bugzilla/ "/usr/local/apache2/cgi-bin/bugzilla/"
<Directory "/usr/local/apache2/cgi-bin/bugzilla/">
   AddHandler cgi-script .cgi
   Options +Indexes +ExecCGI
   DirectoryIndex index.cgi
   AllowOverride Limit
</Directory>

基本上这样安装就完全l束了?br />
然后重启apache
最后就可以讉K?br />

]]>
每日构造与冒烟试http://www.aygfsteel.com/xiaomage234/archive/2008/08/11/221339.html马?/dc:creator>马?/author>Mon, 11 Aug 2008 09:12:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2008/08/11/221339.htmlhttp://www.aygfsteel.com/xiaomage234/comments/221339.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2008/08/11/221339.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/221339.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/221339.html如果你想创徏一个只包含一个源E序文g的简单程序,那么你只需要编译、连接那一个文件就可以了。如果是一个团队项目组Q有着许多甚至上千个源E序文gQ那么要创徏一个可执行E序的过E就变得更复杂、更耗时。你必须用各U各Llg程序逐步建立h?

在微软或其它一些Y件公怸惯例是:每日构造ƈ?#8220;冒烟试”。每天都对已完成的源E序q行~译Q然后连接组合成可执行的E序Qƈ?#8220;冒烟试”Q以单的查该执行E序在运行时是否?#8220;冒烟”?

带来的好?/p>

虽然q是一个非常简单的q程Q但却有非常重要的意义:

1、能最化集成风险

目l可能遇到的一个很大的风险是,目l成员根据不同的pȝ功能各自开发不同的代码Q但是当q些代码集成Z个系l的时候,也许pȝ完成不了预期的功能。这U风险的发生取决于项目中的这U不兼容性多久才被发玎ͼ׃E序界面已经发生了变化,或者系l的主要部分已经被重新设计和重新实现了,相应的排错工作将非常困难和耗时。极端情况下Q集成的错误可能回导致项目被取消掉。每日构造和冒烟试可以使这U集成错误变得非常小Q而且便于解决Q防止了很多集成问题的生?/p>

2、能减小产品低质量的风险

    q种风险是和集成不成功、集成出错相兌的。每天对集成的代码做一些少量的冒烟试Q即可杜l项目中那些基本的质量问题。通过q种方式Qɾpȝ辑ֈ一U周知的良好状态,l护q样的系l可以防止系l逐步恶化到耗费大量旉排查质量问题的地步?/p>

3、能单化错误诊断

当系l每天都q行build和测试时Q系lQ何一天发生的错误都能够变得十分精l,便于排查。比如在17日系l还q行正常Q?8日就出错了,那么只需要检查这两次build之间的代码变化就可以了?/p>

4、能极大鼓舞目l的士气

看到产品的不断成长,能够极大的鼓舞项目组的士气,有时甚至不管q个产品到底用来做什么。开发h员可能会为系l显CZ一个矩形而感到激动。通过每日构造,产品每天q步一点点Q保证项目士气的持箋高涨?/p>

q行每日构造和冒烟试

虽然说这是一个简单枯燥的z,每天q行buildQ每天进行测试,但也有着一些值得注意的细节:

1、每天坚?

每日构造,最重要的就?#8220;每日”。如Jim McCarthy所_把每日构造看作是目?#8220;心蟩”Q没?#8220;心蟩”的话Q项目也死?Dynamics of Software Development, Microsoft Press, 1995)。Michael Cusumano and Richard W. Selby描述了另外一U隐含的比喻Q把每日构造比作项目的“同步脉冲”(Microsoft Secrets, The Free Press, 1995)?不同开发h员写的代码在他们?#8220;脉冲”之间肯定都会存在“同步”的差异,但是必须有这样一?#8220;同步脉冲”Q得这些代码能够组合ؓ一个整体。当目l坚持每天把q些不同?#8220;脉冲”l合CL时候,开发h员脱L体的情况׃得到极大E度的杜l?/p>

有些目l把q一q程化ؓ“每周build一?#8221;。这样带来的问题是,某一ơbuildp|后,可能要回溯好几周才能扑ֈ原因。如果这U情况发生的话,已经得不到经常build带来的好处了?/p>

2、严格检查每一ơbuild

要保证每一ơbuild的成功,必M证build后的l果Q也可称为buildQ是可以正常q行的,如果build不可q行Q那么本ơbuild被认为是不成功的Q同时应该将修复此次build的工作提高到目l最高别来处理?/p>

对于如何衡量一个buildQ每一个项目组都会定义一些自q标准Q这些标准需要设定一个严格的质量U别来处理那些特别严重的~陷Q同时也需要具有一定的伸羃性来忽略掉那些微不道的~陷Q一些不适当的关心也怼使整个过ED步ؓ艰?/p>

一个好的buildL应该具备以下条gQ?/p>

●能够成功编译所有的文g、库Q以及其它相关组Ӟ

●能够成功链接所有的文g、库Q以及其它相关组Ӟ

●不能存在Q何得系l无法运行或者运行出错的高别故障;

●当Ӟ必须通过冒烟试

3、每天进行冒烟测?/p>

冒烟试应该是对整个pȝ程从输入到输出的完整测试。测试不必是面面俱到的,但是应该能够发现pȝ中较大的问题。冒烟测试应该是_充分的,通过了冒烟测试的build可以认为是l过充分试、够稳定的?/p>

不进行冒烟测试的build是没有太大h(hun)值的。冒烟测试就像一个哨兵,在阻止着产品质量恶化和集成问题的产生Q不q行冒烟试Q每日构造可能会变成费旉的练习?/p>

冒烟试必须随着pȝ的扩充而扩充。最初,冒烟试可能是非常简单的Q比如验证系l是否会打印“Hello World”Q随着pȝ功能的扩充,冒烟试需要越来越充分。最初的冒烟试也许只需要几U钟来执行,逐渐圎ͼ试可能会花?0分钟Q?时Q甚xѝ?/p>

4、徏立一个专门的build组

    在很多项目组Q维护每日构造,q更新冒烟测试用例,会耗费一个h工作的大部分旉。因此在一些大的项目中Q这工作独立成不止一个h来完成的全职工作。比如在 Windows NT 3.0的研发中Q就有一个由四个全职人员l成的专门的build组(Pascal Zachary, Showstopper!, The Free Press, 1994)?/p>

5、ؓbuild增加修订Q如果这样做有意义的?/p>

    一般开发h员不会每天都l常向系l中快速的增加实际的代码,通常是每隔几天,他们在开发好完成某个功能的一套代码以后,然后集成到整个系l中?/p>

6、规定一些导致buildp|的惩|措?/p>

很多执行每日构造的目l都会规定一些惩|措施,来惩|那些导致buildp|的行为。从最开始,目l成员就清楚的知道,build的正常执行是目l的头等大事。一个失败的build是项目组的意外,无法成ؓ目l工作的准则。必d持:Dbuildp|的同事,必须停下手中的工作,首先来解决buildp|的问题。如果一个项目组的buildl常p|的话Q久而久之的Q再来谈build的正性就没有意义了?/p>

有种L的惩|措施,能够H出解决问题的优先性。Some groups give out lollipops to each "sucker" who breaks the build. This developer then has to tape the sucker to his office door until he fixes the problem. 有些目l会惩罚犯错的同事戴上山角Q或者向一个项目基金捐?块钱?/p>

有些目l对此的惩罚有Ҏ(gu)酷了。微软的开发h员,在一些知名度很高、很重要的品如Windows NTQWindows 95QExcel{品后期研发中Q被要求随时带着d机,如果你的代码Dbuildp|的话Q即使是凌晨3炚wQ也会要求你立即来处理这个问题?/p>

7、即使在压力下也需坚持每日构造和冒烟试

当项目进度的压力来大Ӟl护每日构造的工作看v来有些浪Ҏ(gu)_但是恰恰相反。在压力之下Q开发h员丢掉一些^时的规定Q会采用一些设计和实现的捷径,q在qx压力较小的环境下一般时不会用的。代码的review和单元测试也可能会比qx_心一些,q些代码的状态变化也会比qx快很多?/p>

为防止这U情늚出现Q每日构造会坚持相关的规定,让压力下的项目保持在正轨上。代码仍然每天在不断变化Q但是构造过E得这U变化每天都可控?/p>

谁能够从每日构造这U过E中得到好处呢?一些开发h员会抗议_׃他们的项目太大,每天q行build是没有实际意义的。但是ؓ什么现在最复杂的Y仉目组却能够成功的执行每日构造的制度呢?本文首发ӞWindows NT包括?60万行代码、分布在4万个源程序文件中Q项目组仍然可以坚持每日构造?br />



]]>
վ֩ģ壺 û| Ű| ÷| Զ| | ¯| γ| ̨| | | | | ֥| Ī| | ͨ| ½| | | ƾ| | | ɽ| | ٤ʦ| | ˮ| ֣| ֵ| | ϲ| | | ˿| | | | | | | ֦|