理论上讲,做软件测试的要求有什么就要懂什么,不是什么人都可以做的。但实际上测试工程师是有初、中、高三级之分的。而初级工程师所需要的知识不多,一般只需要学过简单的理论即可。中、高级相信需要一段过渡时期的,它们都必须以工具为主。
至于教材,可以说所有的计算机教材都是其中的一部分,就差你是什么方向的测试工作。一般来说,开始的时候,你只需要一本《软件测试理论》入门即可。有空可以看看《测试的艺术》一书(得益网有得下载)。
什么数据库\开发语言,这些与软件测试都是什么关系???
至于这个问题,首先要说明,软件测试一般可分为:单元测试、集成测试、系统测试、验收测试。单元测试一方面是直接对代码进行直读,所以它要求必需懂得开发语言,另一方面它要写驱动和桩,所以也要懂开发语言。(一般单元测试都是要开发人员扶助的)。而数据库,简单来说每当我们要验证一条记录的所有信息是否完整,都需要进入数据库中查看,查看是否有漏某个字段;而从更高层次来讲,它涉及到系统性能调优问题。
软件测试基本理论?
软件测试概念:通过各种手段和测试工具,判断软件系统是否能够满足预期期望。
从软件开发的过程按阶段划分有
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) 自顶向下的增殖方式
* 这种集成方式将模块按系统程序结构,沿控制层次自顶向下进行组装。
* 自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。
* 选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。
(2) 自底向上的增殖方式
* 这种集成的方式是从程序模块结构的最底层的模块开始集成和测试。
* 因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。
* 自顶向下增殖的方式和自底向上增殖的方式各有优缺点。
* 一般来讲,一种方式的优点是另一种方式的缺点。
(3) 混合增殖式测试
* 衍变的自顶向下的增殖测试
– 首先对输入/输出模块和引入新算法模块进行测试;
– 再自底向上组装成为功能相当完整且相对独立的子系统;
– 然后由主模块开始自顶向下进行增殖测试。
* 自底向上-自顶向下的增殖测试
– 首先对含读操作的子系统自底向上直至根结点模块进行组装和测试;
– 然后对含写操作的子系统做自顶向下的组装与测试。
* 回归测试
– 这种方式采取自顶向下的方式测试被修改的模块及其子模块;
– 然后将这一部分视为子系统,再自底向上测试。
关键模块问题
* 在组装测试时,应当确定关键模块,对这些关键模块及早进行测试。
* 关键模块的特征:
① 满足某些软件需求;
② 在程序的模块结构中位于较高的层次(高层控制模块);
③ 较复杂、较易发生错误;
④ 有明确定义的性能要求。
确认测试(Validation Testing)
* 确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。
* 对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。
1. 进行有效性测试(黑盒测试)
* 有效性测试是在模拟的环境 (可能就是开发的环境) 下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。
* 首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具体的测试用例。
* 通过实施预定的测试计划和测试步骤,确定
– 软件的特性是否与需求相符;
– 所有的文档都是正确且便于使用;
– 同时,对其它软件需求,例如可移植性、兼容性、出错自动恢复、可维护性等,也都要进行测试
* 在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类:
– 测试结果与预期的结果相符。这说明软件的这部分功能或性能特征与需求规格说明书相符合,从而这部分程序被接受。
– 测试结果与预期的结果不符。这说明软件的这部分功能或性能特征与需求规格说明不一致,因此要为它提交一份问题报告。
2. 软件配置复查
n 软件配置复查的目的是保证
u 软件配置的所有成分都齐全;
u 各方面的质量都符合要求;
u 具有维护阶段所必需的细节;
u 而且已经编排好分类的目录。
n 应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性和正确性。
验收测试(Acceptance Testing)
* 在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。
* 验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。
* 由用户参加设计测试用例,使用生产中的实际数据进行测试。
* 在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。
* 确认测试应交付的文档有:
– 确认测试分析报告
– 最终的用户手册和操作手册
– 项目开发总结报告。
系统测试(System Testing)
* 系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
* 系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系统的定义不符合或与之矛盾的地方。
软件测试需要学习那些基础知识
具备计算机操作基础:这点对于计算机专业的学生没有什么大问题的,会使用电脑操作、会简单Office软件。如果不会呢,可以自己在网上找资料自学,很简单。
具备软件测试基础知识:软件测试基础理论知识。实践需要理论知识指导。我们可以从相关书籍或者网上找到软件测试基础理论知识,具有详细的理论解释。
具备一定的数据库操作技术:对于常用的数据库,简单的操作要具备。学习数据库可以自己安装一个数据库,常练习。
具备一定的逻辑推理能力:这点主要偏向于写测试用例。测试用例是软件测试的核心。写测试用例,可以参考网络一些比较经典的例子,模仿写。写多了经验就有了。
掌握软件测试缺陷管理工具:QC、Mantis、JIAR等。软件测试离不开缺陷管理。软件测试缺陷管理工具有效管理缺陷、提高软件质量。这方面的知识建议从网络或者书籍途径学习。
掌握软件测试工具:Loadrunner、ruby、QTP等,学习测试工具提高测试效率,这也有助于你测试职业生涯的规划。
学会一门开发脚本语言:学会开发脚本语言有助于学习软件测试工具。根据自己的兴趣和基础选择学习。
软件测试入门需学习哪些基础知识?
软件测试基础学习需要掌握哪些内容?首先,要有宽泛的计算机基础知识。微机原理,数据结构,数据库,操作系统原理,编译原理,逻辑,编程语言,网络,等等,都要系统地学习过。都精通不大可能,因为人的兴趣都不相同,但是这些功课的基本知识点是应当了解的。
我们在谈到职业的类别的时候,我们可以说C程序员,C#程序员,Java程序员,而没有C测试员,C#测试员,Java测试员,程序员可以只擅长某一门编程语言,测试员却不行。为什么呢?
测试员是代表用户的,在做测试的时候,他(她)需要考虑到方方面面的事情。例如对于一个用C写的上网拨号程序,测试员需要考虑:
(1) 程序的功能是否正确;(要求计算机知识)
(2) 是否符合用户的使用习惯;(要求界面设计知识和换位思考能力)
(3) 性能是否满足要求,例如长时间使用;稳定性;(要求深入的计算机知识)
(4) 是否能够满足用户可能的不同操作系统的要求;(要求计算机知识)
(5) 如果在全球发布,是否满足不同语言和文化的需求;(要求软件国际化测试知识)
(6) 如何搭建测试环境;(动手能力,硬件知识)
(7) 做代码检查;(比较深入的C语言知识)
(8) …
所以,各方面都了解一点,你在做测试的过程当中你会感觉顺手得多。如果某写方面还差一些,没有关系,计算机行业的特点就是边做边学,只要是个有心人,学习是很快的。
其次,要掌握一门编程语言。原因很简单:一行代码不会,你始终是门外汉。
软件测试应具备哪些基础知识
理论上讲,做软件测试的要求有什么就要懂什么,不是什么人都可以做的。但实际上测试工程师是有初、中、高三级之分的。而初级工程师所需要的知识不多,一般只需要学过简单的理论即可。中、高级相信需要一段过渡时期的,它们都必须以工具为主。
至于教材,可以说所有的计算机教材都是其中的一部分,就差你是什么方向的测试工作。一般来说,开始的时候,你只需要一本《软件测试理论》入门即可。有空可以看看《测试的艺术》一书(得益网有得下载)。
什么数据库\开发语言,这些与软件测试都是什么关系???
至于这个问题,首先要说明,软件测试一般可分为:单元测试、集成测试、系统测试、验收测试。单元测试一方面是直接对代码进行直读,所以它要求必需懂得开发语言,另一方面它要写驱动和桩,所以也要懂开发语言。(一般单元测试都是要开发人员扶助的)。而数据库,简单来说每当我们要验证一条记录的所有信息是否完整,都需要进入数据库中查看,查看是否有漏某个字段;而从更高层次来讲,它涉及到系统性能调优问题。
软件测试基础知识
这种书,内容都差不多,随便买一个本看就好了。网上书店很多的。
软件测试,需要什么基本知识!
最基本的知识,软件测试基础知识,测试流程、测试方法、测试用例编写方法,bug生命周期、bug严重级别。。。。。等等等等,网上查一下
除此以外,操作系统windows中IIS部署网站、linux系统基本命令,
数据库基本查询语句,sqlserver 2005 或者mysql等数据的了解
网络基本知识的了解
如果你想往深了研究,还需要掌握基本测试工具的使用,比如qtp、loadrunner等,还需要自己编写脚本进行测试
软件测试的基础知识有哪些?
这个就太宽泛了,最基本的c语言、数据库必须会。编写测试用例的方法等。
转载请注明出处51数据库 » 软件测试基础知识大全 软件测试应具备哪些基础知识