理论上讲,做软件测试的要求有什么就要懂什么,不是什么人都可以做的。但实际上测试工程师是有初、中、高三级之分的。而初级工程师所需要的知识不多,一般只需要学过简单的理论即可。中、高级相信需要一段过渡时期的,它们都必须以工具为主。
至于教材,可以说所有的计算机教材都是其中的一部分,就差你是什么方向的测试工作。一般来说,开始的时候,你只需要一本《软件测试理论》入门即可。有空可以看看《测试的艺术》一书(得益网有得下载)。
什么数据库\开发语言,这些与软件测试都是什么关系???
至于这个问题,首先要说明,软件测试一般可分为:单元测试、集成测试、系统测试、验收测试。单元测试一方面是直接对代码进行直读,所以它要求必需懂得开发语言,另一方面它要写驱动和桩,所以也要懂开发语言。(一般单元测试都是要开发人员扶助的)。而数据库,简单来说每当我们要验证一条记录的所有信息是否完整,都需要进入数据库中查看,查看是否有漏某个字段;而从更高层次来讲,它涉及到系统性能调优问题。
软件测试基础学习需要掌握哪些内容?首先,要有宽泛的计算机基础知识。微机原理,数据结构,数据库,操作系统原理,编译原理,逻辑,编程语言,网络,等等,都要系统地学习过。都精通不大可能,因为人的兴趣都不相同,但是这些功课的基本知识点是应当了解的。
我们在谈到职业的类别的时候,我们可以说C程序员,C#程序员,Java程序员,而没有C测试员,C#测试员,Java测试员,程序员可以只擅长某一门编程语言,测试员却不行。为什么呢?
测试员是代表用户的,在做测试的时候,他(她)需要考虑到方方面面的事情。例如对于一个用C写的上网拨号程序,测试员需要考虑:
(1) 程序的功能是否正确;(要求计算机知识)
(2) 是否符合用户的使用习惯;(要求界面设计知识和换位思考能力)
(3) 性能是否满足要求,例如长时间使用;稳定性;(要求深入的计算机知识)
(4) 是否能够满足用户可能的不同操作系统的要求;(要求计算机知识)
(5) 如果在全球发布,是否满足不同语言和文化的需求;(要求软件国际化测试知识)
(6) 如何搭建测试环境;(动手能力,硬件知识)
(7) 做代码检查;(比较深入的C语言知识)
(8) …
所以,各方面都了解一点,你在做测试的过程当中你会感觉顺手得多。如果某写方面还差一些,没有关系,计算机行业的特点就是边做边学,只要是个有心人,学习是很快的。
其次,要掌握一门编程语言。原因很简单:一行代码不会,你始终是门外汉。
具备计算机操作基础:这点对于计算机专业的学生没有什么大问题的,会使用电脑操作、会简单Office软件。
如果不会呢,可以自己在网上找资料自学,很简单。具备软件测试基础知识:软件测试基础理论知识。
实践需要理论知识指导。我们可以从相关书籍或者网上找到软件测试基础理论知识,具有详细的理论解释。
具备一定的数据库操作技术:对于常用的数据库,简单的操作要具备。学习数据库可以自己安装一个数据库,常练习。
具备一定的逻辑推理能力:这点主要偏向于写测试用例。测试用例是软件测试的核心。
写测试用例,可以参考网络一些比较经典的例子,模仿写。写多了经验就有了。
掌握软件测试缺陷管理工具:QC、Mantis、JIAR等。软件测试离不开缺陷管理。
软件测试缺陷管理工具有效管理缺陷、提高软件质量。这方面的知识建议从网络或者书籍途径学习。
掌握软件测试工具:Loadrunner、ruby、QTP等,学习测试工具提高测试效率,这也有助于你测试职业生涯的规划。学会一门开发脚本语言:学会开发脚本语言有助于学习软件测试工具。
根据自己的兴趣和基础选择学习。
需要以下材料
1、软件测试基础知识:
测试计划编写、设计测试用例、编写测试报告、编写BUG报告单、跟踪BUG修复情况、还需要良好的沟通能力、以及各种测试阶段所使用的测试方法、单元测试、功能测试、集成测试、系统测试等等、CMMI /ISO9001
2、各种测试工具的使用:
我们在测试的工作中为了能够提高工作效率进程会用到很多工具、QTP、LR、QC、TD、Bugfree、VSS、SVN等等工具、虽然说工具不是万能的但是工具能为我们提高工作效率所以不能吧工具当神一样看待、但是必须得会熟练的使用
3、操作系统相关知识:
Windows、linux、uinx这些都必须会使用、而且不仅仅是简单的操作、一般的服务管理、注册表编辑、命令行操作都需要会、可以想象下一个连apache服务都不会安装配置的人、谁能想象你可以做好基于apache环境的测试工作、什么?不知道怎么查看磁盘压力、IO数据。windows linux都有提供自带的工具可用于查看这些数据、perfmon、top什么的。
4、数据库知识:
现在Oracle的DBA待遇比一般的开发人员待遇还高就知道数据库在企业中的重要性了、作为测试人员虽然不需要有DBA的能力、但是基本的数据库操作你必须得会把、不管是Oracle、DB2、MSsql还是mysql最少都应该能熟悉使用其中的一二。
5、计算机硬件知识:
做过性能测试的朋友都知道在性能测试过程中硬件性能也是一个非常重要的指标、CPU、内存、IO、带宽等等、如果你是做硬件测试的。那么就更不用说了。交换机、路由器、防火墙这些设备都需要有所了解。
6、网络协议:
如果你还知道TCP和UDP有什么不一样的话请赶快去补充点知识吧、互联网时代、一切都通过网络传输、常用协议必须得了解、曾经面试了一个测试工程师做了2年的测试居然不知道自己测试软件使用什么协议、这样的人是你的话你敢招么?
7、开发语言即代码编写能力:
虽然不会写代码也能做测试、但是如果你想做到高级测试工程师以上、那么代码编写能力就是必选项、如果不会写代码、那么你不可能成为高级测试。高级测试工程师的一部分工作就是在写测试工具。虽然测试也需要写代码但不需要和开发一样那么精通某一门语言、可是测试却需要了解很多门开发语言(举一个简单的例子:你现在所在的项目从C++语言、2年后你换工作了、新公司的开发语言是java或者是VB什么的)所以在开发语言中测试需要更广的学习。
8、行业知识:
行业知识之所以写在最后面是因为前面的7条我们都可以通过学习来掌握、但是唯独行业知识却只能通过工作经验来积累、不要说你去看几本书就知道通信行业、医疗行业、或者是航天行业、你认为在书本上面能学到么?
由于行业知识的特殊性所以建议朋友们不要频繁的跳槽、经验的积累是需要时间来沉淀的。
9、具有一定的美学观:
这个说起来比较拗口一点、简单来说不管是开发活动还是测试活动、最后的目标就是将产品推向市场、而且得到用户的认可。所以如果产品在需求分析阶段就出现了偏离用户航道、那么就算测试 开发做得再好这个项目也是一样会失败。所以各位如果有幸能够参加需求评审的话、请不要吝啬你的言论。
10、请不要忘记时刻学习着:
这点我相信大家应该都能理解所以不用写什么:仅此一点“不学习就会落后”
总结:说了那么多技能或者是说是需要掌握的技术、如果你没有一颗发现缺陷之美的心态、没有一颗以提高质量为前提来投入工作中、那么就算你其他做得再好也不过是万千软件测试从业人员中的一枚。测试活动大部分用于发现缺陷、而发现缺陷之后的工作尤为重要:怎么样从发现缺陷到提高质量。
1. 具备计算机操作基础:这点对于计算机专业的学生没有什么大问题的,会使用电脑操作、会简单Office软件。如果不会呢,可以自己在网上找资料自学,很简单。
2. 具备软件测试基础知识:软件测试基础理论知识。实践需要理论知识指导。我们可以从相关书籍或者网上找到软件测试基础理论知识,具有详细的理论解释。
3. 具备一定的数据库操作技术:对于常用的数据库,简单的操作要具备。学习数据库可以自己安装一个数据库,常练习。
4. 具备一定的逻辑推理能力:这点主要偏向于写测试用例。测试用例是软件测试的核心。写测试用例,可以参考网络一些比较经典的例子,模仿写。写多了经验就有了。
5. 掌握软件测试缺陷管理工具:QC、Mantis、JIAR等。软件测试离不开缺陷管理。软件测试缺陷管理工具有效管理缺陷、提高软件质量。这方面的知识建议从网络或者书籍途径学习。
6. 掌握软件测试工具:Loadrunner、ruby、QTP等,学习测试工具提高测试效率,这也有助于你测试职业生涯的规划。
7. 学会一门开发脚本语言:学会开发脚本语言有助于学习软件测试工具。根据自己的兴趣和基础选择学习。
首先需要了解的就是计算机系统组成介绍,包括计算机系统的组成、计算机系统抽象层次结构、软件的定义、软件的基本分类。
要熟悉操作系统的定义和主要功能,常用的操作系统。还要熟悉进制转换,包括数制、十进制、二进制、八进制、十六进制以及它们之间的转换。
熟悉逻辑代数的定义、基本逻辑关系与运算、逻辑变量。掌握计算机网络基础,包括认识网络、网络协议、分层思想、常见的网络分层模型、各层对应功能和协议。
其次要掌握软件的生命周期,熟悉软件开发过程模型,包括瀑布模型,快速原型模型、螺旋模型。掌握软件测试过程模型,包括V模型、W模型。
为接下来软件测试系统化的学习打好基础。还要掌握软件测试的定义,熟悉软件测试的目的、软件测试的意义,掌握软件测试工作流程和实际软件工作流程。
通过对软件测试概论的学习,对软件测试工作流程做到熟悉,培养未来测试工作中的良好习惯。另外还需要掌握软件缺陷定义,熟悉缺陷产生的原因和软件缺陷第二定义,掌握缺陷报告编写。
通过对软件缺陷相关知识的学习,学会日常工作中缺陷报告的提交,明确bug的严重程度及优先级。更多科普就在IT优就业。
软件测试是一门新兴行业,平均薪酬不错,而且入门简单。需要掌握一定的开发语言基础,相关网络和数据库的基础知识,以及主要的软件测试理论。基础学习的话有人引导就会相当简单,因此建议最好找一个做测试工作的朋友指导学习效率最高。如果是完全自学,建议安排好时间,几方面知识学习同时开始:
1.软件测试基础理论和方法。这块的东西学起来其实不多,重要的是实际的应用。主要掌握黑白盒测试、测试策略、测试方法、测试设计、测试报告等相关理论。在网上或书店随便找一份软件测试学习的书籍都够用了。
2.网络和数据库基础知识。现在的软件基本都离不开网络和数据库应用。所以这两块的基础知识也是必须掌握的。不需要太深,网络知道互联网发展,现代网络架构,IP分配知识,网络七层协议等,数据库要会基本的增删改查语句操作。这个在网上找一些资料和练习题做一做就可以了。
3.开发语言基础。这个很重要。测试要深入发展,掌握至少一门开发语言是很必要的。实际测试的技能需求是大于开发的,除了常用开发语言,最好是能掌握一门脚本语言,作为测试自动化能力拓展的基础。这是通向高级测试的必备技能。这块需要投入很大,但不需要在工作初期要求太高,可以再工作中不断提升。自己选定一门开发语言和脚本语言,持续学习即可。
1)熟悉计算机基础知识;
(2)熟悉操作系统、数据库、中间件、程序设计语言基础知识;
(3)熟悉计算机网络基础知识;
(4)熟悉软件工程知识,理解软件开发方法及过程;
(5)熟悉软件质量及软件质量管理基础知识;
(6)熟悉软件测试标准;
(7)掌握软件测试技术及方法;
(8)掌握软件测试项目管理知识;
(9)掌握C语言以及C++或Java语言程序设计技术;
(10)了解信息化及信息安全基础知识;
(11)熟悉知识产权相关法律、法规;
(12)正确阅读并理解相关领域的英文资料。
通过本考试的合格人员能在掌握软件工程与软件测试知识的基础上,运用软件测试管理方法、软件测试策略、软件测试技术,独立承担软件测试项目;具有工程师的实际工作能力和业务水平。
软件测试是一个入门简单、但深入难的工作
入门的时候只要会看懂中文、理解能力没问题就可以按照测试用例来执行用例了
进一步之后需要会的知识会越来越多
1、操作系统的知识(什么软件都是运行在操作系统之上的、一般的操作必须要会)
2、数据库知识(现在还能找到多少不需要数据库的大型软件捏?)
3、计算机网络(通信呀通信、千万不要TCP和UDP都分不清楚)
4、计算机硬件(你要是C/S架构的测试或者是做性能测试、那么计算机硬件都是必修课了、总得知道IO是什么IOPS又是啥)
5、各种测试工具的使用、什么QC/TD/BUGfree/QTP/LR之类的 不需要样样精通但是必须要熟练使用
6、软件测试基础知识(这年头没有知识是万万不能的、软件测试基础知识其实买几本书好好看看就能学个差不多了)
7、开发语言(做到高级软件测试的人都是会写点小工具的)
8、测试环境配置:这个要说下、我在做配置管理的时候发现很多测试人员居然连自己的测试环境都配置不好、一个连自己的测试环境都不会配置的人会成为一个合格的测试么。(你要测试web的apache、tomcat、iis之类的得会配置吧)
PS:希望你不要被我写的这么多东西吓到了、这些知识是在软件测试的进化过程中慢慢积累起来的、不是所有人都一开始就会了、你是计算机专业毕业的。那么计算机硬件、网络、操作系统、数据库什么的都应该在学校的时候有学到的、所以应该不是问题
最后:祝你好运
【IT168 技术文章】 一、软件测试概述 软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。
软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(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 。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.712秒