|
里仁嵌入式培训学院首先跟大家讲解一下什么是软件测试:
简单的说,如果你写了一段代码,我来帮你查看代码并找出里面的错误,这就是测试。软件测试是为了发现错误而审查软件文档、检查软件数据和执行程序代码的过程,其目的在于在软件交付使用前充分发现缺陷并协助相关部门定位、解决缺陷,最后交付一个高质量的软件产品给用户。
软件测试有哪几种分类:
l 黑盒测试:
黑盒测试又叫功能测试,数据驱动测试或基于需求规格说明书的功能测试。(主要用于系统测试和确认测试中)
l 白盒测试
白盒测试又称结构测试、逻辑驱动测试或程序代码内部构成的测试。
l 灰盒测试
灰盒测试结合黑盒和白盒测试两种方法,一方面考虑程序代码的功能性表现,另一方面,又需要考虑程序代码的内部结构。(主要用于性能测试、自动化功能测试)
l静态测试
静态测试就是用眼看,阅读程序代码、文档资料等,与需求规格说明书中的客户需求进行比较,找出程序代码中设计不合理及文档集料有错误的地方
l动态测试
动态测试即为实际的执行被测对象的程序代码,输入事先设计好的测试用例,检查程序运行得到的结果与测试用例中设计的预期结果之间是否有差异,判定实际结果与预期结果是否一致,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能状况。
动态测试由四个部分组成:设计测试用例、执行测试用例、分析比较输出结果、输出测试报告。
动态测试有三种方法:黑盒测试、白盒测试、灰盒测试。
l手动测试
手动测试大部分的测试就是模拟用户的业务流程,来使用软件产品,从而发现软件产品中的缺陷。手动测试是最传统的测试方法,也是现在大多数公司都是用的测试形式。他是测试人员设计测试用例并执行测试用例,然后根据实际结果去和预期的结果相比较并记录测试结果,最终输出测试报告的测试活动。
优点:可以充分发挥测试工程师的主观能动性,将其智力活动体现于测试活动中,能发现很多的缺陷。
缺点:手动测试有一定的局限性与单调枯燥性。
l自动测试
自动测试就是利用一些测试工具,模拟用户的使用流程,让它们自动运行来查找缺陷。也可以编写一些代码,设定特定的测试场景,来自动寻找缺陷
优点:能够很快、很广泛的查找缺陷,同时可以做很多重复性的工作,大大提高了测试的效率和测试的准确性,而且写出的比较好的测试脚本,还可以在软件生命周期的各个阶段重复使用。
3.软件测试的流程:集成测试、需求测试、安装测试、文档测试、性能测试
集成测试:系统各模块组装后,根据业务流程的要求,能够正确地完成各业务功能,并且数据的处理和输出正确。
需求测试:检查软件产品是否满足该项目的需求说明书中规定的功能需求,检查需求的完整性、一致性、最新性,该项测试重点是需求满足的完整性。
安装测试:根据项目提供的安装文档中的安装步骤,搭建系统运行环境,检查系统安装过程是否正确。可能包括数据库服务器的安装与配置、应用服务器、控件注册、客户端的安装与配置、应用软件的安装。
文档测试:文档测试从项目立项时就开始了,实际上就是文档检查,包括规范性检查和有效性检查。目的是使项目相关的文档和记录既规范又有意义,不是为了应付的无用文件。对于技术文档如:需求说明书、概要设计、详细设计等,在技术评审时也进行了评测。用户文档,如安装手册、用户操作手册,根据文档检查规范进行。
性能测试:这部分测试的来源,严格来讲,取决于用户对软件特性的一些特定要求,另外,就是公司的开发部门对产品的一些基本的性能要求。若用户从业务的角度考虑,对软件产品本身有特定的非功能要求,则必须在软件需求说明书中加以说明,使之具有可度量和可测试性。对于一些多用户环境或数据处理能力和负载方面的测试,很难通过手工搭建测试环境来测试,所以可以参考使用一些专门的性能测试工具和手工测试相结合的方式。
软件测试需掌握的2个重点:
白盒测试的常用的技术:
1、静态分析技术
2、动态分析技术
3、测试数据生成
4、测试覆盖率(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、路径覆盖)
黑盒测试的常用技术:
1、没有用户参与的黑盒测试
2、有用户介入的黑盒测试
黑盒测试和白盒测试都是测试设计的方法。黑盒测试把系统理解为一个内部不可见的盒子,因此不需要明白它的内部结构。黑盒测试一般关注的是对功能需求的测试。白盒测试设计允许你观察盒子内部,让你了解其内部结构和运作原理,并使用对这些知识的了解来指导测试用例的设计。为了完全测试一个软件,二者缺一不可。
软件测试基础知识:
1. 测试专业技能
测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主。测试专业技能涉及的范围很广:既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、功能测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。
2. 软件编程技能
软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的开发经验。因此,测试人员要想得到较好的职业发展,必须能够编写程序。只有能给编写程序,才可以胜任诸如单元测试、集成测试、性能测试等难度较大的测试工作。
此外,对软件测试人员的编程技能要求也有别于开发人员:测试人员编写的程序应着眼于运行正确,同时兼顾高效率,尤其体现在与性能测试相关的测试代码编写上。因此测试人员要具备一定的算法设计能力。依据资深测试工程师的经验,测试工程师至少应该掌握Java、C#、C++之类的一门语言以及相应的开发工具。
3. 网络、操作系统、数据库、中间件等知识
与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。由于测试中经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要掌握更多网络、操作系统、数据库等知识。
在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是测试工作中经常遇到的知识。
操作系统和中间件方面,应该掌握基本的使用以及安装、配置等。例如很多应用系统都是基于Unix、linux来运行的,这就要求测试人员掌握基本的操作命令以及相关的工具软件。而WebLogic、Websphere等中间件的安装、配置很多时候也需要掌握一些。
数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库。因此不但要掌握基本的安装、配置,还要掌握SQL。测试人员至少应该掌握Mysql、MS Sqlserver、Oracle等常见数据库的使用。
源地址:http://www.lirenedu.org/index.php?ack=xinwen&id=1051 |
|