我们的软件在设计过程中,以及设计结束后都会存在错误(error)、缺陷(fault)、失效(failure)、事故(incident)。因此测试就是要处理错误、缺陷。失效和事故,测试有两个显著的目标:找出目标或者演示正确的执行。
测试用例——测试用例有一个标识,并且与行为有关,测试需要输入一组数据还有一个预期输出表。输入实际有两只类型:前提(在测试用例执行之前已经存在的环境)和某种测试方法所标识的实际输入,预期输出也有两类:后果和实际输出。
标记测试的两种方法:功能性测试和结构性测试。
功能性测试:任何程序都可以看做是将从输入定义域取值映射到输出值域的函数。功能测试又叫做是黑盒测试,功能性测试的优点是:①功能性测试与软件如何实现无关,所以如果实现发生变化,测试用例依然有效。②测试用例开发可以与实现并行进行,可以缩短项目的总用时但是这样测试用例方面可能会存在大量的冗余。
结构性测试;又叫白盒测试,与黑盒测试相比,差别在于白盒对于实现是已知的,并被用来标识测试用例,能看清测试的内部结构,以及实现的方法这对于测试人员根据功能实际实现的方式来标识测试用例。
错误与缺陷分类:我们测试主要就是为了发现程序存在的缺陷,缺陷有多种分类方式,可以按照严重程度分为轻微,中等,重度,极为严重等不同程度,有关综合缺陷的分类讨论参照IEEE标准分类可以分为一下几种:①输入输出缺陷,②逻辑缺陷、③计算缺陷、④接口缺陷、⑤数据缺陷。
测试级别:测试级别反映软件开发生命周期瀑布模型中的抽象级别。
测试级别与功能性和机构性测试存在现实的关系大多实践者同意功能性测试适合单元级别以上,而结构性测试在系统级别以上进行。