软件测试技术培训

来源:互联网 发布:c 和java哪个工资高 编辑:程序博客网 时间:2024/04/27 17:51

 

一、软件测试概述

软件测试是软件开发过程的重要组成部分,是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审。测试流程决定软件质量,软件测试如同软件开发一样,需要经过收集测试需求、确定测试策略、设计测试、执行测试、分析测试等流程。软件测试不是软件开发的最后阶段,而是贯穿于软件项目的整个生命周期。决定软件测试成败的关键是软件测试需求是否完整、准确,测试策略是否有效和实用,测试设计是否覆盖了测试需求。

二、测试技术分类

2.1按时间划分

软件测试按时间可以分为单元测试和综合测试、验收测试。

1)单元测试。

是指开发出一个模块之后就进行的测试,这个阶段主要任务是根据系统设计文档,来测试程序的业务逻辑是否正确,一般由先由开发人员自检,再由测试人员测试。在规模较大的软件公司测试人员会开发相对应的测试程序,例如我们使用的DevExpress组件开发了大量的测试代码。

 

在单元测试中,开发人员多采用白盒测试,因为开发人员了解程序的设计细节。而且这也是最有可能使用自动化测试技术的地方。因为在单元测试,会针对某一个功能或方法编写一个测试用例,当一个程序只做了小范围修改时,我们只需要再次运行一下测试用例就可以完全检测整个程序,而不用花费大量的时间去进行全部重新测试一次。这种做法,在软件工程中称为回归测试。

 

单元测试主要是检测程序是否实现了详细设计中规定的功能及算法,发现编程和详细设计中的错误,因此单元测试的计划应该在详细设计界面中制定。

2)集成测试。

也叫组装测试,在开发工作完成之后,把程序组装起来时进行的测试。因为在单元测试时每个模块都能正常运行,但这些模块集成在一起之后却不能正常工作。主要原因是,模块相互调用时接口会引入许多新问题。例如,数据经过接口可能丢失;一个模块对另一模块可能造成不应有的影响;几个子功能组合起来不能实现主功能;误差不断积累达到不可接受的程度;全局数据结构出现错误。

集成测试主要是为了发现设计阶段产生的错误,因此集成测试的计划应该在总体设计时就制定出来。

3)验收测试。

确认测试又称有效性测试,是在模拟现实的环境下,运用黑盒测试的方法,验证被测软件是否满足软件需求规格说明书列出的功能及性能。确认测试计划应该在需求分析阶段制定。

它主要包含以下几个方面:

a)系统的安装与启动。

b)程序的功能测试(正例、重要算法、边界、时序、反例、错误处理)。

c)性能测试(正常的负载、容量变化)。

它主要包括并发性能测试、疲劳强度测试、大数据量测试和速度测试。

d)配置测试。(如服务器选择、数据库变更)

e)平台测试。(Window/Linux 、IE/FireFox)

f)安全性测试。

通过非法登陆、漏洞扫描、模拟攻击等方式检测系统的认证机制、加密机制、防病毒功能等安全防护策略的健壮性。

g)恢复测试。在出现掉电、硬件故障或切换、网络故障等情况时,系统是否能够正常运行。

2.2按对系统内部结构了解程度划分

从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试;

1)白盒测试。

白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

2)黑盒测试。

黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。

2.3按测试方式划分

按测试方式,测试可分为手工测试和自动化测试;

1)手工测试。

  主要是通过手工测试系统。

2)自动化测试。

   主要是通过自动化测试工具来完成测试工作。主要有WinRunner、TestComplete、JUnit、NUnit、QTP等待工具,但这些工具有各自的用途,有的用于单元测试、有的用于UI测试、有的用于性能测试。

自动化测试工具虽然有很多优点,但我们要避免陷入过渡追求自动化测试技术的误区。因为自动化测试确实可以在某些方面显著提高测试效率和准确性,但是自动化测试只适合测试软件的某些方面的质量(例如性能测试,回归测试等),80%左右的软件缺陷是靠手工测试发现的。

对于某些特别需要自动化测试的软件特性,需要加强开发软件测试工具,而不是全部依赖市场上的现有测试工具。这是因为商业工具功能繁多,价格昂贵,培训和学习周期很长,选择不当就会造成巨大浪费。

三、测试用例的设计

测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果的条件或变量,以便测试某个程序是否满足某个特定需求。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。

测试用例是整个测试的核心,一个好的用例可以节省测试人员很多时间,而且易于发现问题所在,下面讲述常见的用例设计方法。

3.1等价类划分:

是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。

1)  等价类的定义: 是指把测试数据进行分类,以点代面,用最少测试数据来覆盖所有的测试范围。以我们的人事档案为例,测试出生年月的有效性时,我们可以定制以下等价类。

 

 

2)  等价类的划分。可以分为有效等价类和无效等价类。

a)有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。主要是检验程序是否实现了设计文档中所规定的功能。例如上表中等价类A。

b)无效等价类:与有效等价类的定义恰巧相反。因为软件不仅要能接收合理的数据,也要能经受意外的考验。这样的测试才能确保软件具有更高的可靠性。

3.2边界值分析法

长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。我们在设计测试用例时,首先要确定边界情况。例如员工的出生日期范围,是随着时间的变化而变化的,现在的范围是1910-01-01到1993-01-01,但10year之后就变成了1920-01-01到2003-01-01。

从某种意议上来说,边界值分析法是等价分类法的补充,它有助于我们设计出更合理的等价分类用例。我们在制定等价分类时,应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。下面以身份证号码为例,再做的一个测试用例。

1)正常情况下的测试用例。

2)异常情况下的测试用例。

因为上表的测试用例只是考虑了用户录入的字符全部是数据的情况,但其实用户有可能录入字母,或者是小数点等待。因此我们还需要设计一个包含异常情况的测试用例。

 

 

3.3错误推测法

是根据测试者的经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法,但前提是对系统的业务与需求比较熟悉。例如下图中的性别,我们可以尝试是否可以录入除男女之外的性别。

3.4因果图方法

前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输出结果,特别是多个输入条件组合时产生的结果,下面以身份证号码为例,判断各种条件的组合所输出的结果。

  

  当用户录入的内容是条件2和条件4的组合时,我们的系统应产生什么内容。

 

四、常用的功能测试方法(本节内容取自系统分析员之窗,但作者忘记了,sorry)

功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下:
1、页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。
2、相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。
3、检查按钮的功能是否正确:如update, cancel, delete, save等功能是否正确。
4、字符串长度检查:输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错。
5、字符类型检查:在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错。
6、标点符号检查:输入内容包括各种标点符号,特别是空格,各种引号,回车键。看系统处理是否正确。
7、中文字符处理:在可以输入中文的系统输入中文,看会否出现乱码或出错。
8、检查带出信息的完整性:在查看信息和update信息时,查看所填写的信息是不是全部带出。,带出信息和添加的是否一致
9、信息重复:在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理。
10、检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理。
11、检查添加和修改是否一致:检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型。
12、检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错。同时,也要注意,会不会报和自己重名的错。
13、重复提交表单:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。
14、检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错。
15、search检查: 在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确。如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确。
16、输入信息位置:注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方。
17、上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。
18、必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加*
19、快捷键检查:是否支持常用快捷键,如Ctrl+CCtrl+V Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。
20、回车键检查:在输入结束后直接按回车键,看系统处理如何,会否报错。

 

 

原创粉丝点击