没有什么不可以,只要你相信,只要你愿意去实现!

发布新日志

  • 超过 600 本的免费电脑技术书籍

    2008-11-06 17:46:07

    超过 600 本的免费电脑技术书籍

    通过 digg 找到的这个网页,收集了 600 本以上的免费电脑技术书籍网址,内容包括图像处理,黑客技术,编程知识,资格认证教程,设计,Linux,网络技术,等等,内容相当丰富。经确认,其中一些书籍,链接已经失效,不过网页上有说明:“请报告死链接至 zikri [at] ITB.ac.id。” G/l9e[x  

    非常丰富的资源
    >?/b46rG8  
    http://zikri.indoglobal.com/books.html

    转贴自:Taker2001

  • C/S 与 B/S 区别

    2008-10-14 16:06:15

    B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种scrīpt语言(VBscrīpt、Javascrīpt…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步。

    C/S 与 B/S 区别:
      Client/Server一般是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的.
    1.硬件环境不同:
      C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
      B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行
    2.对安全要求不同
      C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.
      B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群.
    3.对程序架构不同
      C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.
      B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟.
    4.软件重用不同
      C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.
      B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子
    5.系统维护不同
    系统维护是软件生存周期中,开销大, -------重要
      C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统
      B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.
    6.处理问题不同
      C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统
      B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小.
    7.用户接口不同
      C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高
      B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本.
    8.信息流不同
      C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低
      B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更象交易中心  

    比如一些聊天软件,是c/s结构的因为满足这种软件的可维护和升级性,满足不同的人群的个性和喜好,自己制定自己的界面,安装自己喜欢的插件,但在b/s结构上实现这一点比较困难,并且可扩展性也不好。

    比如说很多人每天上新浪网,只要安装了浏览器就可以了,并不需要了解新浪的服务器用的是什么操作系统,而事实上大部分网站确实没有使用windows操作系统,但用户的电脑本身安装的大部分是windows操作系统
    软件系统的改进和升级越来越频繁,B/S架构的产品明显体现的更方便的特性。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行,如果是异地只需要把服务器连接上网即可立即进行维护和升级,这对人力、时间、费用的节省是相当惊人的。
    一个稍微大一点单位来说,系统管理人员如果需要在几百甚至几千部电脑之间来回奔跑,效率和工作量是可想而知的,但B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。所以客户机越来越"瘦"而服务器越来越"胖"是将来软件的主流发展方向,这使得升级和维护越来越容易而使用越来越简单。

    link:http://www.51testing.com/?207050/action_viewspace_itemid_94773.html

  • 软测工程师基本素质

    2008-10-09 16:33:16

    很多年轻或者刚刚从事测试工作的工程师,经常会问:“测试工程师需要什么技能或者具有什么素质才是合格的?”与开发人员相比,测试人员不但需要一技之长,还需要掌握诸如操作系统、数据库、网络等多方面的知识。
    经过这几年的发展,国内IT公司的测试水平有了很大的提高,但是与此同时,很多测试工程师也迎来了个人的发展瓶颈:很多人从测试工程师做到了测试经理的职位,不知道下一步如何发展;或者每天机械地从事着功能测试工作。
    根据作者多年的经验,一个有竞争力的测试人员要具有下面三个方面的素质:
    1.         计算机专业技能
    计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件。尽管没有任何IT背景的人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必不可少的。计算机专业技能主要包含三个方面:
    l         测试专业技能
    现在软件测试已经成为一个很有潜力的专业。要想成为一名优秀的测试工程师,首先应该具有扎实的专业基础,这也是本书的编写目的之一。因此,测试工程师应该努力学习测试专业知识,告别简单的“点击”之类的测试工作,让测试工作以自己的专业知识为依托。
    测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主。测试专业技能涉及的范围很广:既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、功能测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。
    l         软件编程技能
    “测试人员是否需要编程?”可以说是测试人员最常提出的问题之一。实际上,由于在我国开发人员待遇普遍高于测试人员,因此能写代码的几乎都去做开发了,而很多人则是因为做不了开发或者不能从事其它工作才“被迫”从事测试工作。最终的结果则是很多测试人员只能从事相对简单的功能测试,能力强一点的则可以借助测试工具进行简单的自动化测试(主要录制、修改、回放测试脚本)。
    软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的开发经验。因此,测试人员要想得到较好的职业发展,必须能够编写程序。只有能给编写程序,才可以胜任诸如单元测试、集成测试、性能测试等难度较大的测试工作。
    此外,对软件测试人员的编程技能要求也有别于开发人员:测试人员编写的程序应着眼于运行正确,同时兼顾高效率,尤其体现在与性能测试相关的测试代码编写上。因此测试人员要具备一定的算法设计能力。依据作者的经验,测试工程师至少应该掌握Java、C#、C++之类的一门语言以及相应的开发工具。
    l         网络、操作系统、数据库、中间件等知识:
    与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。由于测试中经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要掌握更多网络、操作系统、数据库等知识。
    在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是测试工作中经常遇到的知识。
    操作系统和中间件方面,应该掌握基本的使用以及安装、配置等。例如很多应用系统都是基于Unix、linux来运行的,这就要求测试人员掌握基本的操作命令以及相关的工具软件。而WebLogic、Websphere等中间件的安装、配置很多时候也需要掌握一些。
    数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库。因此不但要掌握基本的安装、配置,还要掌握SQL。测试人员至少应该掌握Mysql、MS Sqlserver、Oracle等常见数据库的使用。
    作为一名测试人员,尽管不能精通所有的知识,但要想做好测试工作,应该尽可能地去学习更多的与测试工作相关的知识。
    2.         行业知识
    行业主要指测试人员所在企业涉及的行业领域,例如很多IT企业从事石油、电信、银行、电子政务、电子商务等行业领域的产品开发。行业知识即业务知识,是测试人员做好测试工作的又一个前提条件,只有深入地了解了产品的业务流程,才可以判断出开发人员实现的产品功能是否正确。
    很多时候,软件运行起来没有异常,但是功能不一定正确。只有掌握了相关的行业知识,才可以判断出用户的业务需求是否得到了实现。
    行业知识与工作经验有一定关系,通过时间即可以完成积累。
    3.         个人素养[1]
    作为一名优秀的测试工程师,首先要对测试工作有兴趣:测试工作很多时候都是显得有些枯燥的,因此热爱测试工作,才更容易做好测试工作。因此,除了具有前面的专业技能和行业知识外,测试人员应该具有一些基本的个人素养,即下面的“五心”。
    专心:主要指测试人员在执行测试任务的时候要专心,不可一心二用。经验表明,高度集中精神不但能够提高效率,还能发现更多的软件缺陷,业绩最棒的往往是团队中做事精力最集中的那些成员。
    细心:主要指执行测试工作时候要细心,认真执行测试,不可以忽略一些细节。某些缺陷如果不细心很难发现,例如一些界面的样式、文字等。
    耐心:很多测试工作有时候显得非常枯燥,需要很大的耐心才可以做好。如果比较浮躁,就不会做到“专心”和“细心”,这将让很多软件缺陷从你眼前逃过。
    责任心:责任心是做好工作必备的素质之一,测试工程师更应该将其发扬光大。如果测试中没有尽到责任,甚至敷衍了事,这将会把测试工作交给用户来完成,很可能引起非常严重的后果。
    自信心:自信心是现在多数测试工程师都缺少的一项素质,尤其在面对需要编写测试代码等工作的时候,往往认为自己做不到。要想获得更好的职业发展,测试工程师们应该努力学习,建立能“解决一切测试问题”的信心。
    “五心”只是做好测试工作的基本要求,测试人员应该具有的素质还很多。例如测试人员不但要具有团队合作精神,而且应该学会宽容待人,学会去理解“开发人员”,同时要尊重开发人员的劳动成果——开发出来的产品。



    转自:http://blog.csdn.net/raul_177/archive/2007/03/07/1523199.aspx
  • 软件测试新手应看的一些东西!

    2008-10-09 16:03:49

    测试新手进来看一下!新鲜出炉测试知识索引!

    相信很多进入测试领域的新手都会面对这样或者那样的疑问和难题,怎么入门,怎么学习,怎么掌握方法去做测试,都会有各式各样的不解。如果身边的测试环境氛围好的话可以边做边学,多问问同事,平时自己多主动学习对于认识的提升是有很大的帮助的。我们测试时代论坛里的很多网友都是这样逐渐成熟起来的。

    平时除了花时间去阅读测试相关资料,学习新内容之外,还要掌握方法和效率,对于一些比较茫然的新手们,我列出一下一些问题索引,主要是把论坛里以前的一些帖子及回复整理了一下,希望这个帖子可以在新手问问题的时候作为一个参考和指导。对于其中的缺陷和不足希望大家多多提出意见,我会继续更新和完善的!

    1、Q:给测试新手的建议和指导
    A:

    http://bbs.51testing.com/viewthread.php?tid=34811

    http://bbs.51testing.com/viewthread.php?tid=22322&highlight=%D0%C2%CA%D6%B1%D8%BF%B4%A1%B6%D7%D4%B6%AF%BB%AF%B2%E2%CA%D4%B9%A4%BE%DF%BD%E9%C9%DCLR%C6%AA%A1%B7




    2、Q:测试工程师流程、入门、经验介绍
    A:

    http://bbs.51testing.com/viewthread.php?tid=96652&highlight=%B2%E2%CA%D4%B9%A4%B3%CC%CA%A6%B9%A4%D7%F7%C1%F7%B3%CC%B8%C5%C2%DB

     

    http://bbs.51testing.com/viewthread.php?tid=42387&highlight=%D2%BB%B8%F6%C8%ED%BC%FE%B2%E2%CA%D4%B9%A4%B3%CC%CA%A6%B5%C4%D1%A7%CF%B0%CC%E5%D1%E9

  • 软件测试职业规划

    2008-10-09 15:05:37

    软件测试职业规划{阳光原创}

    说到职业规划可能是现在的一个热门话题,大学毕业找什么工作,可以做什么工作,以至于在大学中应该培养什么能力,在本篇文章中我就以个人的一些经历和经验来说一说测试这个职业的规划。不一定完全正确但是代表我个人的观点。
    我们不妨把这个过程分为3个大的阶段,大学阶段,找工作阶段,工作后发展阶段;
    大学阶段
    在大学阶段我们要学什么,我感觉真正对我们有用的就是英语和数学,还有写专业课的知识做基础,英语是以后提高的关键所以英语一定要学好,特别是在测试工作中很多时候国内的材料恨不能说明问题,测试在国内还是一个新兴行业(相对)所以材料也是比较少,所以很多时候都要去看英文的材料,所以英语的水平直接影响到以后的发展,数学为什么要学好呢,在工作中特别是测试工作很需要数学的逻辑思维,逆向思维等,所以学数学要学好不是说分数高而是学习思维方法,还有一点就是英语和数学时以后深造的必考科目(呵呵,我就没有学好,还在补习);一定的专业课也是必要的,因为它是你工作后提高的基础,基础扎实了提高起来就比较容易,我的基础比较差,所以我花了一年的时间来提高才得到了一点点成功,(看以参看阳光的测试工作历程);培养情商,这个名词现在很多地方都在提,有的一些公司甚至在智商和情商之间更看重情商。情商其实就是对自己情绪的控制能力和自身修养的培养,还有一些交流能力、沟通能力、管理能力等等,这些在大学里如何培养呢,建议如果有可能的话参见多参加学校的一些团体,也可以自己组织一些团体,同时如果有肯能的话可以到学生会参加锻炼,这对以后的很多方面的能力都有锻炼,(我就在学生会待过一段时间,对后来的工作有了不小的帮助)。所以建议在校的大学生一定不要保守,要积极的锻炼自己,多与人去交流等。
    找工作阶段
    这个阶段可能是大家比较迷茫的阶段,主要是有两个问题,我能做什么,我有什么能力;我是在大学阶段过来的毕业的时候也是这样,不知道自己可以做什么,但是我有一个自己的目标,我要找到一个自己喜欢的工作,因为对工作的性趣是将来发展的一个前提,没有性趣的工作一般情况下是做不出来成果的。所以我建议有两中做法,一选择自己感兴趣的工作,但是不一定能找到,现在的就业压力还是很大了,第二种是对自己已经没有办法从事的工作产生性趣,着眼去找它的性趣点,然后你把它扩大,从而培养对词工作的性趣。
    工作阶段

    这是一个宣扬个性的年代,网络给了我们自由,好于不好是自己的一个观点,烧白兄,我们走自己的路,让别人跟贴去吧!
    千挑百选,我们选择了测试工作,根据我们上面说的原则,既然选择了,就要好好工作,做出一定的成就,即便不能出人头地,也要榜上有名;那么我们就不能机械的工作,我们要给自己制定一个发展蓝图,测试工作一般有两个出路,我认为:一个是测试转管理,一个是测试转质量控制!那么我们如何规划呢?我个人感觉测试工作也是一个比较累的工作,所以一个有一个年龄限制,暂且我们先为35岁,也许有的人很大了还在做测试工作,哪就是一个老的测试工程师,我们一般认为不是很好的出入,那么35岁以后有了一定的测试技术经验后我们可以选择转行了,或转管理或转质量控制。
    那么在这个发展过程中就要给自己制定一个发展方向,确定自己的技术体系和管理体系或者技术体系和质量体系的学习和积累计划。首先技术体系的建立,做为测试工作技术体系我认为首先要有一个面,然后深入一条线,在这个面上,你要去学习软件工程、软件测试技术(测试技术),系统分析技术、网络技术、网络协议、编程技术,等等,跟你行业相关的一些业务等方面的技术,这个体系的建立是一个长期的积累过程,当然可以现从你的实际工作出发,在做工作的时候一发散的方式做积累,比如你需要测试的是一个指纹识别系统,那么你再做这项工作的时候,不要单单只局限在工作的本身上,要去了解这个技术的相关知识,了解行业的动态,了解一些其他知识等等,在最后项目总结的时候将其沉淀积累,这样你的知识量就会比你单独的做一个项目要大得多,但也累的多,所以只有勤奋的人才能有更大的进步。我这肯能是举了一个比较小的例子,只是希望给大家指出一个方向。所以做工作一定不要只限于工作本身,一定要扩展再扩展,这对你以后的发展大用用处,当你的知识积累到一定的程度,你就会发现你看问题的方法就会不同,你设计出的测试用例也会与众不同。横线一个面,我们已经建立了一个宽广的技术面,但是这还是不够的,我们还需要给自己选择一个点然后深入下去,比如我再自己的基础的情况下选择了应用测试领域,再这个方面就不是要知识了解和知道,要做到掌握,可以掌握一门独特的技术,可以再公司甚至这个行业做到前列,这个是重要的,要不你就没有自己的绝活了。在这个点的选择上可以根据自己的爱好,和工作需要,甚至强迫自己选择一个然后深入。这样,面和点建立起来了,然后要随着时间的推移然扩展你的面,深入你的线,相信在你的不懈努力下一定会做到很好的。
    管理体系的建立,随着工作的推移,要逐渐的有意思的去参与一些管理工作,可能机会好的话在学校的时候也可以得到一些锻炼,笔者就在学校的时候锻炼了几年(一直在学生会,还组织了一个计算机学社)。俗话说机会都是给有准备的人,只有你事先作好了这些准备,才能在领导交给你一项管理任务的时候,把它完美的完成!这样才能给你以后走向管理这条路打下基础。管理也是一门学问,所以还要学习,在这里我就不具体说怎么学了,可能有人说我也不知道怎么学,不过这个方面太广了。不是很快可以说清楚的,大家可以买些相关的书籍看看。
    质量体系,在测试工作中独立与技术和管理的还有一个是质量控制,这个可能在一些小型的然建公司体现的不是那么明显,不过在我们单位就有专门的质量部门来保证测试的质量,其实这个质量控制也可以是从入门就从事,因为他的一些东西也是很基础,特别是在国内质量管理员有很多不太懂测试技术,他们要做的就是检查质量点,在测试人员的配合下检查。不过我还是认为质量人员是要在测试人员中升级过去的,因为你不懂测试技术和谈对质量点的控制,如何有理有据的开不合格项,或者你只能看到不关紧要的一些东西,真正的风险往往看不到。
    呵呵,罗嗦了这么多,也不知道多少是对大家有用的,不过毕竟是自己的一些经验!在我这里是实用的,也许你跟我情况相同,那么也适用于你,也许情况不同,那么就当看小说了!!呵呵,阳光在此祝大家都能在自己的工作上得到发展,得到提高!

     
  • 系统测试的方法

    2008-10-07 13:53:24

       计算机软件是基于计算机系统的一个重要组成部分,软件开发完毕后应与系统中其它成分集成在一起,此时需要进行一系列系统集成和确认测试。对这些测试的详细讨论已超出软件工程的范围,这些测试也不可能仅由软件开发人员完成。在系统测试之前,软件工程师应完成下列工作:
      (1) 为测试软件系统的输入信息设计出错处理通路;
      (2) 设计测试用例,模拟错误数据和软件界面可能发生的错误,记录测试结果,为系统测试提供经验和帮助;
      (3) 参与系统测试的规划和设计,保证软件测试的合理性。  系统测试应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能政党工作并完成所赋予的任务。下面简单讨论几类系统测试。
    1、恢复测试
      恢复测试主要检查系统的容错能力。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。恢复测试首先要采用各种办法强迫系统失败,然后验证系统是否能尽快恢复。对于自动恢复需验证重新初始化(reinitialization)、检查点(checkpointing mechanisms)、数据恢复(data recovery)和重新启动 (restart)等机制的正确性;对于人工干预的恢复系统,还需估测平均修复时间,确定其是否在可接受的范围内。
    2、安全测试
      安全测试检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如,①想方设法截取或破译口令;②专门定做软件破坏系统的保护机制;③故意导致系统失败,企图趁恢复之机非法进入;④试图通过浏览非保密数据,推导所需信息,等等。理论上讲,只要有足够的时间和资源,没有不可进入的系统。因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。此时非法侵入者已无利可图。
    3、强度测试
      强度测试检查程序对异常情况的抵抗能力。强度测试总是迫使系统在异常的资源配置下运行。例如,①当中断的正常频率为每秒一至两个时,运行每秒产生十个中断的测试用例;②定量地增长数据输入率,检查输入子功能的反映能力;③运行需要最大存储空间(或其他资源)的测试用例;④运行可能导致虚存操作系统崩溃或磁盘数据剧烈抖动的测试用例,等等。
    4、 性能测试
      对于那些实时和嵌入式系统,软件部分即使满足功能要求,也未必能够满足性能要求,虽然从单元测试起,每一测试步骤都包含性能测试,但只有当系统真正集成之后,在真实环境中才能全面、可靠地测试运行性能系统性能测试是为了完成这一任务。性能测试有时与强度测试相结合,经常需要其他软硬件的配套支持。
Open Toolbar