读《从菜鸟到测试架构师:一个测试工程师的成长日记》

  1. 如何确保软件质量、减少质量问题给企业及用户带来的隐患,是软件测试工作的核心。
  2. 在大型软件开发团队中,测试被分成很多种类和步骤,每种测试有针对性地模拟使用测试对象的场景,并试图找出测试对象的潜在问题和缺陷(Bug)。在确定原因后,制定严谨完善的解决方案并根据方案修复缺陷。
  3. 测试其实是发现并解决问题的过程,而其目标则是让软件产品以尽可能高的质量交付给客户,使软件产品中存在的问题尽可能少。
  4. 除了小型项目,进行完全(各种输入和前提条件的组合)的测试是不可行的。可行的方法是运用风险分析和不同系统功能的测试优先级,来确定测试的关注点,从而替代穷尽测试。
  5. 单元测试,是和开发最接近的一种测试。开发人员编写单元测试用例并执行,验证单元模块是否得出预期的结果。测试驱动开发(Test Driven Development,TDD)。测试驱动开发的核心就是把单元测试做好,功能开发以通过相应的单元测试用例为目标。单元测试是粒度最小的软件测试,小粒度能保证复杂系统中的每个“螺丝钉”都质量合格。
  6. 功能测试是通过黑盒子模式发现代码集成后存在的功能问题的测试。关注的重点是系统的功能。通过执行自动或手动的测试用例,可以验证相应的功能点是否正确。单元测试关注的是一个最小的代码片段(比如一个类或接口),功能测试关注的是一个完整的业务功能
  7. 性能测试是重点验证软件的非功能性需求的测试。企业级软件通常用于应对复杂苛刻的用户场景。在软件设计和安装的过程中,有许多细节能提供软件的性能,包括吞吐率、稳定性、可靠性等。性能测试通过自动化的方法模拟真实用户并发访问的场景,以验证系统的性能指标或发现其性能瓶颈。
  8. 苦练基本功:了解开发平台和方式–操作系统(Windows、Unix、Linux)、搭建测试环境(执行构建测试–使用构建化的脚本、自动化安装)

    正确的流程和步骤一定要及时记录。有了流程和步骤的指引,可以避免大量不必要的重复劳动。

  9. 中间件(Middleware)是提供系统软件和应用软件之间连接的软件。

  10. 敏捷开发(Agile Development)。迭代开发(Iterative Development)和增量开发(Incremental Development)。

    迭代开发是一种“重复时序安排”的开发方式。迭代开发把一个完整的瀑布模型开发流程分成多个迭代,每个迭代可以看成是独立的开发过程,其中包含了项目的主要步骤,如设计、开发和测试等。把完整过程分成多个持续时间较短的迭代,其好处是生产的周期变短了,每个完整的周期都会产出相应的产品,这种方式有利于在完整项目开发的过程中跟踪和控制开发进度及产品质量。

    增量开发用的则是一种“分段完成”的策略。在增量开发模式中,系统中不同的部分被安排在多个阶段完成,各个部分完成后再集成到系统中。

  1. 瀑布开发模型:在开发过程中,整个系统的开发被划分成需求分析、设计实现、测试、集成和维护等阶段。这种划分本质上是把不同性质的项目内容分割到不同的阶段,而某个阶段则专注地进行某种任务。专注在许多情况下带来了高质量,单一流程的划分很容易带来资源浪费和失败风险的增加。如果在某一阶段,项目组只完成一组相同性质的任务,那么,团队中其他无关人员在这段时间里就无事可做了。项目的成果必须到最后阶段才能完成,中间任何步骤出现差错都有可能导致项目全盘失败,这样的项目开发风险很高。
  2. 计划和流程–计划定义的是做什么(What)和什么时候做(When),项目执行完全根据计划实施,好的计划是项目成功的基础;流程是项目成功的保障,它定义了怎么做(How),按照标准流程做极其重要,可以避免许多不必要的问题。
  3. 培养专业技能:开发技能是基础(数据结构、算法设计、设计模式和体系结构,了解不同的开发语言和平台的差异),开发技能不仅包括设计和实现功能的技术,还包括发布和部署代码、配置环境的技术。
  4. 白盒测试指测试人员可以直接访问内部数据结果、算法及其代码实现的测试。常见的方法包括编程应用接口测试(常用)、代码覆盖率测试(检验代码是否满足指定覆盖率的测试)、缺陷注入方法(错误以及临界条件下)等。白盒测试用最直接的方式,从根源上发现程序的缺陷,但是要求测试人员对实现细节比较了解并设计出有效的测试用例,这几乎是不可能的任务。
  5. 黑盒测试通过触发业务相关的功能点,检验集成条件下系统的正确性。但是进行黑盒测试的时候系统是集成的,在发现问题后需要打开“黑盒子”,用额外的工作定位问题的确切原因。tips:白盒测试虽然比较复杂,但是能够精准定位出错误点。黑盒测试虽然简单但是只能知道有问题,但是不知道问题出在哪个地方,需要额外时间去定位问题。所以说老天是公平的,鱼与熊掌不可兼得。
  6. 手工操作的测试方法,自动化测试方法。回归测试:除了需要测试新发布的内容,还必须验证已经存在的功能是否正确,存在的问题是否已经修复。这有进行回归测试才能保证所有功能在最新版本中的正确性。
  7. 软件质量包括两个相关但截然不同的概念——功能性质量(Functional Quality)和结构性质量(Structural Quality)。功能性质量反映的是软件是否按照设计实现并满足相应功能性需求(Functional Requirements);结构性质量反映的是软件是否满足相关的非功能性需求(Non-Functional Requirements,NFR)。
  8. 测试就是获得量化指标的数值,主要有正确性(Correctness)、可靠性(Reliability)、易用性(Usability)、可移植性(Portability)、可迁移性(Migratability)、效率(Efficiency)、可维护性(Maintainability)、可扩展性(Scalability)、健壮性(Robustness)、安全性(Security)
  9. 测试驱动开发的要点是先写测试程序,然后再编码实现使其通过测试。测试可以有效推动需求的实现。测试的目标是发现软件中存在的缺陷。

------------------本文结束感谢您的阅读------------------
坚持原创技术分享,您的支持将鼓励我继续创作!