理论上讲,做软件测试的要求有什么就要懂什么,不是什么人都可以做的。但实际上测试工程师是有初、中、高三级之分的。而初级工程师所需要的知识不多,一般只需要学过简单的理论即可。中、高级相信需要一段过渡时期的,它们都必须以工具为主。
至于教材,可以说所有的计算机教材都是其中的一部分,就差你是什么方向的测试工作。一般来说,开始的时候,你只需要一本《软件测试理论》入门即可。有空可以看看《测试的艺术》一书(得益网有得下载)。
什么数据库\开发语言,这些与软件测试都是什么关系???
至于这个问题,首先要说明,软件测试一般可分为:单元测试、集成测试、系统测试、验收测试。单元测试一方面是直接对代码进行直读,所以它要求必需懂得开发语言,另一方面它要写驱动和桩,所以也要懂开发语言。(一般单元测试都是要开发人员扶助的)。而数据库,简单来说每当我们要验证一条记录的所有信息是否完整,都需要进入数据库中查看,查看是否有漏某个字段;而从更高层次来讲,它涉及到系统性能调优问题。
软件测试基础学习需要掌握哪些内容?首先,要有宽泛的计算机基础知识。微机原理,数据结构,数据库,操作系统原理,编译原理,逻辑,编程语言,网络,等等,都要系统地学习过。都精通不大可能,因为人的兴趣都不相同,但是这些功课的基本知识点是应当了解的。
我们在谈到职业的类别的时候,我们可以说C程序员,C#程序员,Java程序员,而没有C测试员,C#测试员,Java测试员,程序员可以只擅长某一门编程语言,测试员却不行。为什么呢?
测试员是代表用户的,在做测试的时候,他(她)需要考虑到方方面面的事情。例如对于一个用C写的上网拨号程序,测试员需要考虑:
(1) 程序的功能是否正确;(要求计算机知识)
(2) 是否符合用户的使用习惯;(要求界面设计知识和换位思考能力)
(3) 性能是否满足要求,例如长时间使用;稳定性;(要求深入的计算机知识)
(4) 是否能够满足用户可能的不同操作系统的要求;(要求计算机知识)
(5) 如果在全球发布,是否满足不同语言和文化的需求;(要求软件国际化测试知识)
(6) 如何搭建测试环境;(动手能力,硬件知识)
(7) 做代码检查;(比较深入的C语言知识)
(8) …
所以,各方面都了解一点,你在做测试的过程当中你会感觉顺手得多。如果某写方面还差一些,没有关系,计算机行业的特点就是边做边学,只要是个有心人,学习是很快的。
其次,要掌握一门编程语言。原因很简单:一行代码不会,你始终是门外汉。
1. 具备计算机操作基础:这点对于计算机专业的学生没有什么大问题的,会使用电脑操作、会简单Office软件。如果不会呢,可以自己在网上找资料自学,很简单。
2. 具备软件测试基础知识:软件测试基础理论知识。实践需要理论知识指导。我们可以从相关书籍或者网上找到软件测试基础理论知识,具有详细的理论解释。
3. 具备一定的数据库操作技术:对于常用的数据库,简单的操作要具备。学习数据库可以自己安装一个数据库,常练习。
4. 具备一定的逻辑推理能力:这点主要偏向于写测试用例。测试用例是软件测试的核心。写测试用例,可以参考网络一些比较经典的例子,模仿写。写多了经验就有了。
5. 掌握软件测试缺陷管理工具:QC、Mantis、JIAR等。软件测试离不开缺陷管理。软件测试缺陷管理工具有效管理缺陷、提高软件质量。这方面的知识建议从网络或者书籍途径学习。
6. 掌握软件测试工具:Loadrunner、ruby、QTP等,学习测试工具提高测试效率,这也有助于你测试职业生涯的规划。
7. 学会一门开发脚本语言:学会开发脚本语言有助于学习软件测试工具。根据自己的兴趣和基础选择学习。
首先需要了解的就是计算机系统组成介绍,包括计算机系统的组成、计算机系统抽象层次结构、软件的定义、软件的基本分类。
要熟悉操作系统的定义和主要功能,常用的操作系统。还要熟悉进制转换,包括数制、十进制、二进制、八进制、十六进制以及它们之间的转换。
熟悉逻辑代数的定义、基本逻辑关系与运算、逻辑变量。掌握计算机网络基础,包括认识网络、网络协议、分层思想、常见的网络分层模型、各层对应功能和协议。
其次要掌握软件的生命周期,熟悉软件开发过程模型,包括瀑布模型,快速原型模型、螺旋模型。掌握软件测试过程模型,包括V模型、W模型。
为接下来软件测试系统化的学习打好基础。还要掌握软件测试的定义,熟悉软件测试的目的、软件测试的意义,掌握软件测试工作流程和实际软件工作流程。
通过对软件测试概论的学习,对软件测试工作流程做到熟悉,培养未来测试工作中的良好习惯。另外还需要掌握软件缺陷定义,熟悉缺陷产生的原因和软件缺陷第二定义,掌握缺陷报告编写。
通过对软件缺陷相关知识的学习,学会日常工作中缺陷报告的提交,明确bug的严重程度及优先级。更多科普就在IT优就业。
【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 。
想要了解软件测试需要学习哪些基础知识,这里整理了一份软件测试系统全面的学习路线,希望可以帮助你~第一阶段:专业基础课程阶段目标:1. 熟练掌握IT核心技术:编程,数据库,操作系统,版本控制2. 能够熟练运用所学技术搭建各类服务器环境3. 深入理解软件研发过程各种疑难杂症及处理手段4. 掌握Python编程技术并熟练运用Python进行程序设计知识点:1、Web页面元素,布局,CSS样式,盒模型,JavaScript程序设计,函数,基础算法,正则表达式。
2、数据库知识,范式,MySQL配置,命令,建库建表,数据的增删改查,约束,视图,存储过程,函数,触发器,事务,游标,建模工具深入理解数据库管理系统通用知识及MySQL数据库的使用与管理。为软件测试和测试开发打下基础。
3、Linux安装配置,文件目录操作,VI命令,管理,用户与权限,环境部署,Shell编程Linux作为一个主流的服务器操作系统,是每一个测试开发工程师必须掌握的重点技术,并且能够熟练运用。4、Python编程基础,语法规则,函数,数据类型,PDBC,培养扎实的Python编程基本功,同时对Python核心对象编程有熟练的运用。
5、Python面向对象,异常处理,文件IO,多线程,网络编程,PyQT界面开发,深入理解面向对象编程,异常处理机制,多线程原理,网络协议知识,并熟练运用于项目中。第二阶段:专业核心课程阶段目标:1. 熟练应用所学知识完成一个标准的软件测试项目2. 熟练运用Python完成GUI测试,接口测试和性能测试开发3. 对测试开发技术体系和实现原理有深入的理解4. 灵活运用测试开发技术解决项目中的各种问题知识点:1、软件工程,软件质量,系统测试流程,方法,专业术语,测试用例设计,禅道管理工具,测试报告,缺陷管理理解软件工程的各类实际问题,理解系统测试的理论、方法与过程,熟练运用测试用例设计方法高效设计测试用例。
2、测试需求分析,测试方案设计,测试用例设计,测试项目实施,缺陷报告与测试报告,深入理解系统测试各个过程和关键环节,熟练完成系统测试项目。3、SikuliX框架,UIAutomation框架,Selenium WebDriver框架,基础框架,Android应用,Monkey测试,Appium移动端测试框架,UIAutomator2移动端测试框架综合运用各类应用操作平台,完成各种自动化测试框架的学习和应用,深入理解GUI自动化测试技术及相应框架的测试开发。
4、Python单元测试框架,网络通信协议,HTTP与HTTPS协议,WebService与WebSocket协议,Python的接口测试库,PostMan与SoapUI接口测试工具通过对代码级接口测试和协议级接口测试的测试开发实战,灵活运用Python开发接口测试脚本,熟练运用各类接口测试工具。5、性能测试原理,指标体系,场景设计,实施过程,JMeter工具应用,BeanShell脚本开发,Python+Locust性能测试框架深入理解性能测试技术体系和方法论,熟练运用JMeter性能测试工具和Locust性能测试框架实施对任意系统的性能测试。
第三阶段:综合实战项目阶段目标:1. 将软件测试和测试开发技术灵活运用于项目中2. 具备较强的测试开发能力,独立完成测试开发项目3. 综合运用软件测试技术,满足企业中高级人才需求4. 对所学技术有深入的理解并具备独立解决问题的能力知识点:1、测试需求分析,同行评审,测试计划,测试方案,测试用例,配置管理,持续集成。通过对大型企业级应用系统的测试项目实战,强化理解系统测试项目的实施过程与技术细节。
2、接口测试设计与实施,回归测试,冒烟测试,安全性测试,RobotFramework框架应用,UI自动化实战将各类自动化测试技术结合项目实战演练,强化对自动化测试技术的运用,同时掌握更多的测试框架。3、性能测试项目实战,LoadRunner性能测试工具,总结通过综合项目实战,将全套测试技术融入到项目中,强化学习效果和项目经验。
4、Python原生测试框架开发,包括Monkey,UI,图像识别,云测试平台,HTML测试报告,持续集成,KDT关键字驱动框架开发等原生技术实现通过大量的Python原生代码开发,深入理解自动化测试开发技术的底层实现原理,完全抛弃对工具的依赖,做到真正的测试开发技术。5、基于测试框架的设计思路和实现手段,自主实现一套测试框架能够独立完成一套自动化测试框架,并能够直接用于实际项目中。
6、持续集成与Jenkins,安全性测试原理与工具,Python爬虫开发与Scrapy框架,提升软件测试其它类技术,增强知识面,提升竞争力,助力职业发展。补充知识1、算法进阶,图像处理,视频处理,加密解密,压缩算法。
2、UML统一建模语言、五种图、类图、类图详解、用例图、时序图。3、Dubbo分布式开发框架,Oracle关系型数据库管理系统,MongoDB非关系型数据库管理系统。
4、大数据开发框架Hadoop/MapReduce/Spark。5、Android与iOS的原生应用开发与WebApp开发。
6、OpenCV图像处理框架、TensorFlow深度学习框架,Lucene全文搜索引擎与中文分词框架Ik-Analyzer,视频处理算法与框架等。
具备计算机操作基础:这点对于计算机专业的学生没有什么大问题的,会使用电脑操作、会简单Office软件。
如果不会呢,可以自己在网上找资料自学,很简单。具备软件测试基础知识:软件测试基础理论知识。
实践需要理论知识指导。我们可以从相关书籍或者网上找到软件测试基础理论知识,具有详细的理论解释。
具备一定的数据库操作技术:对于常用的数据库,简单的操作要具备。学习数据库可以自己安装一个数据库,常练习。
具备一定的逻辑推理能力:这点主要偏向于写测试用例。测试用例是软件测试的核心。
写测试用例,可以参考网络一些比较经典的例子,模仿写。写多了经验就有了。
掌握软件测试缺陷管理工具:QC、Mantis、JIAR等。软件测试离不开缺陷管理。
软件测试缺陷管理工具有效管理缺陷、提高软件质量。这方面的知识建议从网络或者书籍途径学习。
掌握软件测试工具:Loadrunner、ruby、QTP等,学习测试工具提高测试效率,这也有助于你测试职业生涯的规划。学会一门开发脚本语言:学会开发脚本语言有助于学习软件测试工具。
根据自己的兴趣和基础选择学习。
主要理论知识是 软件工程
软件测试要求知识面广,但不一来定精,编程语言的话,最好是什么都学过,至少几种主流的程序语言要学过,如java、.net、C 。还有会一些脚本语言vba(vb)、sql、C等。
网络的话:TCP/IP协议,局域网广域网相关知识等
数据库:当前主流的mysql、ms-sql、oracle
常用测试工具:HP的三剑客首当其冲了:QTP(自动化功能测试工具)、LoadRunner(自动化性能测试工具)、QC(TD前身,测试管理追踪工具)。当然这些都是收费产品。网源上有破解百版的可供学习。(一套)
开源免费的测试工具:QTP(自动化功能测试工具,破解版的可以满足绝大部分测试需求)、jmeter(自动化性能测试工具)、bugzilla(测试管理追踪工具)。
最主要的是其实大多数度也不知道这么多,主要看自己以后在测哪方面,学习能力最重要
1负载测试 负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。
在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。
此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。 比如,在B/S结构中用户并发量测试就是属于负载测试的用户,可以使用webload工具,模拟上百人客户同时访问网站,看系统响应时间,处理速度如何? 2强度测试 强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况。
这类测试往往可以书写系统要求的软硬件水平要求。 实施和执行此类测试的目的是找出因资源不足或资源争用而导致的错误。
如果内存或磁盘空间不足,测试对象就可能会表现出一些在正常条件下并不明显的缺陷。而其他缺陷则可能由于争用共享资源(如数据库锁或网络带宽)而造成的。
强度测试还可用于确定测试对象能够处理的最大工作量。 比如:一个系统在内存366M下可以正常运行,但是降低到258M下不可以运行,告诉内存不足,这个系统对内存的要求就是366M。
最基本的知识,软件测试基础知识,测试流程、测试方法、测试用例编写方法,bug生命周期、bug严重级别。。。。。等等等等,网上查一下
除此以外,操作系统windows中IIS部署网站、linux系统基本命令,
数据库基本查询语句,sqlserver 2005 或者mysql等数据的了解
网络基本知识的了解
如果你想往深了研究,还需要掌握基本测试工具的使用,比如qtp、loadrunner等,还需要自己编写脚本进行测试
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.224秒