软件测试是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。
软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例去执行程序,以发现软件故障的过程。
软件测试是一种软件质量保证活动,其动机是通过一些经济有效的方法,发现软件中存在的缺陷,从而保证软件质量。
软件测试的目的是发现错误,但不能保证没有错误。
软件测试应贯穿于软件开发的整个期间。
软件开发经过制定计划、需求分析、设计阶段之后,才能进入编写程序阶段。但是,表现在程序中的故障,并不一定是编码所引起的,很可能是详细设计、概要设计阶段,甚至是需求分析阶段的问题引起的。即使针对源程序进行测试,所发现故障的根源也可能在开发前期的各个阶段。解决问题、排除故障也必须追溯到前期的工作。因此,软件测试应贯穿于软件定义与开发的整个期间。
测试环境是指用来运行软件的环境。测试环境 = 硬件+软件+网络+数据准备+测试工具
搭建软件测试环境还应注意:
总之,搭建的软件测试环境应与软件生产运行环境一致,但还要从软件开发环境中独立出来。
按照缺陷的来源,软件缺陷分为文档缺陷、代码缺陷、测试缺陷、过程缺陷。
缺陷的种类有:输入/输出缺陷、逻辑缺陷、计算缺陷、接口缺陷、数据缺陷。
生命周期:
基本流程:
区别:白盒测试需要源代码;黑盒测试则不需要,只需要可执行文件。黑盒测试从用户的角度出发,不考虑内部实现,只关注程序外在功能,白盒测试则是从开发人员的角度,对程序的逻辑结构进行测试。白盒测试在编码、集成测试阶段进行,黑盒测试在系统测试、确认测试阶段进行。
联系:白盒测试和黑盒测试都是软件测试的一个方面;两者有时结合起来同时进行测试,称为“灰盒测试”。
等价类划分法:完全不考虑程序的内部结构,只根据程序规格说明书对输入范围进行划分,把所有可能的输入数据,即程序输入域划分为若干个互不相交的子集,称为等价类,然后从每个等价类中选取少数具有代表性的数据构成测试用例,然后进行测试。
边界值分析法:在等价类划分基础上进行边界值分析测试的基本思想是:选取正好等于、刚刚大于或刚刚小于等价类边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
因果图法:如果输入之间有关系,例如,约束关系、组合关系,这种关系用等价类划分的边界值分析是很难描述的,因此必须考虑使用一种适合于描述对于多种条件的组合,产生多个相应动作的测试方法。首先确定软件规格中的原因和结果,然后确定原因和结果之间的逻辑关系,根据这些关系画出因果图,再确定因果图中的各个约束,在因果图上用一些记号表明约束或限制条件,最后把因果图转换为决策表,并根据决策表设计测试用例。
决策表法:决策表是把作为条件的所有输入的各种组合值以及对应输出值都罗列出来而形成的表格。它能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。决策表通常由条件桩、条件项、动作桩和动作项四部分组成。动作项和条件项紧密相关,指出在条件项的各组取值情况下应该采取的动作。
代码审查:软件开发人员详细向测试人员讲解代码实现情况,并采用静态分析工具进行分析。
代码走查:由测试人员组成小组,准备一批有代表性的测试用例,集体扮演计算机的角色,沿程序的逻辑,逐步运行测试用例,查找被测软件缺陷。
缺陷模式:是指程序中经常发生的错误或缺陷所呈现的语法及语义特征。通常由具有领域程序设计经验的程序员或者测试人员总结出来。不同的编程语言,往往对应于不同的缺陷模式集。
基于缺陷模式的软件测试技术特点:针对性强;往往能发现其他测试技术难以发现的故障;工具自动化程度高以及测试效率高;缺陷定位准确。
以缺陷产生后果的严重性高低为评判标准,从程序的源代码形式着眼,对缺陷模式进行分类:
集成测试在开发过程中的概要设计阶段相对应,在开发过程中并行进行;系统测试则在开发完成时进行。集成测试采用黑白盒结合的测试方法;而系统测试则采用黑盒测试方法。集成测试的测试内容是各模块之间的接口,以及集成后的功能,目的是找出接口上的错误;系统测试的测试内容是整个系统的功能,目的是找出与需求不一致的部分。集成测试是面向开发者的测试;系统测试是面向用户的测试。