zoukankan      html  css  js  c++  java
  • 【E2E Testing】学习(1):认识软件测试

    项目需要端到端的测试,作为测试小白,打算撰写系列学习笔记。安排如下:

    1. 软件测试的分类
    2. 自动化测试初识
    3. 端到端测试初识
    4. Protractor了解
    5. ......

    这篇是第一篇,拟从测试的分类了解软件测试的工作对象、目标、流程以及方法。


     软件测试网(softwaretestinghelp.com)提供了比较全面的测试分类,本文主要是对它内容的一些整理。

    • 黑盒测试(Black Box Testing):在这种类型的测试中不考虑内部系统设计。 黑盒测试应该和白盒测试相对,我想应该是最top的测试分类概念。网站也将黑盒测试分成了功能测试以及非功能测试。
    • 白盒测试(White Box Testing):也称为玻璃箱测试,基于有关应用程序代码内部逻辑的知识。 应该知道内部软件和代码的工作方式才能进行这种类型的测试。 在这些测试下,基于代码语句,分支,路径,条件等的覆盖范围。在黑盒测试下,我们从用户的角度测试软件,而在白盒中,我们查看并测试了实际代码。相关说明见网站

    按照测试对象可以分成功能测试(functional testing type)以及非功能测试(non-functional testing type)。

    功能测试包括:

    • 单元测试(Unit Testing)
    • 集成测试(Integration Testing)
    • 系统测试(System Testing)
    • 可接受性测试(Acceptance Testing)
    • 端到端测试(End-to-End Testing)
    • 健全性测试(Sanity Testing)
    • 界面测试(Inteface Testing)
    • 回归测试(Regression Testing)
    • ......

    非功能性测试包括:

    • 性能测试(Perfomance Testing)
    • 压力测试(Stress Testing)
    • 负载测试(Load Testing)
    • 安全测试(Security Testing)
    • 兼容性测试(Compatibility Testing)
    • 安装测试(Install Testing)
    • 可靠性测试(Reliable Testing)
    • ......

    注意到,不同类型的测试可能也是交叉相关的。


     单元测试(Unit Testing):单个软件组件或模块的测试称为单元测试。 它通常是由程序员而不是测试人员完成的,因为它需要内部程序设计和代码的详细知识。 它还可能需要开发测试驱动程序模块或测试工具。

    • 分支测试(Branch Testing):它是白盒测试(White box Testing)的一种,在单元测试( Unit Testing)期间执行。 分支测试,其名称本身暗示通过遍历每个分支对代码进行彻底测试。
    • 组件测试(Component Testing):它主要由开发人员在完成单元测试( Unit Testing)后执行。 组件测试涉及将多个功能作为单个代码进行测试,其目的是在将多个功能相互连接后确定是否存在任何缺陷。

    集成测试(Integration Testing):在集成后测试所有集成模块以验证组合功能的过程称为集成测试。模块通常是代码模块,单个应用程序,网络上的客户端和服务器应用程序等。此类测试尤其与客户端/服务器和分布式系统相关。

    系统测试(System Testing):在系统测试技术下,将根据要求对整个系统进行测试。 这是一种黑盒型测试,它基于总体需求规范,涵盖了系统的所有组合部分。

    可接受性测试(Acceptance Testing):客户端执行验收测试,并验证系统的端到端流程是否符合业务需求,以及是否符合最终用户的需求。 仅当所有功能部件均按预期工作时,客户端才接受该软件。这是测试的最后阶段,此后该软件将投入生产。 这也称为用户验收测试(User Acceptance Testing,UAT)。

    端到端测试(End-to-End Testing):与系统测试(System Testing)类似,端到端测试涉及在模拟实际使用的情况下测试完整的应用程序环境,例如与数据库进行交互,使用网络通信或与其他硬件,应用程序或系统进行交互(如果需要) 适当。

    回归测试(Regression Testing):对应用程序进行整体测试以对任何模块或功能进行修改,这称为回归测试。 很难在回归测试中涵盖所有系统,因此通常将自动化测试工具用于这些类型的测试。

    冒烟测试(Smoke testing):在释放每个版本以进行测试以确保版本稳定性之后进行的测试。 也称为构建验证测试。

    健全性测试(Sanity Testing):为确保应用程序/系统的所有主要和重要功能正常工作而进行的测试。 这通常是在冒烟测试后完成的。

    图形用户界面测试(Graphical User Interface (GUI) Testing):此GUI测试的目的是根据业务需求验证GUI。 GUI测试包括屏幕上显示的按钮和输入字段的大小,所有文本,表格和表格内容的对齐方式。在选择了不同的菜单和菜单项之后,它还验证了应用程序的菜单,它验证了页面没有波动,并且在将鼠标悬停在菜单或子菜单上之后,对齐方式保持不变。

    后端测试(Back-end Testing):只要在前端应用程序上输入了输入或数据,它就会存储在数据库中,并且这种数据库的测试称为数据库测试或后端测试。数据库测试涉及表结构,架构,存储过程,数据结构等的测试。

    Alpha测试:该测试的目的是在将其发布到市场或用户之前,确定所有可能的问题或缺陷。Alpha测试在软件开发阶段的最后但Beta测试之前进行。测试是在开发人员的网站上进行的,可以为这种类型的测试创建内部虚拟用户环境

    Beta测试:该测试是由客户执行的正式类型的软件测试。 它是在真实环境中执行的,然后再将产品发布给实际的最终用户。进行Beta测试是为了确保软件或产品没有重大故障,并且从最终用户的角度来看,它可以满足业务需求。 客户接受软件后,Beta测试成功。通常,此测试通常由最终用户或其他用户完成。 这是在发布用于商业目的的应用程序之前完成的最终测试。 通常,发布的软件或产品的Beta版本仅限于特定区域中的一定数量的用户【有些像游戏的内测】。因此,最终用户实际上使用了该软件并将反馈共享给公司。 然后,公司在将软件发布到全球之前会采取必要的措施。 


     兼容性测试:兼容性测试可确保软件可以在不同的配置,不同的数据库,不同的浏览器及其版本上运行。 兼容性测试由测试团队执行。

    • 浏览器兼容性测试(Browser Compatibility Testing)。浏览器兼容性测试是针对Web应用程序执行的,它确保该软件可以在不同浏览器和操作系统的组合下运行。 这种类型的测试还可以验证Web应用程序是否在所有浏览器的所有版本上运行。
    • 向后兼容性测试(Backward Compatibility Testing)。用于验证新开发的软件或更新的软件是否与旧版本的环境兼容。包括是否与旧版本软件创建的文件格式兼容; 它也可以与该软件的旧版本创建的数据表,数据文件和数据结构很好地配合使用。如果对任何软件进行了更新,则它应该可以在该软件的先前版本之上正常运行。

    可访问性测试(Acceptance Testing):为了确定残疾人是否可以访问该软件或应用程序。检查包括用于视觉障碍的字体大小,用于色盲的颜色和对比度等。

    安装/卸载测试(Install/Uninstall Testing):安装和卸载测试是在不同硬件或软件环境下的不同操作系统上对完整,部分或升级安装/卸载过程进行的。

    恢复测试(Recovery Testing):用于验证应用程序或系统从崩溃或灾难中恢复的情况。

    边界值测试(Boundary Value Testing):这种类型的测试在边界级别检查应用程序的行为。执行边界值测试以检查边界值是否存在缺陷。 边界值测试用于测试不同范围的数字。 每个范围都有一个上下边界,并在这些边界值上进行测试。

    安全测试(Security Testing):这是由一组特殊的测试人员执行的测试。 可以通过任何黑客方式渗透系统进行安全测试,以检查软件或应用程序或网站如何免受内部和外部威胁的影响。 该测试包括从恶意程序,病毒保护多少软件,以及授权和身份验证过程的安全性和强度。它还会检查软件对任何黑客攻击和恶意程序的行为,以及在此类黑客攻击后如何维护软件以确保数据安全。

    漏洞测试(Vulnerability Testing):涉及确定软件,硬件和网络中漏洞的测试称为漏洞测试。 如果恶意程序容易受到此类攻击,病毒和蠕虫的攻击,则黑客可以控制该系统。因此,有必要在生产前检查那些系统是否经过漏洞测试。 它可能会识别出关键缺陷,安全缺陷。

    可用性测试(Usability Testing):完成了用户友好性检查。 测试了应用程序流程,以了解新用户是否可以轻松理解该应用程序,如果用户在任何时候陷入困境,都应提供适当的帮助文档。 基本上,在此测试中检查系统导航。

     性能测试(Performance Testing):该术语通常与“压力(Stress)”和“负荷(Load)”测试互换使用。 执行性能测试以检查系统是否满足性能要求。 使用不同的性能和负载工具进行此测试。

    • 负载测试(Load Testing):这是一种非功能测试,负载测试的目的是检查系统可以处理多少负载或最大工作负载而不会降低性能。负载测试有助于找到特定负载下的最大系统容量以及任何导致软件性能下降的问题。 使用JMeter,LoadRunner,WebLoad,Silk Performer等工具执行负载测试。
    • 压力测试(Stress Testing):当系统承受的压力超出其规格以检查其故障方式和时间时,将进行此测试。 这是在繁重的负载下执行的,例如将大量存储容量,复杂的数据库查询,对系统的连续输入或数据库负载。
    • 容量测试(Volume Testing):性能测试团队执行的一种非功能测试。该软件或应用程序需要处理大量数据,当系统遇到大量数据时,Volume Testing会检查系统行为和应用程序的响应时间。 如此大量的数据可能会影响系统的性能和处理时间。

    下面再特别说明下单元测试、集成测试、系统测试以及端到端测试。 作为功能测试,这四个测试可以说是顺序的

     STEP1:单元测试(Unit Testing)——

    单元测试是其中唯一可以进行白盒测试的测试类型。每个功能模块都是单元,测试者(可以是开发人员也可以是测试人员)可以通过手动测试或者自动测试实现。

    STEP2:集成测试(Integration Testing)——

    是单元测试的逻辑扩展。它最简单的形式是:把两个已经测试过的单元组合成一个组件,测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合为程序的更大部分。方法是测试片段的组合,并最终扩展成进程,将模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。
    集成测试可以是功能性测试和非功能性测试。前者针对被测模块的接口规格说明进行测试,后者对模块的性能或可靠性进行测试。二者都是使用黑盒测试技术。
     
    STEP3:系统测试(System Testing)——
    尽管和集成测试都是整体(这里指的是集成所有模块的状态),系统测试更偏向于测试产品在不同状态下的表现(这里的状态包括各种产品使用场景,也可以是性能测试中那些极限状态)。

    参考资料:
     
  • 相关阅读:
    PHP实现微信退款的分析与源码实现
    thinkphp对180万数据批量更新支持事务回滚
    在线工具
    php连接redis
    Redis PHP连接操作
    阿里大于短信接口整合TP5
    Unity3d中如何查找一个脚本被挂在那些预设上面?
    泰课在线夜猫的贪食蛇
    EasyTouch5ForSiki学院
    unity游戏热更新
  • 原文地址:https://www.cnblogs.com/RicardoIsLearning/p/12901070.html
Copyright © 2011-2022 走看看