自动化测试基础
2018-09-02 本文已影响5人
唐紫依
- 参考资料:《Selenium 2 自动化测试实战 --基于 Python语言》
一、软件测试分类
1.根据项目流程阶段划分软件测试
- 单元测试:单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码段进行测试的过程。
- 集成测试:集成测试是在单元测试的基础上,先通过单元模块组装成系统或子系统,再进行测试。重点是检查模块之间的接口是否正确。
- 系统测试:系统测试是针对整个产品系统进行的测试,验证系统是否满足需求规格的定义,以及软件系统的正确性和性能等是否满足其需求规格的要求。
- 验收测试:验收测试是部署软件之前的最后一个测试阶段。验收测试的目的是确保软件准备就绪,向软件购买者展示该软件系统能够满足用户的需求。
2.白盒测试、黑盒测试、灰盒测试
- 黑盒测试:黑盒测试,指的是把测试的软件看作一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只关心软件的输入和输出结果。主要针对软件界面和软件功能进行测试。
- 白盒测试:白盒测试,指的是把盒子打开,去研究里面的源代码和程序执行结果。它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条逻辑路径是否都能按预定要求正确工作。
- 灰盒测试:灰盒测试介于黑盒测试与白盒测试之间。可以这样理解,灰盒测试既关注输出对于输入的正确性,同时也关注内部表现。但这种关注不像白盒测试那样详细、完整,它只是通过一些表征性的现象、事件、标志来判断内部的运行状态。
3.功能测试与性能测试
- 功能测试:功能测试主要检查实际功能是否符合用户的需求,因此测试的大部分工作也是围绕软件的功能进行。设计软件的目的就是满足用户对其功能的需求,如果偏离了这个目的,则任何测试工作都是没有意义的。
- 性能测试:性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行的测试。
- 时间性能:主要是指软件的一个具体的响应时间。
- 空间性能:主要指软件运行时所消耗的系统资源。
4.手工测试与自动化测试
- 手工测试:手工测试就是由测试人员一个一个地去执行测试用例,通过键盘鼠标等输入一些参数,并查看返回结果是否符合预期结果。
- 自动化测试:自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计测试用例并通过评审之后,由测试人员根据测试用例中描述的规则流程一步步执行测试,把得到的实际结果与期望结果进行比较。在此过程,为了节省人力、时间和硬件资源,提高测试效率,便引入来自动化测试的概念。
- 功能自动化测试:是把以人为驱动的测试行为转化为机器执行的一种过程。
- 性能自动化测试:通过性能工具来模拟成千上万的虚拟用户向系统发送请求,从而验证系统的处理能力。
5.冒烟测试、回归测试、随机测试、探索性测试和安全测试
- 冒烟测试:是指在对一个新版本进行大规模的系统测试之前,先验证一下软件的基本功能是否实现,是否具备可测试。目的是先投入较少的人力和时间验证一个软件的主要功能,如果主要功能都没有运行通过,则打回开发组重新开发。
- 回归测试:回归测试是指修改了旧代码后,重新进行测试以确认修改后没有引入新的错误或导致其他代码产生错误。
- 随机测试:是指测试中的所有输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
- 探索性测试:探索性测试可以说是一种测试思维技术,它没有很多实际的测试方法、技术和工具,但却是所有测试人员都应该掌握但一种测试思维方式。探索性测试强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。
- 安全测试:安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成至发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。
二、分层的自动化测试
1.单元自动化测试
- 单元自动化测试是指对软件中的最小可测试单元进行检查和验证。
2.接口自动化测试
- Web 应用的接口自动化测试大体分为两类:模块接口测试和Web接口测试。
3.UI 自动化测试
- UI层是用户使用产品的入口,所有功能都通过这一层提供并展示给用户,UI自动化测试则指这一层的自动化测试。
三、自动化测试的适用场景
- 任务测试明确,不会频繁变动。
- 每日构建后的测试验证。
- 比较频繁的回归测试。
- 软件系统界面稳定,变动少。
- 需要在多平台上运行的相同测试案例、组合遍历型的测试,大量的重复任务。
- 软件维护周期长。
- 项目进度压力不太大。
- 被测软件系统开发较为规范,能够保证系统的可测试性。
- 具备大量的自动化测试平台。
- 测试人员具备较强的编程能力。
并非以上10条都具备的情况才能开展自动化测试工作,因此需要做出权衡。
注:最近开始入坑 UI 自动化测试领域的内容,研究方向在 Selenium 及 UIRecorder 相关的工具和实现方案,欢迎道友交流。