软件测试工程师很闲
2016-07-08 15:58:01 wu631464569 阅读数 2653

日期: 2016-7-8:


内容: 测试工程师和软件测试工程师


起源: 最近在面试软件测试工程师方面的工作,今天在整理整理一下关于软件测试这方面的知识点。



一、 测试工程师:

1、 国内定位和发展前景:


测试工程师,软件质量的把关者,工作起点高,发展空间大。我国的软件测试职业还处于一个发展的阶段,
    所以测试工程师具有较大发展前景。
目前传统的软件行业还是以软件测试工程师为主,但是在新兴的互联网行业大多还是以QA来命名这个职
    位,也就是质量保证。

2、 工作职责:

①、编写测试计划、规划详细的测试方案、编写测试用例。


②、 根据测试计划搭建和维护测试环境;

③、 执行测试工作,提交测试报告。包括编写用于测试的自动测试脚本,完整地记录测试结果,编写完整的测试报告等相关的技术文档;


④、 对测试中发现的问题进行详细分析和准确定位,与开发人员讨论缺陷解决方案。


⑤、 提出对产品的进一步改进的建议,并评估改进方案是否合理;对测试结果进行总结与统计分析,对测试进行跟踪,并提出反馈意见。


⑥、 为业务部门提供相应技术支持,确保软件质量指标。


3、 职业特点:


开始工作即进入大、中型软件企业,后期转行也容易。


4、 职业待遇:


软件质量的把关者,人才凤毛麟角,薪酬上升空间非常大。
质量是企业的生命线,测试工程师作为软件质量的把关者,因为职位的重要而有较高的待遇就顺理成章了。另外,“物以稀为贵” 的市场规律也使得当前极为紧俏的测试工程师“钱景看好”。
并且我国的软件测试职业还处于一个发展的阶段,随着软件行业对产品质量重视程度的提高,受过系统培训、掌握先进测试技术的软件测试从业人员的薪酬上升空间大。从企业人才需求和薪金水平来看,软件测试工程师的年工资还有逐年上升的明显趋势。

5、 关于测试讨论的一片文章(http://www.csdn.net/article/2013-06-20/2815884-cmdn-29-panel)(如何做个有“钱”途的测试工程师?)


一些比较经典的意见:
软件测试工程师必须了解行业规范,企业规范,了解客户需求、业务流程,才能做从容的测试发现问题。




二、 软件测试工程师:




百度百科:

1、 定义和职责:



软件测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试,
检查软件有没有错误(Bug),测试软件是否具有稳定性(Robustness),写出相应的测试规范
和测试用例的专门工作人员。简而言之,软件测试工程师在一家软件企业中担当的是“质量
管理”角色,及时发现软件问题并及时督促更正,确保产品的正常运作。按其级别和职位的
不同,分为三类。

2、 分类:按其级别和职位的不同,可分为三类:


①、高级软件测试工程师:
熟练掌握软件测试与开发技术,且对所测试软件对口行业非常了解,能够
对可能出现的问题进行分析评估


②、中级软件测试工程师:
编写软件测试方案、测试文档,与项目组一起制定软件测试阶段的工作计
划,能够在项目运行中合理利用测试工具完成测试任务;


③、 初级软件测试工程师:
其工作通常都是按照软件测试方案和流程对产品进行功能测验,检察产品是否
有缺陷。

3、 提高测试质量的要诀:


另外一个值得注意的方面就是工作效率和质量,或许高级测试工程师与普通测试工程师
的主要区别在于高级测试工程师可以更快地发现更多软件中的严重错误。对此,有什么
可以借鉴的诀窍吗?请尝试以下方法,保证不会使您失望。


首先测试程序的核心功能,然后测试辅助功能。
首先测试功能,然后测试性能。
首先测试常见情况,然后测试异常情况。
首先测试经过变更的部分,然后测试没有变更的部分。
首先测试影响大的问题,然后测试影响小的问题。
首先测试必须测试的部分,然后测试可选或没有要求测试的部分。

4、 服务员:

需要强调的一点是,无论你是多么高级的测试工程师,都要明白无论测试需要的工具多么
复杂,测试步骤多么冗长,测试工程师在软件项目开发中始终都是扮演服务员的角色,这
是由测试工作的特点决定的。任何服务都有被服务对象—客户,测试工程师的服务对象有
哪些呢?


最重要的客户是软件的用户。测试工程师需要站在客户的使用和需求角度测试软件,报告
问题。


项目经理也是客户。测试工程师需要报告测试工作进度和发现的问题,尤其是严重的问题。


程序员是最经常打交道的客户。为了便于程序员重复报告的错误,尽量提供良好的软件问
题报告,以便程序员可以更快的修复软件错误。


技术文档工程师、市场开发人员和技术支持工程师也都是测试工程师的服务对象。

5、  避免错误:


前文已经指出测试工程师应该明确角色,明确任务和责任。知道哪些是自己分内的事,哪些
是不属于自己的事。一定要尽最大努力完成分内的事,不要做不属于自己的事情,以免弄巧
成拙。


为了更好的扮演软件测试工程师的角色,尽量避免犯下面的错误:


①、 承诺完成测试的软件没有质量问题
软件测试只是保证质量的一种方法,软件测试工程师的工作不会直接提高软件质量,因为绝
大多数软件错误都需要程序员修复。软件测试只能证明软件存在错误,不能保证软件没有错误,
不可能找出全部软件错误。个人的能力和对质量的影响范围很小,软件质量的提高要靠软件项
目团队全体成员的共同努力。


②、 承担软件的发布权利


不要因为软件中存在还没有修复的错误,而试图提出更改软件发布的计划。也不要认为已经完成
了测试计划,自己决定可以发布软件。因为,改变软件发布计划可能要失去进入市场的良机和很多
客户,对此造成的经济和公司市场的损失将不是测试工程师能够承担的。另外,软件发布后,如果用
户发现了新的软件错误,公司领导或项目经理可能将过错加在软件测试人员的头上,因为他们同意
发布软件。通常软件发布的权利由产品经理、项目经理、测试经理、市场经理共同集体讨论决定。


⒊扮演过程改进成员的角色


软件测试工程师必须报告错误,有时也要分析错误的类型、特征和产生错误的原因。但是,不要主动
提出改进软件过程的具体改进措施,更不要直接干涉程序员的工作方式,以免出力不讨好,影响今后
的愉快合作。软件过程改进的方法是软件质量控制部门的事情,这是他们的本职工作。


6、 工作职责:


软件测试就是使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定
的需求或弄清预期结果与实际结果之间的差别。开发工作的根本是尽量实现软件用户的需求,测试工
作的根本是检验软件系统是否满足软件用户的需求。


软件测试工程师简单的说是软件开发过程中的质量检测者和保障者,负责软件质量的把关工作。软件
测试工程师具体工作有:


①、 使用各种测试技术和方法来测试和发现软件中存在的软件缺陷。测试技术主要分为黑盒测试和白
盒测试两大类。其中黑盒测试技术主要有等价类划分法、边界值法、因果图法、状态图法、测试大纲法以
及各类典型的软件故障模型等;白盒测试的主要技术有语句覆盖、分支覆盖、判定覆盖、基本路径覆盖等;


②、 测试工作需要贯穿整个软件开发生命周期。完整的软件测试工作包括单元测试、集成测试、确认测
试和系统测试工作。单元测试工作主要在编码阶段完成,由开发人员和软件测试工程师共同完成,其主
要依据是详细测试。集成测试的主要工作测试软件模块之间的接口是否正确实现,基本依据是软件体系
结构设计。确认测试和系统测试是在软件开发完成后,验证软件的功能与需求的一致性、验证软件在相
应的硬件条件下的系统功能是否满足用户需求,其主要依据是用户需求。


③、 测试人员将发现的缺陷编写成正式的缺陷报告,提交给开发人员进行缺陷的确认和修复。缺陷报
告编写最主要的要求是保证缺陷的重现。要求测试人员具有很好的文字表达能力和语言组织能力。


④、 测试人员需要分析软件质量。在测试完成后,测试人员需要根据测试结果来分析软件质量,包括缺
陷率、缺陷分布、缺陷修复趋势等。给出软件各种质量特性包括有功能性、可靠性、易用性、安全性、时间
与资源特性等的具体度量。最后给出一个软件是否可以发布或提交用户使用的结论。


⑤、 测试过程中,为了更好地组织与实施测试工作,测试负责人需要制定测试计划,包括有测试资源、测
试进度、测试策略、测试方法、测试工具、测试风险等。


⑥、 测试人员为了更好更有效地进行测试,保证测试工作质量,需要在执行测试工作之前首先需要设计
测试用例,形成测试用例报告。设计测试用例是保证测试质量的核心工作,很多测试技术都可以用来指
导设计用例。为了提高测试用例的设计效率,BTEST培训课程专门开设了高效设计测试用例一门课来讲
授各种设计用例的技术与方法。


⑦、 为了提高工作效率或提高测试水平,测试工作需要引进自动化测试工具,测试人员需要学会使用自
动化测试工具,编写测试脚本,进行性能测试等。(什么是自动化测试工具?)


注意: 什么是自动化测试工具?
网上小伙伴提供的一些基本自动化测试工具:
开源功能自动化测试工具:Watir、Selenium、MaxQ、WebInject 
开源性能自动化测试工具:Jmeter、OpenSTA、DBMonster、TPTEST、Web Application Load Simulator 
不过,大家用的最多的就是QTP和LR

⑧、 测试负责人在测试工作中,还需要根据实际情况不断改进测试过程,提高测试水平,进行测试队伍的建设等。

6、 职业发展:


测试组长这类测试人员通常是测试项目的负责人,既要具备较高的测试技术能力,还要具备一定的管理能力。主要
职责是制定测试计划、编写测试计划、监控和管理整个测试过程。测试组长可以向上发展为测试部经理、质量经理,
也可以横向发展为项目经理,而且通常待遇相对较高些


测试分析师
主要职责是对系统的测试结果进行综合的分析,例如缺陷分析、性能分析等。测试分析师不但测试技术能力较强,
还要具备数据库、操作系统等多方面的技术知识。这类职务的发展空间也不错,可以发展成系统设计师等。


测试工程师
主要职责是编写测试程序、执行自动化测试任务。这类职位的测试人员至少要达到初级程序员的能力,因为经常
和程序打交道。发展空间也不错,例如可以发展为程序员。

7、 测试分类:

测试分为三个阶段:手工测试、自动化测试、性能测试。这是一个逐步提升的过程。最初工作可能做手工测试,也
是目前绝大部分测试人员所从事的工作。自动化测试是测试的发展趋势,而且现在自动化测试人员急缺,且薪资
很高。现在最稀缺的是性能测试人员,目前性能测试人员的待遇比同等经历的开发可能还要高,因为现在性能测
试人员属于稀缺状态。


(1)手工测试:现在比较普及,大多数测试都还停留在手工测试阶段。


(2)自动化测试:是趋势,但目前用自动化测试的还比较少,需要适当的代码编写工作。做一段手工测试后,积累一
定经验,可以慢慢步入自动化测试阶段,如果自动化测试比较熟练,月薪1万没问题,和开发工资差不多。


(3)性能测试:性能测试人员现在稀缺人群,一般能做性能测试,且做得可以的一般月薪都在1.6万以上,比开发要

8、 职业素质:

专业技能:


计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件。尽管没有任何IT背景的
人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必
不可少的。计算机专业技能主要包含三个方面:


①、 测试专业技能:
测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主。测试专业技能涉及的范围
很广:既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、功能测试、集成测试、
系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。


②、 软件编写能力:
软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的开发经验。因此,
测试人员要想得到较好的职业发展,必须能够编写程序。只有能够编写程序,才可以胜任诸如单元测试、
集成测试、性能测试等难度较大的测试工作。


此外,对软件测试人员的编程技能要求也有别于开发人员:测试人员编写的程序应着眼于运行正确,同时兼顾
高效率,尤其体现在与性能测试相关的测试代码编写上。因此测试人员要具备一定的算法设计能力。依据资深
测试工程师的经验,测试工程师至少应该掌握Java、C#、C++之类的一门语言以及相应的开发工具。


③、 网络、操作系统、数据库、中间件等知识:
与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。由于测试
中经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员
需要掌握更多网络、操作系统、数据库等知识。


与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。由于测试中
经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要
掌握更多网络、操作系统、数据库等知识。


在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是
测试工作中经常遇到的知识。


操作系统和中间件方面,应该掌握基本的使用以及安装、配置等。例如很多应用系统都是基于Unix、linux来运行的,
这就要求测试人员掌握基本的操作命令以及相关的工具软件。而WebLogic、Websphere等中间件的安装、配置很多时
候也需要掌握一些。


数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库。因此不但要掌握基本的安装、配置,还要掌握
SQL。测试人员至少应该掌握Mysql、MSSqlserver、Oracle等常见数据库的使用。



行业知识:


行业主要指测试人员所在企业涉及的行业领域,例如很多IT企业从事石油、电信、银行、电子政务、电子商务等行业领
域的产品开发。行业知识即业务知识,是测试人员做好测试工作的又一个前提条件,只有深入地了解了产品的业务流程,
才可以判断出开发人员实现的产品功能是否正确。


很多时候,软件运行起来没有异常,但是功能不一定正确。只有掌握了相关的行业知识,才可以判断出用户的业务需求
是否得到了实现。


行业知识与工作经验有一定关系,通过时间即可以完成积累。


个人素养:


作为一名优秀的测试工程师,首先要对测试工作有兴趣:测试工作很多时候都是显得有些枯燥的,因此热爱测试工作,才更容易做
好测试工作。因此,除了具有前面的专业技能和行业知识外,测试人员应该具有一些基本的个人素养,即下面的“五心”。


1.专心:主要指测试人员在执行测试任务的时候要专心,不可一心二用。经验表明,高度集中精神不但能够提高效率,还能发现更
多的软件缺陷,业绩最棒的往往是团队中做事精力最集中的那些成员。


2.细心:主要指执行测试工作时候要细心,认真执行测试,不可以忽略一些细节。某些缺陷如果不细心很难发现,例如一些界面的
样式、文字等。


3.耐心:很多测试工作有时候显得非常枯燥,需要很大的耐心才可以做好。如果比较浮躁,就不会做到“专心”和“细心”,这将让很
多软件缺陷从你眼前逃过。


4.责任心:责任心是做好工作必备的素质之一,测试工程师更应该将其发扬光大。如果测试中没有尽到责任,甚至敷衍了事,这将
会把测试工作交给用户来完成,很可能引起非常严重的后果。


5.自信心:自信心是现在多数测试工程师都缺少的一项素质,尤其在面对需要编写测试代码等工作的时候,往往认为自己做不到。
要想获得更好的职业发展,测试工程师们应该努力学习,建立能“解决一切测试问题”的信心。


“五心”只是做好测试工作的基本要求,测试人员应该具有的素质还很多。例如测试人员不但要具有团队合作精神,而且应该学会
宽容待人,学会去理解“开发人员”,同时要尊重开发人员的劳动成果——开发出来的产品。


要求
1、质量意识:在整个软件测试的各个环节中,质量意识一定要贯穿其中。理解功能需求,书写测试案例,执行测试计划,发现问题,
提交问题,描述问题,协助解决问题,以及问题的跟踪等,在所有的环节中,一定要注重质量,并且从质量的角度来思考问题。


2、细心并且系统:软件测试可能每天要重复同样的操作,其工作可能会枯燥无味,并且发现的问题可能很微小或者很杂乱无章、
现象不一。在这样的情况下,软件测试人员一定要细心不放过任何微小的错误,并且从很多杂乱的现象中找出一定的规律和复
现性。并且在测试中有很好的规划性,先测什么而后测什么,不放过任何软件的死角。在测试中,一定要系统的看待问题,功能
模块A的改动会否影响到其他模块的功能,不能想当然,一定要系统性的看待。有时候一个内存地址的改变,都有可能引起准给
软件的崩溃。所以一定要系统性的去处理和看待软件中修改的任意一处代码。


3、软件测试理论的掌握以及开发工具和平台的应用:黑盒测试,白盒测试,功能/系统/压力/性能等等。但不管测试任何东西,
基本理论是不变的。需求文档,设计文档,根据文档制作测试用例(划分等价、边界测试、路径测试、用户体验、等等),执行测试
,提交并跟踪问题。当然,行业的不同,其测试用的工具和方法也不太一样。手机App该如何测试,无线通讯产品该如何测试,
C/B-S应用该如何测试,这些产品的差异性很大,其用到的工作也很不一样,但是其基本的测试理论还是一致的。


4、站的高看的细:不能光有理论,对测试的很多文档可以提出很多有建设性的意见,但当执行测试时却不能发现问题。这其中有
几个原因,一是可能提出的意见并没有写进测试案例中,二是有可能执行不仔细总是忽视问题的存在,三可能就是没有去实施。
所以一定要站在一定的高度去看待软件测试,但是又要很细致的实施。只有通过实践,才能发现问题改进问题到最后解决问题。


5、团队合作:这个无需多讲,在这个产品日渐复杂的年代,很难有一己之力就可以在各个方面做的最好。要充分发挥团队每个人
员的工作能力和效率。


6、怀疑:有些书是这样定义软件测试的,软件测试不会去证明软件是正确的,而是去证明是错误的,但是我们不可能发现所有的
错误。所以有很多时候要去怀疑要去假设。



软件测试种类:
手工测试、
自动化测试、
静态测试


软件测试方法
黑盒测试;
白盒测试;
灰盒测;


软件测试类型
功能测试;
性能测试;
可靠性试;
安全测试;
配置测试;
GUI测试;
备份测试;
文档测试;
在线帮助测试;
易用性测试等等


软件测试阶段
单元测试;
集成测试;
系统测试;
Alpha测试;
Beta测试;
验收测试;
回归测试;

2015-10-23 18:49:26 hansen_2015 阅读数 278
软件测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试,检查软件有没有错误(Bug),测试软件是否具有稳定性(Robustness),写出相应的测试规范和测试用例的专门工作人员。简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时发现软件问题并及时督促更正,确保产品的正常运作。按其级别和职位的不同,分为三类。

2013-12-04 13:44:05 u013019627 阅读数 858

 各位网友们,你们好,我最近分享的一些课程,收到了很多网友的喜爱,这是我继续坚持分享课程的最大动力。我很享受这个过程。有一种飞流直下三千尺,疑是银河落九天的畅快。今天给大家分享的是软件测试工程师这样一个课程。这里是网盘地址,你们自己下载吧,万一真的觉得不方便的话,我用qq单独给你传也可以,留下qq号码就可以了。http://www.kuaipan.cn/file/id_192202874577486233.htm?source=1



2011-01-20 12:06:00 ximenwuhen55555 阅读数 390

        

 
软件测试基础
一、软件测试概述
软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。

软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确(Doing the right things right at the right time.)。二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量(Quality is defined as conformance to requirements, not as “goodness” or “elegance”.)。四、质量也代表着它符合客户的需要(Quality also means “meet customer needs”.)。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。只有这些问题都解决了,软件产品的质量才可以说是上去了。

测试人员在软件开发过程中的任务:

1、寻找Bug;

2、避免软件开发过程中的缺陷;

3、衡量软件的品质;

4、关注用户的需求。

总的目标是:确保软件的质量。

二、常用的软件测试方法

1. 黑盒测试

黑盒测试顾名思义就是将被测系统看成一个黑盒,从外界取得输入,然后再输出。整个测试基于需求文档,看是否能满足需求文档中的所有要求。黑盒测试要求测试者在测试时不能使用与被测系统内部结构相关的知识或经验,它适用于对系统的功能进行测试。

黑盒测试的优点有:
1)比较简单,不需要了解程序内部的代码及实现;

2)与软件的内部实现无关;

3)从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;

4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;

5)在做软件自动化测试时较为方便。

黑盒测试的缺点有:
1)不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%;

2)自动化测试的复用性较低。

2. 白盒测试

白盒测试是指在测试时能够了解被测对象的结构,可以查阅被测代码内容的测试工作。它需要知道程序内部的设计结构及具体的代码实现,并以此为基础来设计测试用例。如下例程序代码:

HRESULT Play( char* pszFileName )

{

if ( NULL == pszFileName )

return;

if ( STATE_OPENED == currentState )

{

PlayTheFile();

}

return;

}

读了代码之后可以知道,先要检查一个字符串是否为空,然后再根据播放器当前的状态来执行相应的动作。可以这样设计一些测试用例:比如字符串(文件)为空的话会出现什么情况;如果此时播放器的状态是文件刚打开,会是什么情况;如果文件已经在播放,再调用这个函数会是什么情况。也就是说,根据播放器内部状态的不同,可以设计很多不同的测试用例。这些是在纯粹做黑盒测试时不一定能做到的事情。

白盒测试的直接好处就是知道所设计的测试用例在代码级上哪些地方被忽略掉,它的优点是帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。

白盒测试的缺点有:

1)程序运行会有很多不同的路径,不可能测试所有的运行路径;

2)测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;

3)系统庞大时,测试开销会非常大。

3. 基于风险的测试

基于风险的测试是指评估测试的优先级,先做高优先级的测试,如果时间或精力不够,低优先级的测试可以暂时先不做。有如下一个图,横轴代表影响,竖轴代表概率,根据一个软件的特点来确定:如果一个功能出了问题,它对整个产品的影响有多大,这个功能出问题的概率有多大?如果出问题的概率很大,出了问题对整个产品的影响也很大,那么在测试时就一定要覆盖到。对于一个用户很少用到的功能,出问题的概率很小,就算出了问题的影响也不是很大,那么如果时间比较紧的话,就可以考虑不测试。

关于软件测试的文章,来在软件测试网

基于风险测试的两个决定因素就是:该功能出问题对用户的影响有多大,出问题的概率有多大。其它一些影响因素还有复杂性、可用性、依赖性、可修改性等。测试人员主要根据事情的轻重缓急来决定测试工作的重点。

4. 基于模型的测试

模型实际上就是用语言把一个系统的行为描述出来,定义出它可能的各种状态,以及它们之间的转换关系,即状态转换图。模型是系统的抽象。基于模型的测试是利用模型来生成相应的测试用例,然后根据实际结果和原先预想的结果的差异来测试系统,过程如下图所示。

关于软件测试的文章,来在软件测试网

三、软件测试的类型

常见的软件测试类型有:

BVT (Build Verification Test)

BVT是在所有开发工程师都已经检入自己的代码,项目组编译生成当天的版本之后进行,主要目的是验证最新生成的软件版本在功能上是否完整,主要的软件特性是否正确。如无大的问题,就可以进行相应的功能测试。BVT优点是时间短,验证了软件的基本功能。缺点是该种测试的覆盖率很低。因为运行时间短,不可能把所有的情况都测试到。

Scenario Tests(基于用户实际应用场景的测试)

在做BVT、功能测试的时候,可能测试主要集中在某个模块,或比较分离的功能上。当用户来使用这个应用程序的时候,各个模块是作为一个整体来使用的,那么在做测试的时候,就需要模仿用户这样一个真实的使用环境,即用户会有哪些用法,会用这个应用程序做哪些事情,操作会是一个怎样的流程。加了这些测试用例后,再与BVT、功能测试配合,就能使软件整体都能符合用户使用的要求。Scenario Tests优点是关注了用户的需求,缺点是有时候难以真正模仿用户真实的使用情况。

Smoke Test

在测试中发现问题,找到了一个Bug,然后开发人员会来修复这个Bug。这时想知道这次修复是否真的解决了程序的Bug,或者是否会对其它模块造成影响,就需要针对此问题进行专门测试,这个过程就被称为Smoke Test。在很多情况下,做Smoke Test是开发人员在试图解决一个问题的时候,造成了其它功能模块一系列的连锁反应,原因可能是只集中考虑了一开始的那个问题,而忽略其它的问题,这就可能引起了新的Bug。Smoke Test优点是节省测试时间,防止build失败。缺点是覆盖率还是比较低。

此外,Application Compatibility Test(兼容性测试),主要目的是为了兼容第三方软件,确保第三方软件能正常运行,用户不受影响。Accessibility Test(软件适用性测试),是确保软件对于某些有残疾的人士也能正常的使用,但优先级比较低。其它的测试还有Functional Test(功能测试)、Security Test(安全性测试)、Stress Test(压力测试)、Performance Test(性能测试)、Regression Test(回归测试)、Setup/Upgrade Test(安装升级测试)等。

2017-06-29 10:08:27 u013203733 阅读数 226
首先,最根本的还是要看企业自身的需要,综合自己的测试团队力量,自己公司的研发状况,当然还有公司的资金---到底到测试这块公司愿意投入多少Money呢?另外要搞清楚自己公司招聘测试人员的目的是什么?.....比如,如果公司暂时还没有测试团队,这个时候公司刚好有财力,同时研发力量比较大的时候,因为发展的需要,必须要组建一个测试团队,那么这个时候,必须要找一个经验丰富,有带队经验、有测试管理经验、熟悉测试流程的人,让他作为领头人,去招聘他的团队成员,换句话说,就是要招聘一个测试部经理的角色。如果是不想组一个团队,那就要找一个多面手,就是什么都能做的,整个测试流程都能自己走遍的测试人员,这样的人通常都是在小公司里面磨练出来的。

  然后是考察一个测试人员的基本素质问题:

  第一应该是一个测试人员的责任心,把这个放第一位,原因很简单,如果一个测试不怎么厉害的人,因为他测试有责任心,即使他不能发现其它的特异问题或者是大问题,最起码,他在跑测试的时候,绝不会漏了一些没测,或者随便测一通;对于一个测试方面比较厉害的,因为责任心的驱使,即使找到了很多问题,他也不会自满,而是继续努力。

  第二是重视团队经验共享的人,测试人员必须有一种素质,那就是随时跟踪最新的信息,这个不仅仅指需求的变更方面,同时测试团队成员之间保持信息共享,彼此才能知道软件中最新发现的BUG。

  第三就是细心、耐心,这个就不多说啦

  第四,技术方面的基本素质,熟悉系统的应用,熟悉办公软件的应用,熟悉基本的测试流程;熟悉测试管理工具的应用,如果涉及到性能测试,需要考察测试人员对性能工具的使用;如果涉及到脚本自动化测试,就需要考察测试人员编写脚本的能力。

  第五,就是一个测试人员的学习能力、领悟能力。

  第六,信心,对这个行业的信心,再就是对测试的信心,相信软件一直存在BUG

软件测试工程师

阅读数 41

软件测试工程师

阅读数 6

软件测试工程师

阅读数 92

软件测试工程师

阅读数 664

软件测试工程师

阅读数 335

没有更多推荐了,返回首页