一、开源史上最成功的八个开源软件
就开源本身而言,它就是个成功案例。它不仅受个人喜欢,而且众多知名企业也青睐于它。虽然开源计划和开源产品数不胜数,但哪一个才是最成功的呢?这里所说的“成功”的定义是:应用广泛+众所周知。而在众多成功的开源产品中,只有少数领头羊,而其他产品基本只能望其项背。
Linux
上榜理由:Linux + GNU = GNU/Linux 。从Linus Torvalds在1991年宣布他在Minix基础上创建一新OS内核到现在已经接近20年了。在这段时间内,大部分网络服务器都是Linux系统。
BSD
上榜理由:长久以来,FreeBSD, NetBSD和OpenBSD是服务器众操作系统之中广为人知的3个OS。上世纪90年代,三者均是脱胎于伯克利的Unix系统,故把三者组团上榜。另外,Apple的Mac OS脱胎于FreeBSD。
MySQL
上榜理由:MySQL是全球使用范围最广的数据库系统。2009年,全球的MySQL安装数量已达1千1百万。它是LAMP架构(Linux,Apache, MySQL, PHP)中的M。众多知名网站和产品均使用MySQL,比如:维/基百科、Facebook、Google和Wordpress。(Google和 Facebook均改造了MySQL,以满足自身需求。详情可见本文末尾推荐阅读文章)。
Apache
上榜理由:Apache HTTP服务器从它诞生的1996年开始,它是全球使用最为广泛的Web服务器,其市场占有率远远超过第二名的IIS。2009年,全球超过1亿个网站使用Apache。
据Netcraft2010年8月11日的数据统计表明,全球目前已有119,664,128个网站使用Apache;目前Apache市场占有率为56.06%,IIS为25.03%。
图1: Web 服务器市场占有率
Firefox
上榜理由:目前为止,它是Mozilla的最成功产品。2004年11月9日,FireFox 1.0问世。目前Firefox虽无法撼动IE的霸/主地位,但它是众多技术人员的首选浏览器。Firefox浏览器进化史:2002年9月23日 Phoenix -> 2003年5月17日改为FireBird-> 2004年2月9日改为FireFox。
根据NetMarket Share 2010年7月份最新统计,Firefox市场占有率为22.91%,IE为60.74% 。
图2:浏览器市场占有率
WordPress
上榜理由:从2004年Wordpress作为b2博客软件一分支面世后,它开始主宰博客平台市场。据Pingdom 2009年的调查表明,全球Top 100博客中27%使用Wordpress。如果加上Wordpress.com和Automattic的Wordpress服务博客,该数据上升至32%。
2010年8月份,Wordpress 3.0下载量已超过1250万。
BIND
上榜理由:BIND(Berkeley Internet Name Domain Server)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的90%。BIND的第一个版 本要追溯到20世纪80年代,它由伯克利大学的4位研究生共同开发,它和4.3 BSD一起发布。可以这样说,它就是全球的标准DNS服务器。
不接触Linux的朋友应该很少听过BIND。因为全球大多数服务器的OS均为Linux/Unix,而这些Linux/Unix均绑捆BIND,所以BIND的份额才非常高。
Ubuntu
上榜理由:2004年10月20日,Ubuntu首个版块发布。迄今为止,它是Linux流传最广的分支,尤其是其出色的桌面系统。鉴于Ubuntu近些年来的巨大成功,榜上有名,应受之无愧。
二、开源软件评测的技术,方法,工具和系统
开源发展(核心+插件)是一种趋势,他给予人们更多的选择性,也带动了用户开发插件的积极性,从而提高了软件的粘性以及用户的使用体验.插件的开发者本身就是软件的用户,他们更了解用户需求,他们在使用过程中发现需要某 些功能,或者为使用时的某些操作提供方便,才去开发出这些插件,这些插件往往是真正贴切的、实用的,这比作者一个人开发出的功能更适合普通用户.
有些人往往提到开源软件就想到免费,我认为免费并不是开源软件的真正核心意义.我觉得开源软件的真正意义是,集体开发,用户决定软件走向,还有使用者的自由 度.一个开源软件做出来,大家一起改进它,这样它就越来越适合大家.在符合大众习惯的同时,我也可以根据自己本人的使用习惯来调整软件,让它更适合自己, 我觉得这样的软件开发形式要好于传统的作者独自开发。
针对开源者,开源者开源某一个软件的初衷是什么?这个软件能解决某一方面的问题,提高生产力,开源出来解放社区工程师的痛点。我想大部分开源软件都是这样的。既然开源了,是否能经得起质疑,我们知道好的项目是经得起质疑。既然开源就能接受社区 的patch和pull request,如果自己贡献了100%的代码,别人问了问题就踢出群,都是自己造,那这样又何必开源呢。
还有就是使用者,如何选型一个好的开源软件,听信他人,迷信大厂的名号,我觉得是还自己动手亲自测试一下benchmark,这个过程既然能辨别真伪,又能学到不少知识。不要让我们的知识都是从别人那里听来的。看一下源码,主要看testcase,如果没有任何testcase,都在main方法中system.out的开源软件,测试都没有全面覆盖,你敢在生产环境中用吗?
软件测试是软件开发过程中的一个重要组成部分,是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求、预先定义的不一致性。
软件测试的目的是为了保证软件产品的最终质量,在软件开发的过程中,对软件产品进行质量控制。一般来说软件测试应由独立的产品评测中心负责,严格按照软件测试流程,制定测试计划、测试方案、测试规范,实施测试,对测试记录进行分析,并根据回归测试情况撰写测试报告。测试是为了证明程序有错,而不能保证程序没有错误。
软件测试方法
多任务测试是指在非idle状态下,测试对象处于工作状态时,有新的事件发生,如手机进行通话时有短信进行,手机有电话呼入,这种情况就是“多任务”。
临界测试在事件、任务刚刚发生、结束以及储存系统处于临界等边界状态下所进行测试 Eg:系统用户的容量为200,那么当人数达到到201时。
中断测试软件在工作中被其他的任务或意外事件等情况终止推出,相应的测试即为中断测试。 中断测试有人为中断、新任务中断以及意外中断等几种情况
性能测试通常验证软件的性能在正常环境和系统条件下重复使用是否还能满足性能指标。或者执行同样任务时新版本不比旧版本慢。一般还检查系统记忆容量在运行程序时会不会出现内存泄露(memory
leak)。比如,验证程序保存一个巨大的文件新版本不比旧版本慢。
软件测试工具
压力测试工具ApacheBench
http://blog.csdn.net/iloveolerp/article/details/5212844
ab---apache自带的压力测试工具。是 Apache 附带的一个小工具,专门用于 HTTPServer 的benchmark testing,可以同时模拟多个并发请求。
自动化测试工具QTP
是一种自动测试工具。使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试哪些功能、操作步骤、输入数据和期望的输出数据等
性能测试工具LoadRunner
LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。
缺陷管理工具QC
该软件提供统一、可重复的流程,用于收集需求、计划和安排测试、分析结果并管理缺陷和问题。组织可使用该软件在较大的应用程序生命周期中实现特定质量流程和过程的数字化。该软件还支持在IT
团队间进行高水平沟通和协调。
单元测试工具Junit
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regressiontesting framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
软件错误管理工具Bugzilla
Bugzilla 是一个开源的缺陷跟踪系统(Bug-Tracking System),它可以管理软件开发中缺陷的提交(new),修复(resolve),关闭(close)等整个生命周期。
Bugzilla是Mozilla公司提供的一款开源的免费Bug(错误或是缺陷)追踪系统,用来帮助你管理软件开发,建立完善的BUG跟踪体系。
功能测试工具WinRunner
通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。
企业级应用可能包括Web应用系统,ERP系统,CRM系统等等。这些系统在发布之前,升级之后都要经过测试,确保所有功能都能正常运行,没有任何错误。如何有效地测试不断升级更新且不同环境的应用系统,是每个公司都会面临的问题。
如果时间或资源有限,这个问题会更加棘手。人工测试的工作量太大,还要额外的时间来培训新的测试人员等等。为了确保那些复杂的企业级应用在不同环境下都能正常可靠地运行,你需要一个能简单操作的测试工具来自动完成应用程序的功能性测试。