软件测试过程中,最主要的就是要掌握好软件测试的方法,掌握好了软件测试方法,有利于测试技能的大幅度提高。
软件测试方法
== 软件测试方法是指测试软件的方法。随着软件测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择合适的软件测试方法可以让我们事半功倍。==
一、根据是否要走查代码,分为白盒测试、灰盒测试、黑盒测试;
二、分为手工测试、自动化测试和性能测试:
手工测试:UI测试、冒烟测试、随机测试、本地化测试、安装测试、卸载测试;
自动化测试:
性能测试:健全测试、衰竭测试、负载测试、强迫测试、压力测试、恢复测试;
三、根据是否要运行程序,分为静态测试和动态测试;
四、按测试阶段可分为:单元测试、集成测试、系统测试、回归测试、验收测试、α测试_Alpha测试、β测试,英文是Beta testing。又称Beta测试,用户验收测试(UAT);
五、其他测试方法:端到端测试、接受测试、安全测试、兼容性测试、可用性测试、比较测试、边界测试、强力测试、装配安装测试、隐藏数据测试、等价划分测试、判定表测试、深度测试、基于设计、文档测试、域测试、接口测试、逆向测试、非功能性测试、极限测试等。
其中一些测试方法的定义
端到端测试
端到端测试,英文是End to End Testing。
端到端测试类似于系统测试,测试级的“宏大”的端点,涉及整个应用系统环境在一个现实世界使用时的模拟情形的所有测试。
例如与数据库对话,用网络通讯,或与外部硬件、应用系统或适当的系统对话。端到端架构测试包含所有访问点的功能测试及性能测试。
端到端架构测试实质上是一种"灰盒"测试,一种集合了白盒测试和黑盒测试的优点的测试方法。
健全测试
== 健全测试,英文是Sanity testing。==
健全测试是指一个初始化的测试工作,以决定一个新的软件版本测试是否足以执行下一步大的测试能 力。
例如,如果一个新版软件每5分钟与系统冲突,使系统陷于泥潭,说明该软件不够“健全”,不具备进一步测试的条件。
衰竭测试
衰竭测试,英文是Failure Testing。
衰竭测试是指软件或环境的修复或更正后的“再测试”。可能很难确定需要多少遍再次测试。尤其在接近开发周期结束时。自动测试工具对这类测试尤其有用。
负载测试
负载测试,英文是Load testing。
负载测试是测试一个应用在重负荷下的表现。例如测试一个 Web 站点在大量的负荷下,何时系统的响应会退化或失败,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。
负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。
强迫测试
强迫测试,英文是Force Testing。
强迫测试是在交替进行负荷和性能测试时常用的术语。也用于描述对象在异乎寻常的重载下的系统功能测试之类的测试,如某个动作或输入大量的重复,大量数据的输入,对一个数据库系统大量的复杂查询等。
压力测试
压力测试,英文是Stress Testing。和负载测试差不多。
压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。
恢复测试
== 恢复测试,英文是Recovery testing。==
恢复测试是测试一个系统从如下灾难中能否很好地恢复,如遇到系统崩溃、硬件损坏或其他灾难性问题。恢复测试指通过人为的让软件(或者硬件)出现故障来检测系统是否能正确的恢复,通常关注恢复所需的时间以及恢复的程度。
==恢复测试主要检查系统的容错能力。==当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。恢复测试首先要采用各种办法强迫系统失败,然后验证系统是否能尽快恢复。对于自动恢复需验证重新初始化(reinitialization)、检查点(checkpointing mechanisms)、数据恢复(data recovery)和重新启动 (restart)等机制的正确性;对于人工干预的恢复系统,还需估测平均恢复时间,确定其是否在可接受的范围内。
可用性测试
可用性测试,英文是Practical Usability Testing。
可用性测试是对“用户友好性”的测试。显然这是主观的,且将取决于目标最终用户或客户。用户面谈、调查、用户对话的录象和其他一些技术都可使用。程序员和测试员通常都不宜作可用性测试员。
比较测试
比较测试,英文是Compare Testing。
比较测试是指与竞争伙伴的产品的比较测试,如软件的弱点、优点或实力。来取长补短,以增强产品的竞争力。
强力测试
强力测试,英文是Mightiness Testing。
强力测试通常验证软件的性能在各种极端的环境和系统条件下是否还能正常工作。或者说是验证软件的性能在各种极端环境和系统条件下的承受能力。比如,在最低的硬盘驱动器空间或系统记忆容量条件下,验证程序重复执行打开和保存一个巨大的文件1000次后也不会崩溃或死机。
装配安装
装配/安装/配置测试是验证软件程序在不同厂家的硬件上,所支持的不同语言的新旧版本平台上,和不同方式安装的软件都能够如预期的那样正确运行。比如,把英文版的 Microsoft Office 2003安装在韩文版 的Windows Me 上,再验证所有功能都正常运行。
隐藏数据
隐藏数据测试在软件验收和确认阶段是十分必要和重要的一部分。程序的质量不仅仅通过用户界面的可视化数据来验证,而且必须包括遍历系统的所有数据。
假设一个应用程序要求用户两条信息-----用户名和密码来创建帐户。这个用户输入这两条数据后保存。最后,一个确认窗口将通过数据库中找到这条数据来显示用户名和密码给用户。为了验证所有的数据保存是否正确,一个QA测试人员会在这个确认窗口简单的查看下用户名和密码。如果他们成功了?假设数据库记录了第三条信息----创建日期,它可能不会出现在确认窗口,而只在存档中才出现。如果创建日期保留的不正确,而QA测试人员只验证屏幕上的数据,那么这个问题就不可能被发现。创建日期可能就是一个bug,由于一个用户帐户保存了一个错误的日期到数据库中,这个问题也不可能会被引起注意,因为它被用户界面所隐藏。这只是一个简单的例子,但是它却演化出了一点:隐藏数据测试的重要性。
判定表
判定表的英文是decision table,是指一个表格,用于显示条件和条件导致动作的集合。
定义:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。
判定表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。
在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题
深度测试
深度测试的英文Depth test ,是指执行一个产品的一个特性的所有细节,但不测试所有特性。
当比较函数返回真的时候才显示出效果来。必须启用“#深度测试”,才能执行测试。不使用的时候需要关闭。
基于设计
基于设计的测试的英文是design-based testing,是根据软件的构架或详细设计引出测试用例的一种方法。
一种基于设计模型的测试方法(Model Based TestIng System,MATIS).该方法利用用户界面自动生成方法,把设计模型中的类属性定义和实现中的控件属性组织在一起,构建描述界面的逻辑对照表,辅助测试脚本引擎执行自动测试脚本.借助设计模型中扩展的类定义,MATIS方法可以自动生成测试用例和测试数据。
域测试
== 域测试的英文是domain testing,定义参考等价划分测试(equivalence partition testing);==
一般分为单域测试和多域测试,其中单域测试包括设备测试和业务测试,设备测试包括测试某个系统的软交换设备、中继媒体网关设备、信令网关设备、接入媒体网关和IAD等设备。
等价类划分有两种不同的情况:有效等价类和无效等价类。设计时要同时考虑这两种等价类,因为软件不仅要能接收合理的数据,也要能经受意外的考验。
一有效等价类:是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
二无效等价类:与有效等价类的定义恰巧相反。
逆向测试
== 逆向测试/反向测试/负面测试的英文是Negative Testing,测试瞄准于使系统不能工作。==
负面测试与正面测试的比较:
负面测试(Negative testing)是相对于正面测试(Positive testing)而言的。
它们也是测试设计时的两个非常重要的划分。简单点说,正面测试就是测试系统是否完成了它应该完成的工作;而负面测试就是测试系统是否不执行它不应该完成的操作。形象一点,正面测试就象一个毕恭毕敬的小学生,老师叫我做什么,我就做什么;而负面测试就象一个调皮捣蛋的孩子,你叫我这样做,我偏不这样做,而且和你对着干。开发人员也是最讨厌修改此类bug的。
非功能性
非功能性需求测试的英文是non-functional requirements testing ,是与功能不相关的需求测试,如:性能测试、可用性测试等。
为什么非功能性需求很重要?
在您设计解决方案的过程中满足功能性需求当然是很重要的。但是,如果没有考虑非功能性需求,您的解决方案则很难取得实效。
非功能性需求特点:1.不要脱离实际环境;2.可靠性;3.可用性;4.有效性;5.可维护性;6.可移植性。
极限测试
简介:极限测试本质上是为了满足极限测试的思想和流程而设计的一套测试策略和流程,其本身并不局限于使用特定的测试技术和方法。
过程
1.单元测试
2.验收测试
要熟记各个测试方法的意义,并且,灵活的运用它,这样,测试技能,将能更上一层楼。
需要领取面试资料,软件测试资料全集,点击链接加入群聊【Python自动化测试交流群】领取!