软件测试与软件实施有什么区别
语言弱的话,就继续做实施吧你做实施前期肯定是要到处跑的 ,等你混到一定档次了,也可以去甲方做信息化实施,那样基本上天天办公室了。
但是前提是你有一定的底子了。
前途。
。
测试的做着做着慢慢都会转开发,开发慢慢就都来钱了,其实都差不多,如果你专心努力做的话。
软件实施和软件测试的前景
软件开发中出现错误或缺陷的机会越来越多,市场对软件质量重要性的认识逐渐增强。
所以,软件测试在软件项目实施过程中的重要性日益突出。
但是,现实情况是,与软件编程比较,软件测试的地位和作用,还没有真正受到重视,对于很多人(甚至是软件项目组的技术人员)还存在对软件测试的认识误区,这进一步影响了软件测试活动开展和真正提高软件测试质量。
(1)误区之一:软件开发完成后进行软件测试 人们一般认为,软件项目要经过以下几个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。
据此,认为软件测试只是软件编码后的一个过程。
这是不了解软件测试周期的错误认识。
软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。
因此,软件测试贯穿于软件项目的整个生命过程。
在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。
软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。
软件开发与软件测试应该是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试。
如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。
更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,如果要修复该类错误,将会耗费大量的时间和人力。
(2)误区之二:软件发布后如果发现质量问题,那是软件测试人员的错 这种认识很打击软件测试人员的积极性。
软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因为从根本上讲,软件测试不可能发现全部的错误。
从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。
出现软件错误,不能简单地归结为某一个人的责任,有些错误的产生可能不是技术原因,可能来自于混乱的项目管理。
应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。
(3)误区之三:软件测试要求不高,随便找个人做都行.,,,....很多人都认为软件测试就是安装和运行程序,点点鼠标,按按键盘的工作。
这是由于不了解软件测试的具体技术和方法造成的。
随之软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。
软件测试技术不断更新和完善,新工具,新流程,新测试设计方法都在不断更新,需要掌握和学习很多测试知识。
所以,具有编程经验的程序员不一定是一名优秀的测试工程师。
软件测试包括测试技术和管理两个方面,完全掌握这两个方面的内容,需要很多测试实践经验和不断学习精神。
(4)误区之四:软件测试是测试人员的事情,与程序员无关 开发和测试是相辅相成的过程,需要软件测试人员、程序员和系统分析师等保持密切的联系,需要更多的交流和协调,以便提高测试效率。
另外,对于单元测试主要应该由程序员完成,必要时测试人员可以帮助设计测试样例。
对于测试中发现的软件错误,很多需要程序员通过修改编码才能修复。
程序员可以通过有目的的分析软件错误的类型、数量,找出产生错误的位置和原因,以便在今后的编程中避免同样的错误,积累编程经验,提高编程能力。
(5)误区之五:项目进度吃紧时少做些测试,时间富裕时多做测试 这是不重视软件测试的表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。
一个软件项目的顺利实现需要有合理的项目进度计划,其中包括合理的测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单的缩短测试时间、人力和资源。
因为缩短测试时间带来的测试不完整,对项目质量的下降引起的潜在风险,往往造成更大的浪费。
克服这种现象的最好办法是加强软件过程的计划和控制,包括软件测试计划、测试设计、测试执行、测试度量和测试控制。
(6)误区之六:软件测试是没有前途的工作,只有程序员才是软件高手 由于我国软件整体开发能力比较低,软件过程很不规范,很多软件项目的开发都还停留在“作坊式”和“垒鸡窝”阶段。
项目的成功往往靠个别全能程序员决定,他们负责总体设计和程序详细设计,认为软件开发就是编写代码,给人的印象往往是程序员是真正的牛人,具有很高的地位和待遇。
因此,在这种环境下,软件测试很不受重视,软件测试人员的地位和待遇自然就很低了,甚至软件测试变得可有可无。
随着市场对软件质量的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和待遇将会逐渐提高。
在软件过程比较规范的大公司,软件测试人员的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至比程序员还要高。
软件测试将会成为一个具有很大发展前景的行业,软件测试大有前途,市场需要更多具有丰富测试技术和管理经验的测试人员,他们同样是软件专家。
程序测试的过程具有破坏性 人类的活动具有高度的目的性,建立适当的目标具有重要的心理作用。
如果我...
软件测试基本理论?
软件测试概念:通过各种手段和测试工具,判断软件系统是否能够满足预期期望。
从软件开发的过程按阶段划分有 A.单元测试 B.集成测试 C.确认测试 D.系统测试 E.验收测试 * 测试过程按4个步骤进行,即单元测试、集成测试、确认测试和系统测试及发版测试。
* 开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。
* 集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。
* 确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。
* 系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。
单元测试 (Unit Testing) * 单元测试又称模块测试,是针对软件设计的最小单位 — 程序模块,进行正确性检验的测试工作。
其目的在于发现各模块内部可能存在的各种差错。
* 单元测试需要从程序的内部结构出发设计测试用例。
多个模块可以平行地独立进行单元测试。
1. 单元测试的内容 * 在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。
(1) 模块接口测试 * 在单元测试的开始,应对通过被测模块的数据流进行测试。
测试项目包括: – 调用本模块的输入参数是否正确; – 本模块调用子模块时输入给子模块的参数是否正确; – 全局量的定义在各模块中是否一致; * 在做内外存交换时要考虑: – 文件属性是否正确; – OPEN与CLOSE语句是否正确; – 缓冲区容量与记录长度是否匹配; – 在进行读写操作之前是否打开了文件; – 在结束文件处理时是否关闭了文件; – 正文书写/输入错误, – I/O错误是否检查并做了处理。
(2) 局部数据结构测试 * 不正确或不一致的数据类型说明 * 使用尚未赋值或尚未初始化的变量 * 错误的初始值或错误的缺省值 * 变量名拼写错或书写错 * 不一致的数据类型 * 全局数据对模块的影响 (3) 路径测试 * 选择适当的测试用例,对模块中重要的执行路径进行测试。
* 应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。
* 对基本执行路径和循环进行测试可以发现大量的路径错误。
(4) 错误处理测试 * 出错的描述是否难以理解 * 出错的描述是否能够对错误定位 * 显示的错误与实际的错误是否相符 * 对错误条件的处理正确与否 * 在对错误进行处理之前,错误条件是否已经引起系统的干预等 (5) 边界测试 * 注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。
对这些地方要仔细地选择测试用例,认真加以测试。
* 如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。
2. 单元测试的步骤 * 模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。
– 驱动模块 (driver) – 桩模块 (stub) —— 存根模块 * 如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。
必须对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。
* 对支持某些标准规程的程序,更要着手进行互联测试。
有人把这种情况特别称为模块测试,以区别单元测试。
集成测试(Integrated Testing) * 集成测试 (集成测试、联合测试) * 通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。
这时需要考虑的问题是: – 在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失; – 一个模块的功能是否会对另一个模块的功能产生不利的影响; – 各个子功能组合起来,能否达到预期要求的父功能; – 全局数据结构是否有问题; – 单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。
在单元测试的同时可进行集成测试, 发现并排除在模块连接中可能出现 的问题,最终构成要求的软件系统。
* 子系统的集成测试特别称为部件测试,它所做的工作是要找出集成后的子系统与系统需求规格说明之间的不一致。
* 通常,把模块集成成为系统的方式有两种 – 一次性集成方式 – 增殖式集成方式 1. 一次性集成方式(big bang) * 它是一种非增殖式组装方式。
也叫做整体拼装。
* 使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。
2. 增殖式集成方式 * 这种集成方式又称渐增式集成 * 首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统 * 在集成的过程中边连接边测试,以发现连接过程中产生的问题 * 通过增殖逐步组装成为要求的软件系统。
(1) 自顶向下的增殖方式 * 这种集成方式将模块按系统程序结构,沿控制层次自顶向下进行组装。
* 自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。
* 选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。
...
测试策略和测试计划的区别?
区别在于:测试策略相当于指导思想,测试计划相当于实践方法。
详细区别:测试计划定义:”一个叙述了预定的测试活动的范围、途径、资源及进度安排的文档。
它确认了测试项、被测特征、测试任务、人员安排,以及任何偶发事件的风险。
”内容:产品概述、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等。
注意项:1. 明确测试的目标,增强测试计划的实用性;2. 坚持“5W”规则,明确内容与过程。
利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where);3. 采用评审和更新机制,保证测试计划满足实际需求;4. 分别创建测试计划与测试详细规格、测试用例。
测试策略定义:在一定的软件测试标准、测试规范的指导下,依据测试项目的特定环境约束而规定的软件测试的原则、方式、方法的集合。
内容:实施的测试类型和测试的目标、实施测试的阶段、技术、用于评估测试结果和测试是否完成的评测和标准、对测试策略所述的测试工作存在影响的特殊事项等内容。
注意项:a.基于测试技术的测试策略的要点:著名测试专家给出了使用各种测试方法的综合策略:任何情况下都必须使用边界值测试方法;必要时使用等价类划分方法补充一定数量的测试用例;对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,看是否达到了要求;如果程序功能规格说明中含有输入条的组合情况,则已开始可以选择因果图方法。
b.基于测试方案的测试策略:对于基于测试方法的测试策略,一般来说应该考虑如下方面:根据程序的重要性和一旦发生故障将造成的损失来确定它的测试等级和测试重点;认真研究,使用尽可能少的测试用例发现尽可能多的程序错误,避免测试过度和测试不足。
软件测试怎么样?薪水呢?
软件测试。
。
。
怎么说呢是这样,目前中国大多数企业的软件测试人员技术能力都不强,技术含量都不高,原因就在于,软件测试人员分成两种,QCE和QAE,这两者的不同之处就在于,设计和执行,注意我说的先后顺序。
你走访各大招聘会,你会发现,公司对于软件测试人员需求很大,他们要的不是一个只会按照安排做事的人,而是一个富有创造力的人。
要作软件测试很容易,要作软件测试也很难。
从我们公司的情况来讲,软件测试的地位比软件研发要差,但谁都不能否认软件测试在整个项目开发环节中的重要作用。
没有了测试环节,软件如何保障?你现在是开发人员,有编程基础,这很好,我建议你,一旦真去作了软件测试人员,千万不要让自己沉没。
不要作一个平庸的测试人员,不要只知道如何操作如何依据测试计划执行,一定要有创造力,自己开发测试小工具,找RD寻求项目代码进行白盒测试,自己修改已有测试计划,撰写更专业的测试计划,这样,你才会有前途。
肺腑之言,因为,我也是一名QA engineer.说一下薪水吧,在我们公司,测试人员和研发人员的薪资不是由职位划分的,而是由你的职级划分的,职级越高,当然工资越高。
而Coder在我们公司的薪水很低,原因在于,编码很容易,但项目设计实现和架构搭建很难,这需要更专业的知识才行,大致就是这样吧,QA不是低档职业,只要你能做好,一切皆有可能,你并不比别人差!
做软件开发和做实施哪个会比较好一点?
软件开发对程序语言要求比较高,软件实施对软件应用行业要求比较高。
区别:软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。
软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。
软件实施工程师的工作是软件产品服务主线的一个决定性环节,软件的成功离不开实施。
软件实施工程师需要负责工程实施: 包括常用操作系统、应用软件及公司所开发的软件安装、调试、维护,还有少部分硬件、网络的工作。
软件实施工程师需要负责现场培训: 现场软件应用培训; 协助项目验收; 负责需求的初步确认; 负责项目维护。
软件工程师:软件工程师英文是Software Engineer,是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。
软件工程师是从事软件开发相关工作的人员的统称。
它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。
软件工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)等,还有诸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING等前沿技术。
此外,关于网络工程和软件测试的其他技术也要有所涉猎。
软件测试工具????
五类测试工具1.负载压力测试工具 这类测试工具的主要目的是度量应用系统的可扩展性和性能,是一种预测系统行为和性能 的自动化测试工具。
在实施并发负载过程中,通过实时性能监测来确认和查找问题,并针对所 发现问题对系统性能进行优化,确保应用的成功部署。
负载压力测试工具能够对整个企业架构 进行测试,通过这些测试,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布 周期。
2.功能测试工具 通过自动录制、检测和回放用户的应用操作,将被测系统的输出记录同预先给定的标准结 果比较,功能测试工具能够有效地帮助测试人员对复杂的企业级应用的不同发布版本的功能进 行测试,提高测试人员的工作效率和质量。
其主要目的是检测应用程序是否能够达到预期的功 能并正常运行。
3.白盒测试工具 白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级。
根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。
静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接和生成可执行文件。
静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。
动态测试工具一般采用“插桩”的方式,在代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。
它与静态测试工具最大的不同是,动态测试工具要 求被测系统实际运行。
4.测试管理工具 一般而言,测试管理工具对测试需求、测试计划、测试用例、测试实施进行管理,并且测 试管理工具还包括对缺陷的跟踪管理。
测试管理工具能让测试人员、开发人员或其他的IT人员 通过一个中央数据仓库,在不同地方就能交互信息。
5.测试辅助工具 这些工具本身并不执行测试,例如它们可以生成测试数据,为测试提供数据准备。
IT测试工具集锦 Radview TestView系列 Radview公司的TestView系列Web性能测试工具和WebLoad Analyzer性能分析工具,旨在测 试Web应用和Web服务的功能、性能、程序漏洞、兼容性、稳定性和抗攻击性,并且能够在测试 的同时分析问题原因和定位故障点。
整套Web性能测试和分析工具包含两个相对独立的子系统:Web性能测试子系统Web性能分析子系统。
其中Web性能测试子系统包含3个模块:TestView Manager、WebFT以及WebLoad。
Web性能分析子系统只有WebLoad Analyzer。
左图表达了在一个完整的测试系统中,TestView Manager用来定制、管理各种测试活动; WebLoad模拟多个用户行为进行测试,所测试的是系统性能,容量,稳定性和抗攻击性;WebFT 模仿单一用户行为进行测试,所测试的是系统功能,漏洞,兼容性和稳定性; WebLoad Analyzer对Web服务、中间件和数据库进行监控和分析,找出问题原因和故障点。
IBM Rational ClearQuest IBM Rational ClearQuest提供基于活动的变更和缺陷跟踪。
以灵活的工作流管理所有类型的变更要求,包括缺陷、改进、问题和文档变更。
能够方便地定制缺陷和变更请求的字段、流程、用户界面、查询、图表和报告。
拥有“设计一次,到处部署”的能力,从而可以自动改 变任何客户端界面(Windows、Linux、UNIX 和 Web)。
可与IBM WebSphere Studio、Eclipse 和Microsoft .NET IDE进行紧密集成,从而可以即时访问变更信息。
支持统一变更管理,以提供经过验证的变更管理过程支持。
易于扩展,因此无论开发项目的团队规模、地点和平台如 何,均可提供良好支持。
什么是软件测试,软件测试一般需要多少步骤
需求分析(Requirment Analyzing)应该说是软件测试的一个重要环节,测试开发人员对这一环节的理解程度如何将直接影响到接下来有关测试工作的开展。
可能有些人认为测试需求分析无关紧要,这种想法是很不对的。
需求分析不但重要,而且至关重要。
一般而言,需求分析包括软件功能需求分析、测试环境需求分析、测试资源需求分析等。
其中最基本的是软件功能需求分析,测一款软件首先要知道软件能实现哪些功能以及是怎样实现的。
比如一款Smartphone包括VoIP、Wi-Fi以及Bluetooth等功能。
那我们就应该知道软件是怎样来实现这些功能的,为了实现这些功能需要哪些测试设备以及如何搭建相应测试环境等,否则测试就无从谈起!既然谈了需求分析,那么我们根据什么来分析呢?总不能凭空设想吧。
总得说来,做测试需求分析的依据有软件需求文档、软件规格书以及开发人员的设计文档等,相信管理一些规范的公司在软件开发过程中都有这些文档。
测试计划 测试计划(Test Plan)一般由测试负责人来编写。
测试计划的依据主要是项目开发计划和测试需求分析结果而制定。
测试计划一般包括以下一些方面:1. 测试背景 a. 软件项目介绍;b. 项目涉及人员(如软硬件项目负责人等)介绍以及相应联系方式等。
2. 测试依据 a. 软件需求文档;b. 软件规格书;c. 软件设计文档;d. 其他,如参考产品等。
3. 测试资源 a. 测试设备需求;b. 测试人员需求;c. 测试环境需求;d. 其他。
4. 测试策略 a. 采取测试方法;b. 搭建哪些测试环境;c. 采取哪些测试工具以测试管理工具;d. 对测试人员进行培训等。
5. 测试日程 a. 测试需求分析;b. 测试用例编写;c. 测试实施,根据项目计划,测试分成哪些测试阶段(如单元测试、集成测试、系统测试阶段,α、β测试阶段等),每个阶段的工作重点以及投入资源等。
6. 其他。
测试计划还要包括测试计划编写的日期、作者等信息,计划越详细越好了。
计划赶不上变化,一份计划做的再好,当实际实施的时候就会发现往往很难按照原有计划开展。
如在软件开发过程中资源匮乏、人员流动等都会对测试造成一定的影响。
所以,这些就要求测试负责人能够从宏观上来调控了。
在变化面前能够做到应对自如、处乱不惊那是最好不过了。
测试设计 测试设计主要包括测试用例编写和测试场景设计两方面。
一份好的测试用例对测试有很好的指导作用,能够发现很多软件问题。
关于测试用例编写,请参见前面写的《也谈测试用例》一文,里面有详细阐述。
测试场景设计主要也就是测试环境问题了。
测试环境搭建 不同软件产品对测试环境有着不同的要求。
如C/S及B/S架构相关的软件产品,那么对不同操作系统,如Windows系列、unix、linux甚至苹果OS等,这些测试环境都是必须的。
而对于一些嵌入式软件,如手机软件,如果我们想测试一下有关功能模块的耗电情况,手机待机时间等,那么我们可能就需要搭建相应的电流测试环境了。
当然测试中对于如手机网络等环境都有所要求。
测试环境很重要,符合要求的测试环境能够帮助我们准确的测出软件问题,并且做出正确的断。
为了测试一款软件,我们可能根据不同的需求点要使用很多不同的测试环境。
有些测试环境我们是可以搭建的,有些环境我们无法搭建或者搭建成本很高。
不管如何,我们的目标是测试软件问题,保证软件质量。
测试环境问题,还是根据具体产品以及开发者的实际情况而采取最经济的方式吧。
测试执行 测试执行过程又可以分为以下阶段:单元测试→集成测试→系统测试→出厂测试,其中每个阶段还有回归测试等。
从测试的角度而言,测试执行包括一个量和度的问题。
也就是测试范围和测试程度的问题。
比如一个版本需要测试哪些方面?每个方面要测试到什么程度?从管理的角度而言,在有限的时间内,在人员有限甚至短缺的情况下,要考虑如何分工,如何合理地利用资源来开展测试。
当然还要考虑以下问题:1. 当测试人员测试的执行不到位、敷衍了事时该如何解决?2. 测试效率问题,怎样提高测试效率?3. 根据版本的不同特点是只做验证测试还是采取冒烟测试亦或是系统全面测试?4. 当测试过程中遇到一些偶然性随机问题该怎样处理?5. 当版本中出现很多新问题时该怎样对待?测试停止标准?
Oculus