理论上讲,做软件测试的要求有什么就要懂什么,不是什么人都可以做的。但实际上测试工程师是有初、中、高三级之分的。而初级工程师所需要的知识不多,一般只需要学过简单的理论即可。中、高级相信需要一段过渡时期的,它们都必须以工具为主。
至于教材,可以说所有的计算机教材都是其中的一部分,就差你是什么方向的测试工作。一般来说,开始的时候,你只需要一本《软件测试理论》入门即可。有空可以看看《测试的艺术》一书(得益网有得下载)。
什么数据库\开发语言,这些与软件测试都是什么关系???
至于这个问题,首先要说明,软件测试一般可分为:单元测试、集成测试、系统测试、验收测试。单元测试一方面是直接对代码进行直读,所以它要求必需懂得开发语言,另一方面它要写驱动和桩,所以也要懂开发语言。(一般单元测试都是要开发人员扶助的)。而数据库,简单来说每当我们要验证一条记录的所有信息是否完整,都需要进入数据库中查看,查看是否有漏某个字段;而从更高层次来讲,它涉及到系统性能调优问题。
软件测试工程师需要具备哪些技能?
1、软件工程技能 你必须了解软件软件工程(设计、开发和简单测试),应用,系统,自动测试编程,及操作系统,数据库,网络系统和协议的设计和使用。
2、交流技巧 如果想确定软件缺陷,你应当能够指出什么时候的缺陷算是缺陷。
3、组织技能 如果你在别人都头脑发昏的时候保持清醒,你就可能是一个好的软件测试工程师。在网络时代软件测试是一项有压力的复杂性工作,但如果你能从这些纷繁中找到一种途径,它就是一项回报丰厚的事业。
4、实践技能 当一个工作需要经验,而你又需要一个工作去丰富你的经验时该怎么办?这并不完全是一个两难的问题,你可能采用几种方式去获得实际经验。
5、态度 除了技术水平,你需要理解和采取适当的态度去做软件测试。
1)熟悉计算机基础知识; (2)熟悉操作系统、数据库、中间件、程序设计语言基础知识; (3)熟悉计算机网络基础知识; (4)熟悉软件工程知识,理解软件开发方法及过程; (5)熟悉软件质量及软件质量管理基础知识; (6)熟悉软件测试标准; (7)掌握软件测试技术及方法; (8)掌握软件测试项目管理知识; (9)掌握C语言以及C++或Java语言程序设计技术; (10)了解信息化及信息安全基础知识; (11)熟悉知识产权相关法律、法规; (12)正确阅读并理解相关领域的英文资料。
通过本考试的合格人员能在掌握软件工程与软件测试知识的基础上,运用软件测试管理方法、软件测试策略、软件测试技术,独立承担软件测试项目;具有工程师的实际工作能力和业务水平。
1)熟悉计算机基础知识;
(2)熟悉操作系统、数据库、中间件、程序设计语言基础知识;
(3)熟悉计算机网络基础知识;
(4)熟悉软件工程知识,理解软件开发方法及过程;
(5)熟悉软件质量及软件质量管理基础知识;
(6)熟悉软件测试标准;
(7)掌握软件测试技术及方法;
(8)掌握软件测试项目管理知识;
(9)掌握C语言以及C++或Java语言程序设计技术;
(10)了解信息化及信息安全基础知识;
(11)熟悉知识产权相关法律、法规;
(12)正确阅读并理解相关领域的英文资料。
通过本考试的合格人员能在掌握软件工程与软件测试知识的基础上,运用软件测试管理方法、软件测试策略、软件测试技术,独立承担软件测试项目;具有工程师的实际工作能力和业务水平。
第一章1、软件测试的定义:IEEE给出的定义——软件测试是使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。
《软件测试技术基础》——软件测试是为了尽快尽早地发现在软件产品中所存在的各种软件缺陷而展开的贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程。2、软件测试的目的软件质量:1.发现系统的错误2. 验证系统是否满足需求3. 为产品放行提供依据4. 改进开发流程对于企业来说:回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。
测试的重要目的之一:发现软件中的缺陷3、软件测试对象阶段性文档(1 2 3):1需求规格说明书 2概要设计规格说明书 3详细设计规格说明书4源程序 5系统最终产品文档(6 7):6用户手册 7帮助文档4、软件质量保证人员与软件测试人员同:两个岗位旨在提高软件的质量异:软件测试人员SQC1关心过程的产物2剖析开发出的软件质量保证人员SQA1全面质量管理 2过程改进5、软件测试的原则1.所有的软件测试都应追溯到用户需求2.尽早地、不断地进行测试3.严格执行测试计划4.注重测试用例的设计5.程序员应该避免测试自己的程序6.增量测试,由小到大7.注意集群现象(二八定理)8.完全测试是不可能的9.测试维护集群现象(二八定理)Pareto原则:测试发现的错误中80%很可能起源于20%的模块中。6、测试用例IEEE标准610(1990)的定义:测试用例是一组测试输入、执行条件和预期结果的集合。
其目的是要满足一个特定的目标,比如执行一条特的程序路径或检验是否符合一个特定的需求。一组测试用例包含:1、用例的编号 2、测试标题 3、用例级别 4、预置条件5、操作步骤 6、预期结果7、软件测试环境软件测试环境= 软件+ 硬件+ 网络+ 历史数据8、软件缺陷软件从需求、设计、编码、测试一直到交付用户公开使用后的过程中,都可能产生和发现缺陷。
需求阶段最多,运行维护时花费代价最高。9、软件测试分类1)、按测试技术上分类(是否查看代码)黑盒测试:在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规 定正常用。
也被称为功能测试或数据驱动测试。白盒测试(测试代码):要完全了解程序结构和处理过程,它按照程序内部逻辑测试程序,检验程序中每条通路是否按预定要求正确工作。
也被称为结构测试或逻辑驱动测试。灰盒测试:介于黑盒测试与白盒测试之间的测试,即要像黑盒测试那样关注输出对于输入的正确性;同时也关注内容表现,但这种关注不像白盒测试那样详细、完整,只是通过一些表征性的现象、事件、标志判断内部的运行状态。
避免过度测试,精简冗余用例。2)、按测试方式上分类(是否运行程序)静态测试:是指不运行程序,对程序和文档进行分析与检查;静态测试技术又称为静态分析技术。
信息技术的飞速发展,使软件产品应用到社会的各个领域,软件产品的质量自然成为人们共同关注的焦点。
不论软件的生产者还是软件的使用者,均生存在竞争的环境中,软件开发商为了占有市场,必须把产品质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰出局。 用户为了保证自己业务的顺利完成,当然希望选用优质的软件。
质量不佳的软件产品不仅会使开发商的维护费用和用户的使用成本大幅增加,还可能产生其他的责任风险,造成公司信誉下降,继而冲击股票市场。在一些关键应用 (如民航订票系统、银行结算系统、证券交易系统、自动飞行控制软件、军事防御和核电站安全控制系统等) 中使用质量有问题的软件,还可能造成灾难性的后果。
软件危机曾经是软件界甚至整个计算机界最热门的话题。为了解决这场危机,软件从业人员、专家和学者做出了大量的努力。
现在人们已经逐步认识到所谓的软件危机实际上仅是一种状况,那就是软件中有错误,正是这些错误导致了软件开发在成本、进度和质量上的失控。 有错是软件的属性,而且是无法改变的,因为软件是由人来完成的,所有由人做的工作都不会是完美无缺的。
问题在于我们如何去避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度。 给软件带来错误的原因很多,具体地说,主要有如下几点: ①、交流不够、交流上有误解或者根本不进行交流 在应用应该做什么或不应该做什么的细节(应用的需求)不清晰的情况下进行开发。
②、软件复杂性 图形用户界面(gui),客户/服务器结构,分布式应用,数据通信,超大型关系型数据库以及庞大的系统规模,使得软件及系统的复杂性呈指数增长,没有现代软件开发经验的人很难理解它。 ③、程序设计错误 向所有的人一样,程序员也会出错。
④、需求变化 需求变化的影响是多方面的,客户可能不了解需求变化带来的影响,也可能知道但又不得不那么做。需求变化的后果可能是造成系统的重新设计,设计人员的日程的重新安排,已经完成的工作可能要重做或者完全抛弃,对其他项目产生影响,硬件需求可能要因此改变,等等。
如果有许多小的改变或者一次大的变化,项目各部分之间已知或未知的依赖性可能会相互影响而导致更多问题的出现,需求改变带来的复杂性可能导致错误,还可能影响工程参与者的积极性。 ⑤、时间压力 软件项目的日程表很难做到准确,很多时候需要预计和猜测。
当最终期限迫近和关键时刻到来之际,错误也就跟着来了。 ⑥、自负人更喜欢说:'没问题','这事情很容易','几个小时我就能拿出来' 太多不切实际的‘没问题’,结果只能是引入错误。
⑦、代码文档贫乏 贫乏或者差劲的文档使得代码维护和修改变的异常艰辛,其结果是带来许多错误。 事实上,在许多机构并不鼓励其程序员为代码编写文档,也不鼓励程序员将代码写得清晰和容易理解,相反他们认为少写文档可以更快的进行编码,无法理解的代码更易于工作的保密(“写得艰难必定读的痛苦”)。
⑧、软件开发工具 可视化工具,类库,编译器,脚本工具,等等,它们常常会将自身的错误带到应用软件中。 就象我们所知道的,没有良好的工程化作为基础,使用面向对象的技术只会使项目变得更复杂。
为了更好地解决这些问题,软件界做出了各种各样的努力。 人们曾经认为更好的程序语言可以使我们摆脱这些困扰,这推动了程序设计语言的发展,更多的语言开始流行,为了使程序更易于理解开发了结构化程序设计语言,如pl/1,pascal等;为了解决实时多任务需求开发了结构化多任务程序设计语言,如modula,ada等;为了提高重用性开发了面向对象的程序设计语言,如simlasa等;为了避免产生不正确的需求理解,开发形式化描述语言,如hal/s等,这使得建立基于自然语言的描述成为可能,人们以形式化语言来描述需求;为了支持大型数据库应用,开发了可视化工具,如visual studio、power builder等。
程序语言对提高软件生产效率起到了一定的积极作用,但它对整个软件质量尤其是可靠性的影响,与其他因素相比作用较小。 可能是因为程序语言基于严格的语法和语义规则,人们企图用形式化证明方法来证明程序的正确性。
将程序当作数学对象来看待,从数学意义上证明程序是正确的是可能的。 数学家对形式化证明方法最有兴趣,在论文上谈起来非常吸引人,但实际价值却非常有限,因为形式化证明方法只有在代码写出来之后才能使用,这显然太迟了,而且对于大的程序证明起来非常困难。
受到其他行业项目工程化的启发,软件工程学出现了,软件开发被视为一项工程,以工程化的方法来进行规划和管理软件的开发。 针对需求不确定的应用,可以使用渐进和迭代类的开发模型。
还可以采用快速应用程序开发(rad)和协同应用程序开发(jad)技术,由软件开发者和用户代表共同参与开发软件规范。rad和jad的基本思路是开发者和用户共同设计系统中的屏幕,开发者迅速地把实现这些屏幕的最基本功能编写好,然后把它们交给用户看,然后用户和开发者回顾这些屏幕以确认它们达到了用户的要求,这个周期一直持续到系统的基本部分。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:3.496秒