友好连接

2008年11月2日星期日

在北美,怎样找到软件测试工程师的工作

没有经验,不知如何跻身于测试工程师的行列?以下几个基本方向能使你从新手成为软件测试的行家里手。

软件工业是自动化工业的一部分。而且是最活跃发展最迅速的一个方面。到底有多迅速?任何人的想像力都不够!正如我们不会把我们的事务托付给不可靠的经纪,任何有分量的公司都不会采用没有质量保障的软件。软件测试人员,我是说有水平有经验的软件测试人员永远是供不应求的。软件测试经理不得不花很多的时间去面试有潜力的应聘者。一些应聘者在软件方面或者软件测试方面毫无实际经验,明知道软件测试工作是一个高回报的和最合适的软件工业入门,就是无法抓住一个又一个机会。这些人真正需要的是一个指南能告诉他们如何成为一个软件测试工程师。

首先,进入软件测试需要哪些技能?

1、软件工程技能 你必须了解软件软件工程(设计、开发和简单测试),应用,系统,自动测试编程,及操作系统,数据库,网络系统和协议的设计和使用。

2、交流技巧 如果想确定软件缺陷,你应当能够指出什么时候的缺陷算是缺陷。

3、组织技能 如果你在别人都头脑发昏的时侯保持清醒,你就可能是一个好的软件测试工程师。在网络时代软件测试是一项有压力的复杂性工作,但如果你能从这些纷繁中找到一种途径,它就是一项回报丰厚的事业。

4、实践技能 当一个工作需要经验,而你又需要一个工作去丰富你的经验时该怎么办?这并不完全是一个两难的问题,你可能采用几种方式去获得实际经验。

5、态度 除了技术水平,你需要理解和采取适当的态度去做软件测试。

1、软件工程技能(Software Engineering Skills)

软件工程技能可以分成三大块:理解软件工程的规则,了解计算机编程和操作系统知识。

理解软件工程“规则”。有一种过时的眼光认为软件工程只是由一些在工作期限之前疯狂编程、靠着非凡的协调能力和超人般的咖啡消耗整夜不睡,不停地设计和测试程序的“专家”们组成的。

这种现象确实存在,但你只有了解了软件开发的真正过程,才会是一个专业人员。

从哪开始呢?先到图书馆去走一走。你需要建立软件测试知识的软件工程基础。我的建议是阅读Roger Pressman的软件工程:A Practitioner's Approach, fifth edition (职业入门,第五版,McGraw Hill, 2000年版)和 Glenford Myers的The Art of Software Testing(软件测试艺术,John Wiley & Sons, 1979年版)。Pressman的书是一个对软件工程原理的全面介绍。有很多关于软件技巧、项目管理、要求分析和软件设计等软件工程方面的好书,但Pressman对这些方面在一本书里作了介绍。Glenford Myers不到二百页,1979年发行,却是软件测试方面的圣经。

Myers定义及诠释的测试方法论已成为软件测试的基本模块。

Myers还考查了软件测试中的经济(缺陷的代价)和心理学方面(测试的目标就是发现失误及不成功之处),以及主导软件开发和测试的基本原则。

对参考书进行基本研究是一个好的开端,但这只是单方对话。如果你能和上千个直接具有软件工程和测试经验的人以及想进入这一领域的人对话是不是再好不过了呢?感谢那些网络电子部落,你已经可以做到了。Comp.software-eng覆盖了设计、编程、项目管理等软件工程的各个方面。Comp.software.testing涵盖了软件测试的自动化、培训、技巧等方面。


等等,别只停留在这里!你是不是应当经常访问这些网址呢?Bug-Net(http://65.54.244.250/cgi-bin/linkrd...%2ebugnet%2ecom)是有关软件缺陷的在线杂志。阅读有关缺陷的文章是学习如何工作及失败的极好方式。你也应当查阅软件测试及质量工程杂志(http://65.54.244.250/cgi-bin/linkrd...ww%2estqe%2ecom)。STQE 是确定网络软件测试资源很好的始发站。

计算机编程。不能想像有的人喜欢测试产品却从不阅读、检查和理解组成产品的软件一样。

不要误解我的意思。你不必花所有的时间去读源代码,但任何你做过的有关自己程序的设计、编写和纠错都能大大地有助于测试别人编写的程序。

你怎样学习编程?通过编程。可以严肃地说,开始学习写计算机程序是最简单的事。记住我说的是“开始学习”。软件编程环境,例如 Microsoft Windows Foundation Classes (MFC) or Sun's Java Foundation Classes (JFC, also called "Swing")不断变得越来越复杂,越来越难跟得上。

但我在努力超越自己。你应当怎样学习编程呢?

首先,买Microsoft Visual Basic。不要让名字骗了你。你能用这套组件建立相当复杂的程序。而且它只要一百元左右。下一步呢?等等,是visual编程警告的时候了!

现在你为你的PC买一个程序语言的时候,你其实是买了一个集成开发系统或称为IDE。这些IDE通过对编程的简化把开发过程流水线化。这些IDE其实会帮你写很多编码。这非常有利于尽早开发出一个产品,却不利于你学习编程。如果你用Windows产生程序,你别无选择,因为环境介入太多使你无法从头编程。如果你从Unix系统产生程序,你能自己写所有的编码。

一旦你习惯了与参量、控制结构、对象、输入输出及更重要的Visual Basic纠错打交道的时候,你就可以开始学习C语言了。学习C能使你熟悉十六进制系统,通过指针分配和参考内存,存取个体位码及建立程序模块。

我总是认为在学Java之前最好先学会C,因为C强迫你自己去完成许多任务而Java会自动处理(例如,释放未用的空间)。用C工作比Java难,但你能学到编程更多的基本方面。你其实能用Visual C++ IDE从头写C程序,但最好还是在Unix系统中学C。

操作系统知识。你已经把它交给了在Redmond, Washington的那些人了。在短短的几年内,Windows NT已经成为世界上大部分计算机的标准操作系统。如果你要用NT工作,你需要了解它的寄存地址。(它是一种用于存储你的系统结构的各个方面的数据库。)我发现Peter Norton写的Inside Windows NT 4.0 (SAMS, 1998)是一本很好的介绍书。但是,如果你的应用或系统要求高的保密度、产出、可靠性及灵活性,Unix依然是最好的选择。

如果你想成为一个成功的软件工程师,你必须能在Unix的世界里工作,如果你想从头学习编程,也要在Unix下进行。

你的选择是什么?你可以到当地的学校或大学学习课程,或者在家建立一个Unix系统。别昏过去了,你所需要的只是一台PC和一份能让你从网络免费下载的Linux拷贝。(你大约花二十九元能买一份在一个CD-ROM中带了所有文件的拷贝。)Linux不是Unix的“玩具”版,它是真实的。它已经发行了七百万份拷贝,一些主要的PC生产商甚至先替你装载了它。

好了,你已经到了Unix或Linux系统了。你应当学些什么?文件和目录结构,标准输入输出和错误流,背景(background,也称为"daemon")处理,从C调用系统功能,好,我可以接下去了。

一个好的开端是读Arnold Robbins的Unix in a Nutshell (O'Reilly & Associates, 1999)或者是Ellen Siever的Linux in a Nutshell (O'Reilly & Associates,1999)。

2、交流技能(Communications Skills)

能写出计算机程序却写不出一个完整句子的软件工程师现在还有。但不幸的是,要成为一个成功的软件测试工程师,你需要清楚的交流。

你怎么去学习写?通过写。如果文字水平太粗糙,上一门创造性写作的课。每天写工程流水记录或发email。关键是学习(或重新学习)怎样用清晰可懂的语言表达你的思想。一个好的写作参谋是William Strunk Jr.和E.B. White写的The Elements of Style(Allyn & Bacon, 2000),它一点也不象初中教科书。

测试工程师必须把产品测试的技术写成文件。测试计划提供指导并把测试设计转化为设置、实现测试和评估结果的步骤指导。具有一般软件和产品特性不同层次经验的工程师都能使用这样一个详细的测试计划。如此测试设计者或测试方案作者之外的工程师也能能进行测试。

测试计划也帮着佐证测试策略的正确性。项目中的每个人都应当参与审查(即市场、开发、支持、技术写作及测试人)。计划的审查是必不可少的,因为尽管测试工程师尽最大努力来达成一个对产品的全面定义,这一测试设计者所基于的定义不一定是完整或准确的。此外,就象开发者很难测试他们自己的编码一样,测试工程师也很难明确评估他们自己的测试计划。每一个计划审

查者都可能根据其经验及专长建议修改,有时侯审查者还能提供测试工程师在组织产品定义时不具备的信息。例如,一个市场人员可能了解到了新的客户要求,一个软件支持专家可能从有关的产品领域了解到了一个新的缺陷报告。

测试计划强调测试计划和执行的原则。在测试计划中描述进行测试所需的测试设计和步骤是另一层关于测试设计和计划的原则。在测试设计和计划中的错误与欠缺在设计转化成测试计划中特定的结构和测试步骤后就经常是再已无法弥补。

测试计划可作为其它项目,例如为不同的产品准备测试时的参考资料。当被测试软件找到缺陷解决并证实后,测试计划所述的测试可以用于证实缺陷的解决方案。同时,一个主要的测试设计信息来源,特别对于旧产品的新版本而言,是相关产品或前版本的测试计划。在建立新版本时,旧版本的软件测试计划都应当被重新审查。

与功能与设计说明不同,测试计划将从测试的角度来描述产品的功能操作。从这方面说,测试计划构成了公司公共档案的一部分。随着时间的流逝人们会离开公司,带走他们的知识。以前产品的测试计划就能帮助你定义新产品的测试。

软件测试工程师还要写测试结果报告。测试结果必须写成文档,这样就能确定被测软件的状态,提供关于必须要解决的缺陷的记录。产品测试中发现的所有缺陷的记录是测试部门最显眼、保存时间最长的文档。测试计划和测试报告在项目的最后常被遗忘,但现存缺陷的清单(或数据库)代表项目未完成的议程。这一议程没完成是因为一些缺陷必须在对原来产品的一个patch或maintenance release的时候纠正,或者它们在这个产品作为后续产品的基础之前被修复。在与软件产品打交道的过程中,测试工程师比其他部门的人参与项目的更多方面。测试部门应当记录项目过程中重大事件(例如设计决定)的信息。这个信息应能帮助测试部门和其他部门避免

在后续项目中犯同样的错误。错误是不可避免,在一个项目中可能出问题。从这些经验中学习就可能避免问题,避免今后的同样错误。从错误中学习的第一步就是记住它们,记忆的第一步就是把它们写下来。

3、组织技能(Organizational Skills)

每当执行一个软件项目的测试计划,几乎不可能不遇到至少会阻碍一些测试而必须解决的缺陷。一个测试工程师应当能灵活地停止测试产品的一部分而开始测试其他部分。有时被测软件需要做根本变动引起大量的测试结果失效,测试也许得重做不止一次。在问题被查找和改变在进行的过程中,测试工程师必须有条理,保持对执行测试的软件的前后关系的明确感受(例如目前被测试的程序特定版本的不同部分)。

网络时代要求的动态开发和测试模式使组织性的工作方式对测试工程师越来越重要。在整个开发过程中被测试软件可能会不断地改进。测试工程师在计划和实施测试的时侯必须考虑这些变化

因素,必须控制测试环境来保证测试结果的有效性。

记住计划是一个动词。作为一个软件工程师,你永远不会有你想要的所有时间和资源。你总是必须通过理解技术和产品,开发组织方式,从你和其他人的错误中学习,以及在设计必须改变和出问题的时侯的迅速调整,使你的测试效果和效率最大化。如何能做到这点呢?基本代数:量化任务、目标和结果来减少方程中的变量数。把产品的功能定义成要求。在测试计划和测试中量

化测试及其预期的和实际的结果,把信息提供给项目组。你东点一下西点一下是不能完成整个测试的。未来软件开发的组织模式要求有灵活的设计和不断进化的开发周期。对产品测试必须随着产品的进化而进化。

4、实践经验(Hands-On Experience)

这是个典型的两难问题。你需要软件测试经验来找工作,你没工作你就没经验。你该怎么办?

Be careful! 这需要勇气和你的PC的小心备份。

作为自愿者参与beta测试。怎样发现需要beta测试员的公司呢?首先,给你在软件公司工作的亲友打电话。偶尔有人会需要beta的测试人员。如果这不行,到你最喜欢的网络搜索引擎上去找“beta test”。你会发现很多小(和不那么小的)公司亟需beta测试员。为什么?这得感谢互联网,竞争的加剧使公司必须做出产品模型贴到他们的网址上作为“beta”版推出。这些公司希望人们不仅测试他们的产品,而且对这些免费品感兴趣进而购买他们的产品。

你也能参与开放资源的项目,例如Mozilla,开放资源的网络浏览器是网络浏览器的基础。Mozilla缺陷跟踪系统(bugzilla.mozilla.org)允许网上任何感兴趣的人直接在 http://65.54.244.250/cgi-bin/linkrd...2emozilla%2eorg 的开放资源项目中直接报告和跟踪缺陷
一句忠告:如果你要把很多beta软件下载到你家里的PC里,投资你的备份设备和防病毒组件

5、态度(Attitude)

“我希望你幸福的梦想,被你打破了!”

我打赌这句话能勾起一些人童年记忆的创伤。我不是心理学家,但我还敢说这种说法是因为我们渴望看到成功。在软件测试中,你不仅要证实软件在做它该做的,还要证实它不会做它不该做的。为了做到这一点,你得找出软件的失败之处。

进行软件测试需要很多人的眼光要进行一百八十度的转变,因为测试的目标是要让被测软件失败,由此产生出等同于其他东西工作正确时的成功。在软件测试中,一个成功的测试揭示一个缺陷。进行软件测试也是因为互联网的来临要求人们用一种大不同以往的眼光来看待动态的开发和测试模型。

6、必备特性(Necessary Traits)

软件测试工程师除了技术,还要求具有否定性的创造力;探测技巧;总体理解产品的能力;用客户的眼光进行评估;怀疑的而不是敌意的态度;能经受得住坏消息而保持目标;拥抱新技术的热望等特征。

否定性的创造力。一个软件工程师不能怕引起一个产品的瘫痪或烧毁。在软件测试中,边界意味着被超越而不是被遵从。如果一个程序对某个值的极限为10(例如,可以在一时间被打开的最大文件数),测试工程师的第一想法应当是“如果我把那个值取11,或0,或10.1,甚至不设这个值会如何?”

在我的早期的工作生涯中,有一次我测试一个开发和QA工程师遗漏下来的PC数据库。有问题的数据库是2.01版。这本身就说明产品有问题。2.0版没解决1.0版的所有缺陷吗?或者2.0版又加入了新的缺陷?很遗憾因为时间紧我没有调查这些,只是证实了最后的缺陷修复后就告捷了。

这是很大的错误。我应当重测开发人员所谓“没有变化”的所有产品功能。2.0版本中的缺陷确实复修了,但在修复的过程中,有人破坏了请求。事实就是如此,在数据库里不能搜索数据了,第一个收到这项产品的beta客户发现了这个缺陷。

我宣布以前的测试无效,要求对产品进行全面测试。找到几个缺陷之后,我发现这个数据库读取写保护文件或写保护了的磁盘的时候就会引起瘫痪。开发人员很吃惊我会试着写保护一个数据库。他们的反应就是:“没人会这么干的!”产品的市场经理很快用他们的方式承认了错误。

探测技巧。在一个理想的世界中,软件测试应当在一个经常更新的写得很清楚的功能与设计说明文件(一般被称为“specifications”)中被完整而精确地描述。不幸的是,这一完善被开发程序每一方面文件的任务,包括记录在开发中对程序不可避免的改变,要花很多的时间和精力以至于人们无法完成编程。而且花费也太大。

正式与非正式的信息源
正式系统
要求文件
功能说明书
设计说明书

非正式系统
用户文件
与其他开发人员的交流
与软件支持人员的交流
有关产品的文件
有关产品的缺陷
从工作于相关或早期版本产品获得的“局部知识”

因为我们不是在理想世界里编程,测试工程师应当能够自己找出工作的方式。典型的是,总会有一些设计和功能说明书让测试工程师用于开始他的研究。这些文件能看成为描述被测试软件的“正式”系统。测试工程师应当能用更广大的“非正式”系统的信息来扩展“正式”系统的信息。同时,在项目周期的任何一个点,任何文件都可能是正确或不正确的,所以测试工程师必须根据对软件工作模式的观察,与开发人员和其他项目人员的交谈,或对有关或看上去不那么相关文件的审核,来确定文件的精确性。

总体理解产品。在一个程序项目是,软件开发工程师主要把他们的精力和注意力集于自己的项目部分。结果当这些项目部分组合在一起进行测试的时候,就会碰到兼容性的问题。到产品寄给一个客户之前,唯一能见到整个产品的就是测试工程师。因此测试工程师必须能够对整个产品的操作与使用保持一种“系统”的眼光。

测试工程师对产品的任何一部分的操作可能不是最好的专家,但他必须是产品整体操作的专家。例如,如果被测的产品是一个类似于Microsoft Office的由文字处理、扩展页和其他有关程序组成的办公室自动组件,测试工程师必须了解每个程序的操作,各个程序之间的相互作用和客户其他的软件硬件和软件环境。

用客户的眼光进行评。测试工程师必须是客户的拥护者。被测程序有可能运行可靠满足所有的设计要求,但在客户的软件环境中未必能够用。产品被送到客户之前的测试之一就是要证实产品达到了客户的要求与期望。在这项测试中,测试工程师必须模拟用户的软件环境,把自己放到他们的位置上。

关于软件功能“正确”而不能满足客户需要的一个悲剧性的例子就是美国航空公司965航班1995年在哥伦比亚卡利市的一次失事。在飞行着陆时,空中信号控制系统指示机组人员朝一个叫“Rozo”的航空信号灯飞。这个信号灯在航空图中标为R。机组人员把R输入到飞行管理计算机中,看到了明显是由近到远列出的六个航空信号灯。机组人员选了第一个信号灯,以为这就是Rozo。但那不是。自动驾驶仪把飞机向左转了九十度,撞到了山上。

什么地方出错了呢?当航空表里把Rozo列为R的时候,飞行管理计算机要求机组人员输入信号灯的全名调出它的方位。同时,计算机只显示了信号灯的编码字母和方位。计算机功能“正确”,但不满足用户的需求。

要求变化。项目刚开始时的要求与最终项目完成时的要求一致的情况是极少见的。有时技术变化了,产品必须改变以适应于技术。有时竞争对手的产品具有你的产品所没有的功能。很多情况下,客户的或潜在客户的要求需要变化。这些因素合在一起的一个例子就是目前Microsoft Internet Explorer和Netscape的竞争。

随着计算机首次用户的迅速增加,今天的测试工程师比以往更需要把自己置于客户的位置上。这些新的非技术用户不愿意接受缺陷,对缺陷的解释或理性思考,或通过“升级”修正缺陷。他们只希望他们所买产品的软件和硬件都是能工作的。

怀疑的而不是敌意的态度。测试工程师不能按表面值接受事物,必须执着地对一切提出疑问直到被证实。工程师必须用一种与项目的其他的人合作精神来平衡这种怀疑性与执着性。测试部门与其有关部门的关系可能会变得紧张,特别是在大量缺陷被发现后,或者在每个找出的缺陷会潜在地延迟产品的发货时间而延迟了项目时。测试工程师应当记住要攻击程序的整体性,而不是程序员。

经受得住坏消息而保持目标的能力。一个测试工程师必须忠实地汇报产品中的缺陷。这一信息应当被项目组欢迎,因为每一个测试工程师遇到的问题(除非加入新的问题)都意味着减少客户会面临的问题。但不幸的是很多人不想听到有问,特别是在程序项目的后期。

测试工程师应当能处理因为工作做得太好而引起责备的情况。这对有些人来说是很难做到的,会严重地影响斗志与自尊。

看起来常常是测试工程师阻挠了向客户交货。客观的项目经理才能感觉到测试工程师是在对项目提供有价值的服务。我清楚地记得一个项目经理举起他的手求我他要的是:“解决方案,不是问题!”(他不明白解决方案的实现有时要求一个问题的解决。)有时项目经理在项目计划不方便的时候对于因为发现缺陷而打折是有压力的。在这些情况下,测试工程师应当能基于他对产品的经验和知识进行辩护,但他不应表现为象是他个人受到了威胁。

如何避免这些情形呢?就测试的内容、时间及如何更新测试结果和缺陷信息,设定其他项目组成员的期望。我曾经为一个希望延迟产品发送日期的QA经理工作过。他的目的不是为了产品成功,而是政治权力的操纵。他确信自己能被提升,把一些为他工作的工程师指定为“manager”,开始自称为“director”,还要大楼管理人员把他的办公隔间加宽一英尺。(这没有实现,但至少他的座位有了更多伸脚的余地。)

拥抱新技术的热望。对多数人来说,年龄越大越难学习。在商业世界里,人员越往公司的食物链高处走,越远离他们所建立的技术基础。这一部分是因为他们需要把精力集中于其他的经营和指导其下属的任务中。有时也是因为他们不幸地认为自己已不需要进行实践的技术工作了。互联网增加了技术变化的速度。不继续学习或跟着发展就无法做出商务与技术的决断。

从前的一个经理给我树立了如何对待新技术的榜样。我跟他工作的时候他年近六十,但他象新手一样地热心于学习新技术。他大量地获取信息,不断补充在网络服务器、防火墙、和Perl或Expect等新语言的知识。他还重视做QA或测试组织的工作。他的最初背景是软件开发和开发管理,但他并不认为做QA经理是在降低他的声望。他明白一个独立的测试或QA组所进行的完整测试能使开发经理的工作变得多简化。

正象我所说的,当你生活于网络时代,只要原地不动就很容易落伍了

软件测试认识的几个误区

随着市场对软件质量的不断提高,软件测试不断受到重视,但是由于总体上,国内软件项目过程不规范,导致重视编码和轻视测试的现象,对于软件测试的重要性、测试方法和流程等还存在很多错误的认识。根据作者的软件工作经验,本文列举了七种有代表性的软件测试得认识误区,并作了剖析和相应的解释。希望对软件行业的技术和管理人士,正确认识软件测试起到一定的作用。

作为软件质量保证和可靠性的关键技术手段,软件测试正日益受到重视。但是,我国不少软件企业的软件开发模式仍然处在无序开发的不规范状态,与软件编程比较,软件测试的地位和作用,还没有真正受到重视,对于很多人(甚至是软件项目组的技术人员)还存在对软件测试的认识误区,这进一步影响了软件测试活动的开展和真正提高软件测试质量。

误区之一:软件开发完成后进行软件测试

人们一般认为,软件项目要经过以下几个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。据此,认为软件测试只是软件编码后的一个过程。这是不了解软件测试周期的错误认识。

软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。因此,软件测试贯穿于软件项目的整个生命过程。在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。软件开发与软件测试应该是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试。如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,如果要修复该类错误,将会耗费大量的时间和人力。

误区之二:软件发布后如果发现质量问题,那是软件测试人员的错

这种认识很打击软件测试人员的积极性。软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因为从根本上讲,软件测试不可能发现全部的错误。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。出现软件错误,不能简单地归结为某一个人的责任,有些错误的产生可能不是技术原因,可能来自于混乱的项目管理。应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。

误区之三:软件测试要求不高,随便找个人多都行

很多人都认为软件测试就是安装和运行程序,点点鼠标,按按键盘的工作。这是由于不了解软件测试的具体技术和方法造成的。随之软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。软件测试技术不断更新和完善,新工具,新流程,新测试设计方法都在不断更新,需要掌握和学习很多测试知识。所以,具有编程经验的程序员不一定是一名优秀的测试工程师。软件测试包括测试技术和管理两个方面,完全掌握这两个方面的内容,需要很多测试实践经验和不断学习精神。

误区之四:软件自动测试效率高,将取代软件手工测试

近年来,软件测试自动化技术的研究取得了很大进步,市场出现了一些商业化的专用自动测试工具,并且已经成功地应用在某些软件的自动化测试过程中。自动测试具有测试效率高、人工干涉少、灵活方便等优点。但是,自动测试技术的仍然处于不断发展中,当前市场上的自动测试工具仍然只能满足某些软件的部分测试特性,应用范围受到限制,需要针对被测软件,单独编写和调试比较复杂的测试脚本,而且自动测试工具价格通常十分昂贵,非一般软件公司可以购买的起。在当前的软件测试领域,测试工程师的手工测试仍然处于十分重要的地位,目前软件自动测试仅是手工测试的辅助手段。由于软件自身的复杂性和灵活性,而高度发达的人类思维的优势,决定了无论自动测试技术多么发达,手工测试将不会消失。

误区之五:软件测试是测试人员的事情,与程序员无关

开发和测试是相辅相成的过程,需要软件测试人员、程序员和系统分析师等保持密切的联系,需要更多的交流和协调,以便提高测试效率。另外,对于单元测试主要应该由程序员完成,必要时测试人员可以帮助设计测试样例。对于测试中发现的软件错误,很多需要程序员通过修改编码才能修复。程序员可以通过有目的的分析软件错误的类型、数量,找出产生错误的位置和原因,以便在今后的编程中避免同样的错误,积累编程经验,提高编程能力。

误区之六:项目进度吃紧时少做些测试,时间富裕时多做测试

这是不重视软件测试的表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。一个软件项目的顺利实现需要有合理的项目进度计划,其中包括合理的测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单的缩短测试时间、人力和资源。因为缩短测试时间带来的测试不完整,对项目质量的下降引起的潜在风险,往往造成更大的浪费。克服这种现象的最好办法是加强软件过程的计划和控制,包括软件测试计划、测试设计、测试执行、测试度量和测试控制。

误区之七:软件测试是没有前途的工作,只有程序员才是软件高手

由于我国软件整体开发能力比较低,软件过程很不规范,很多软件项目的开发都还停留在“作坊式”和“垒鸡窝”阶段。项目的成功往往靠个别全能程序员决定,他们负责总体设计和程序详细设计,认为软件开发就是编写代码,给人的印象往往是程序员是真正的牛人,具有很高的地位和待遇。因此,在这种环境下,软件测试很不受重视,软件测试人员的地位和待遇自然就很低了,甚至软件测试变得可有可无。随着市场对软件质量的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和待遇将会逐渐提高。在微软等软件过程比较规范的大公司,软件测试人员的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至比程序员还要高。软件测试将会成为一个具有很大发展前景的行业,软件测试大有前途,市场需要更多具有丰富测试技术和管理经验的测试人员,他们同样是软件专家
转自:http://junzhongxu.cnblogs.com/

DEDE(织梦)CMS添加迅雷专用下载链接的方法

首先声明,本文受到了落伍者论坛新人交流投稿栏目皮皮虎老兄一文的启发,可以说,俺的方法和他的方法大同小异,但代码不同,我用他提供的代码试了下,不能成功(或许是我太笨吧),谢谢皮皮虎。闲言不说,书归正传。

对于一个下载网站来说,要想赢利,现在有两个途径,一种方法当然是挂广告了,现在很多人、很多网站都在做,不再啰嗦。另一种方法就是立足网站实际,利用自己的网站资源,通过下载挣点银子。当然了,想从访问者口袋中掏,肯定不太现实,你不免费,肯定有免费的,除非你能提供独一无二的资源,但你能吗?呵呵。好在现在有了什么“迅雷下载联盟”和“FlashGET下载联盟”等等。我们只要加入这些下载联盟,把我们网站上的那些普通下载链接转化成它们特有的下载链接,只要有人通过专有下载链接下载了资源,下载联盟就会付银子给我们,虽然报酬极低,一般是0.003-0.005元/下载,少是少了点,但总比没有好吧,如果你的下载量足够大的话,收入也是很可观的哟。或许有人会说,迅雷是盗链大王,加入它,是与虎谋皮,但你不加入它,它就不盗链你的资源了吗?前段时间我为了防迅雷,用了个防盗链软件,防是防住了,但网站资源消耗极度严重,几乎死掉。更何况现在的WEB迅雷是防不住的,与其防不胜防,还不如加入它,利用它挣点小钱呢。
下面我就把我的网站添加迅雷下载专用链接的方法总结一下,算是献给广大织梦爱好者的一份礼物吧。(FLASHGET代码添加方法类似,不再多说)
先看效果:酷宝库--下载频道:http://www.kubaoku.cn/html/xiazaipindao/index.html,你可以随便点开一个资源参观一下,如果你觉得不好,下面就不用看了啊,嘿嘿。

第一步:加入迅雷联盟,获取ID和代码:

要想通过下载挣点散碎银子,当然首先要参加“迅雷联盟”了,到http://union.xunlei.com注册申请一下,只要你的网站没有什么大问题,一般都会在一个星期内通过的,申请的方法不再多说,按照网页上的提示一步步操作就行了。
申请成功后,迅雷会给你一个ID,这个就是你挣银子的凭据了。另外还有网页代码和一个附件。说实话,提供代码的网页那真叫一个乱,且没有针对性的清楚的说明文字。最起码刚开始我是看着那个页面,头大了好几圈。
我们用的是它的JS代码,就是网页上给你的JAVA SCRIPT代码,可不是什么PHP代码哟。如果你能信得过我,只要把你的ID记住,把那个附件下载下来就行了,代码就用我提供的好了,当然如果你有疑虑,把我提供的代码和它给你的代码比较一下也未尝不可,害人之心不可有,防人之心不可无嘛。

第二步:建立专用文件夹:

把JAVA SCRIPT代码栏提供的附件下载下来,解压会得到一个JS文件夹,文件夹中有两个文件:base64.js和thunderhref.js,把这个JS文件夹上传到你网站的根目录下。注意是JS文件夹,不要只传文件。

第三步:更改channel_downlinks.htm的代码:(友情提醒:在更改之前,强烈建议你做一个备份,以防万一)

用FTP工具登录你的网站,把“你的网站/templets/system/channel/channel_downlinks.htm”下载到本地计算机上,用Dreamweaver在它的代码视图下找开它,(如果没有Dreamweaver话,下载一个吧,做网站没有它,怎么行呢,下载地址:http://www.kubaoku.cn/html/bianchengwangluo/20070609/617.html。)
把它原来的代码“·~server~
”删除,换成下面的代码:

·




如果不放心的话,可以对比一下迅雷给你的JAVA SCIRPT代码哟,防止我黑你。呵呵。
当然现在的代码还是针对我的网站的,你要放到你的网站上我是没意见的,替我打工了,嘎嘎。不想替我打工的话,你还需要:
1、把代码中的“www.kubaoku.cn”换成你的网站名;
2、把var thunder_pid = "联盟ID";
换好了吧,搞定了吧,保存吧。然后上传到“你的服务器/templets/system/channel/”目录下,覆盖同名文件,现在再到DEDE后台生成一下下载页面试试,(一定要重新生成页面哈),原来的下载链接变成了“迅雷专用链接”了吧,现在如果你不用迅雷,是下载不了的。
好了,今天到此结束,你就在家坐着等着收银子吧。
转自:http://bbs.dedecms.com/read.php?tid=24690

2008年10月30日星期四

QQ上最牛的离线留言消息

你好.我去杀几个人,很快回来.

  我去后山和黑山老妖研究吃唐僧的事,有事回来再说

  便秘中。。。。。勿搅。。。

  你终于来啦,我找你N年了,去火星干什么了?我现在去冥王星,回头跟你说个事,别走开啊


  您所呼叫的用户尚未安装OICQ......


  你呼叫的人现在不在,当你听到硬盘“咔”的一声,请对着鼠标留言,谢谢......


  主人不在。到哪儿去了?就……就是不告诉你!真要找的话,请按住电脑power


  键4秒钟后留言……


  该用户没有回应,可能用户忙,请稍候再试。或按Ctrl+Alt+Del返回.


  自杀中,稍后再说...


  DD有事找我请大叫!


  DD你现在连接到的是海狼的冰箱,放入食物后请断线,谢谢合作。


  DD我正在下五子棋,上次分心把裤子输光了。这次再输会被拍裸照!我可不想让人看见,等这盘下完了一定回你。


  1.嘀,这里是自动应答,MM请再发一次,我就与你联系;JJ请再发两次,我就与你联系;GG、DD就不要再发了,因为发了也不和你联系!


  2.腾讯服务器系统崩溃,请稍后再试!


  3.计算机正在处理你的信息,请稍侯,如果长时间没有响应,请重新启动计算机!


  你好,现在我在玩一个叫cs(或其他)的游戏,有事请按下电脑上“RESET”键,在听到“嘀”一声之后留言,谢谢


  你有权保持沉默,你所说的一切都将被作为存盘记录。你可以请代理服务器,如果请不起网络会为你分配一个。


  您使用的OICQ是未注册版本。您可以继续使用本软件,但将屏蔽发送短信息的功能。支持国产软件,请您注册新版!


  广告之后,马上回来!&
  正在澡澡哦~~不要偷看~~~


  嗯~啊~~嗯~啊~~~


  在加本人为好友前请详细阅读以下条款:1.未满18岁者请在父母指导下与本人聊天;2.非专业聊天人士.不承担主动招呼义务;3.谢绝我问你答制.在本人不回复的情况下请自觉停止一切信息


  你所呼叫的用户正在系统整理,请稍后再呼


  此人正在被国际刑警组织全球范围内通缉 如果您有此人的消息,请拨打当地报警电话 120,请对着电话说如下密语言:我真的不是疯子,我不是疯子我真的不是疯子。然后汇报你的所在地。 谢谢合作。我们的专业人员会去保护您的安全。


  您的QQ已经中了我安插的病毒,请不断向本人发信,否则本人一有闲暇立刻动手!


  洗澡中~谢绝旁观!!^_^0


  您好,OICQ今天休假,我是NETANTS……


  由于大气电离层影响,与该用户的卫星连接已中断,请稍后再试。


  对不起,由于服务器的原因,您刚才发的信息丢失,请重发一面。


  1.机主正在裸奔


  2.机主已奔出服务区


  我很忙,也很困,也很无奈,于是我决定跳楼


  正在格式化你的硬盘,请稍候……


  你知道什么是“铛铛铛铛”吗?铛铛铛铛 就是only you~~~


  唉呀~你可真调皮!你看,我话还没说完你又来了~~


  嗨~我现在不在,如果有事请在听到“逼”的一声后留言······逼!


  对不起,网路不通,请重新发送...


  你要机主不在,请等到“嘟~”声后拿起鼠标留言。。。


  1.对不起,您所呼叫的用户不在计算机旁,请你现在立刻猛击你的显示器直到它冒火花为止,听到响声后我会给你回复


  2.你好。这是腾讯服务中心自动回复。收到这条信息表明您的**作系y出了问题。请按Ctrl+Shift+Del


  3.您所呼叫的用户先不再服务区内……可能是网络不通…想解决此类问题…请您将头用力撞向显示器……以保证网络通畅……


  本人现在位置:WC,姿势:下蹲 脸部:抽搐 状态:用力中。。。。


  注意:使用腾讯移动qq的用户可能无法立即获取你的留言。


  我去吃饭了,如果你是帅哥,请一会联系我,如果你是美女……………………………就算你是美女,我也要先吃饱肚子啊


  你要和我说话?你真的要和我说话?你确定自己想说吗?你一定非说不可吗?那你说吧,这是自动回复,反正我看不见


  你好 我是XXX的自动回复 现在他不在 跟我说什么我也就这几句


  最近忙于讨债!如果你是还钱的请您用12345@haha365.net找我(来信必复)!如果你是要账的用123@163.net找我(密码目前还未找到)!


  错误403:重新启动可能会解决此问题。有疑问请拨打010-110110,接通后请打骂一声“傻比”才会有人接听


  收到信息后,,木马已经在工作。



  如果在一分钟之内,你还不下线,嘿嘿~~~~~~我就不好意思拉~


  我是XX的狗,XX现在不在,他一会儿就回来,如果你愿意,我可以陪你聊会儿

  你有权保持沉默,你所说的一切都将被作为存盘记录。你可以请代理服务器,如果请不起网络会为你分配一个

移动老总上厕所

"干什么的?"看厕所的大婶喊。
  "我是移动老总,我内急。"
  "你不知道现在什么都要收费啊?"大婶。
  "行,多少钱?"
  "进去5毛,出来3毛。"大婶看着他。
  "什么出来也要收费?"老总瞪着眼睛。
  "看什么看,我们这里实行双向收费。如果你办个厕所套餐的话,就可以单向收费了。 "
  "行,我付钱。"老总掏出十块钱。
  "大便还是小便?"大婶捏住钱问。"
  "大便,快点。"
  "恩,你需要办理套餐吗?如果你一次性大便五十次,可以给你优惠再大便三十次。"大婶说。
  "别说了,我先进去,马上出来付钱。"老总进去后,选择了最后一个坑位爽了好久后出来了。 .
  "先生,您选择的是五号坑位,得付选号费用5毛钱,你在里面呆的时候没有说不要选择放音乐,所以
  每次收费6毛钱。另外你在里面蹲了十五分零一秒,前一分钟按5毛每分钟计费,后面按每分钟四毛计费。
  不足一分钟按一分钟计费。另外由于你的排泄量占用了我们的下水道宽带,所以请你另外按包月付出费用元。
  最后你可以通过小孔看到进厕所的其他人,请付来人显示费1块钱。"老总已经呆在那里。
  "所以,老总先生,我们这里不刷卡,总共你要付59.4元钱,如果逾期不交纳,按每日千分之三的费用
  计滞纳金,我方不另行通知,到积累到千元我方将通过法律手段催缴"。
  大婶刚刚说完,移动老总"扑通"一声晕倒在小便池里!!老总说还有王法吗 ?
  大婶说 :我的地盘我做主!