Agile Testing梳理

简介

  1. 为什么提出了敏捷测试的思想
  2. 敏捷测试的理念是什么
  3. 如何通过流程改进实现敏捷思想
  4. 如何通过技术支持实现敏捷思想
  5. 如何把事情做的有条不紊而且又快又好
  6. 如何快速的构建一套测试流(而且是自动化构建-能根据不同特性实施)
  7. 如何全流程的提高效率(从需求产品、视觉、开发、项目...)
1. 敏捷测试的理念
  1. Agile Testing involves all members of the project team

    比如说

    1. 后端产品提出需求,并确定接口设计的入参字段以及出参字段
    2. 开发根据需求,对涉及字段进行创造或者优化,并给出自测数据
    3. Tester根据以上信息(以上两步可以根据经验给出需求建议,开发建议等),就能通过一套测试流来快速实现自动化冒烟测试
    4. 前置的书写自动化case
    5. 快速的实现回归自动化case
    6. ......

    Testing takes place simutaneously through the development list cycle

  2. Agile Testing covers all the levels of testing and all types of testing.

1. 用户场景
2. 验收标准
3. 回归测试
测试的本质是什么?重点是什么,哪些不必要过分关注
。。。。。。
  1. Agile Testing Principles

    1. Lightweight Documentation

      reusable checklist

      focus on the essence of the test rather than the incidental details

      capture test ideas

      leverage documents for multiple purpose

    2. Leveraging one test artifact for manual and automated tests

每一个迭代 ,反馈 ,不是独立,每一个流程都紧密联系沟通,轻量的文档,可复用的checklist
4. Agile Testing Activities

敏捷测试中,测试要做哪些事

  1. Release Planning(Test Plan,不仅仅是测试用例)
  2. Regression Testing
  3. Release Activities(Test Related)

在一个迭代中,敏捷测试包含的行为

迭代场景:
1. 我参加了一场迭代项目会议(可能是正在迭代的项目,或者是正要启动的项目...)
2. 他们说了很多出发点及需求,我需要从专业的测试角度来评估这些需求任务
3. 迭代会议聊好了,可实现性以及用户体验预估流量或者市场响应度基本确定和评估了
    我就要针对这些特定的业务写一些测试case
4. 开发者开发好了某一单元,在单元测试就介入(比如可以查看代码,单元测试mock等)
5. 各个单元都好了,不用mock某一个单元,进行集成测试,看全流程是否OK
6. Feature Testing
7. defect fixing
8. 集成测试
9. 验收测试(Acceptance Testing)
10. 状态报告
11. defect Tracking

Agile Testing - Methodologies

敏捷测试, 提供了哪些方法论供我们参考呢

Project Team
1. Design
2. Test
3. Code
4. User Review (多次迭代重复以上步骤)
5. product Release 
1. Continuous Integration,Continuous Quality

Continuous Integration is the key for Agile Development success

持续集成与发布,
必要时,听取用户的请求
考虑到所有的输入情况
2. Agile Methodologies
  1. Scrum

    1.1 emphasizes on team-centric approach

    1.2 It advocates participation of the entire team in all the project development activities

  1. XP

    eXtreme Programming is customer-centric and focuses on constantly changing requirements.

  1. Crystal

    Crystal is based on charting,cyclic delivery and wrap up

    3.1 Charting

    3.2 Cyclic Delivery

    3.3 Wrap up

  2. FDD(Feature)

  3. DSDM

    Dynamic Software Development Method

    5.1 Based on Rapid Application Development(RAD)

    5.2 And is aligned to the Agile Framework

    Focuses on:

    1. frequent delivery of the product
    2. involving users actively
    3. empowering the teams to make quike decisions
  4. Lean Software Development

    focus is on eliminating waste and giving value to the customer

    重点在于消除不必要的资源浪费,思考浪费等

  1. Kanban

    just-in-time(JIT)delivery

Agile Testing Methodologies

你的测试计划是怎样的?

别人的测试计划是怎样的?

你的测试理念是什么?

你在测试的时候最关注的点是什么?

你是如何保证测试的质量?

你的测试标准是什么?

举例:

focus on Scrum as the Agile Testing Methodology

其他相似的敏捷测试方法:

  1. Test-Drivern Development(TDD)

    is based on coding guided by tests

  2. Acceptance Test-Driven Development(ATDD)

    is based on communication between the customers,developers and testers

    and driven by pre-defined Acceptance Criteria and Acceptance Test Cases

  3. Behavior-Driven Development(BDD)

    is based on the expected behavior of the software being developed

Agile Testing Lifecycle

In Scrum, the testing activities include

  1. Contributing to User Stories(预估对于产品的用户行为来编写) - Test Cases

  2. Release Planning - 基于effort and Defect

  3. Sprint Planning based on User Stories and Defects

    Sprint是短距离赛跑的意思,这里面指的是一次迭代

  4. Sprint Execution with Continuous Testing - 持续测试应该是怎么样的?

  5. Regression Testing after the completion of Sprint

  6. Reporting Test Results

  7. Automation Testing

基于用户(环境-行为-心理)出发,
制定发版计划(人力-物力),
拆分任务制定每一个Sprint计划
执行Sprint with * Continuous Testing
Regression Testing
Reporting Test Results
Automation Testing
上一个版本的结果作为下一个版本的输入(如 sprint Backlog Defects)


Prioritizing User Stories --> Sprint Backlog

Product Backlog


User Stories

Testing Planning

Agile Testing - Tester in Team

测试者应该具备哪些能力(技术+思想)

  1. 沟通
  2. 解决问题能力,积极乐观向上。利益参与者
  3. 制定标准,面向质量,具有怀疑精神(skeptical thinking) about the products
  4. 高效的与customers,stakeholders 制定 可测试的用户故事,以及验收标准
  5. 帮助开发者提高代码质量
  6. 合适的时候做合适的事情
  7. 有能力评估和汇总测试结果,测试过程和整个产品质量
  8. 快速的适应变化,怎么能够快速进化test cases
  9. 自我组织能力
  10. 持续的提高个人技能
  11. Test Automation ,TDD ,ATDD,BDD和其他经验的能力(Compentence)
Role of Tester in Agile Team

Agile Tester Activities include -
测试者在工作要做啥

  1. 使用合适的测试工具(工具的使用,测试工具的开发)
  2. 配置,使用,管理测试环境和测试数据
  3. 在测试方面指导其他成员
  4. 在release and sprint planning 有计划的做合适的事情
  5. 理解,实现,改进测试策略
  6. 和开发者,customer,stakeholders(利益相关者)紧密联系,推进项目,实现可测性,持续性,及时完成
  7. 在正确的时间和测试级别执行正确的测试
  8. 及时报告缺陷和其他团队沟通解决
  9. 在所有可接触的覆盖纬度评估和报告测试范围
  10. 参与sprint项目回顾,给些是否可以前置的建议,实现技术改进

Testing Planning

如何制定测试计划?

测试计划应该包含哪些方面?

  1. 制定测试范围,extent of teasing 测试和sprint 目标
  2. 决定测试环境,测试工具,测试数据和配置
  3. 指定测试时的特性个性等
  4. 计划测试任务和测试频率
  5. 分析测试方法,技术,工具和测试数据
  6. 弄清前置条件,如上游任务,技术和连调
  7. 确定依赖,如方法,code,系统组件,vendor(供应商),tools,activities,tasks,teams,test types , test levels and constrains
  8. 根据多方面纬度设置优先级
  9. 明确需要的测试时间
  10. 认清每一个sprint阶段的任务
    .......

典型的测试计划eg:

1. Testing Scope
2. New functionalities which are being tested
3. Level or Types of testing based on the features complexity 
4. Load and Performance Testing
5. Infrastructure Consideration
6. Mitigation or Risks Plan
7. Resourcing
8. Deliverables and Milestones

Sprint Zero

first Sprint

项目启动的时候,需要做什么

Integration

在敏捷中,一个高质量的产品应该在开发周期中随时随地都能发版,这也就以为着持续集成最为开发的一部分

所有在持续集成中,应该如何实施持续测试呢?

Agile Testing Practices

敏捷测试者needs to adapt Agile practices for testing in an agile project

  1. Pairing

在一个keyboard中应该有两个团队,一个团队测试,另一个review或者分析

1. one tester and one developer
2. one tester and one business analyst
3. two testers
  1. Incremental Test Design

如何写测试case:

2.1. 测试用例是构建在user stories

2.2. 从很简单的case,到更加复杂的case

  1. Mind Mapping
思维导图
test sessions
test strategies
test data

如何追踪状态 Tracking activities

有什么状态
阻塞 是一个team
完成
改变,变更

Test status

Test Progress

Product Quality

Key Success Factors

一个成熟的敏捷测试应该是怎样的

test first and continuous testing
工具选择方面:应该也是能满足这种持续特性的
增加自动化测试的比例(初期能够快速构建自动化)
如何能够快速的构建自动化

测试者应该保持步调

手工测试要占到80%

关注点是:
1. user stories 最终用户希望的产品行为

2. Acceptance Criteria

3. 评估测试量和测试流程

4. 能在预计的时间点完成并达到标准

5. 回归测试

6. 收集分析product metrics (为下一个sprint提供帮助)

7. 分析哪些bug是必解哪些可以延迟

8. 关注点在customer‘s point of view

feedback
不断拓展个人的眼界,以及思考纬度

Challenges in Agile Testing

  1. 并没有真正的实现敏捷方法
  2. 团队其他人不理解敏捷,要培养他们做主人
  3. 初期代码实现可能不关注质量,只关注实现
  4. 自动化尽早实现,那如何实现了,实现成本会不会更高呢

Agile Testing - Quadrants

Test levels:
1. Unit Testing
2. Integration Testing
3. System Testing
4. User Acceptance Testing
Unit Testing

All Unit Tests are automated
如何做到

Integration Testing

All Functional

All Interfaces between Units are tested

可以自动化的地方进行自动化

System Testing

在production 环境中测试通过

Users stories ,Features and Functions are tested

可以自动化的地方进行自动化

User acceptance Testing

Test Types

1. Component Tests(Unit Tests)
2. Functional Tests(User Stories Tests)
3. Non-functional Tests(performance,Load,Stress,etc.)
4. Acceptance Tests

可以全手工,全自动化,或者结合在一起

Business Facing and Technology Facing Tests

test types

Agile Testing Quadrants()象限

Scrum

  1. user stories (user stories Criteria)

  2. release planning

  3. Sprint planning(Sprint backlog)

  4. Automating Testing

    1. Test Data Generation
    2. Test Data Loading
    3. Build Deployment into Test Enviroment
    4. Test Environment Management
    5. Data Output Comparison
  5. Regression Testing

    自动化的回归测试

  6. Configuration Management

Agile Testing - Methods

TDD
  1. step1 书写测试case—功能的具体行为的反应
  2. step2 run the test,测试失败因为code还没开发
  3. 基于测试case进行编码
  4. refactor the code
  5. 重新跑case,确保他通过

这里也是自动化前置的一些思考

ATDD
  1. step1 根据user stories(customers and users)写acceptance test cases
  2. step2 定义可通过的标准
  3. step3 根据1和3进行编码
  4. run acceptance case
  5. 自动pao ,重复3-5的步骤直到所有user stories都实现了
  6. 自动化回归
  7. 自动化回归确保持续回归
BDD

Agile Testing -Techniques

Test Basis
  1. product backlog (取代了一些需求文档)
  2. product backlog are normally user stories
  3. non-functional 需求在user stories也要考虑进去
  4. test basis in Agile projects is the user story
    如何确保测试质量
  5. 经验(从先前的迭代或者相同的项目)
  6. 已经存在的功能,架构,设计,code,系统质量特性
  7. bug数据从当前的或者过去的项目中查看
  8. customer feedback
  9. User documentation
Definition of Done DoD
  1. Criteria
    1. Detail Testable
    2. 功能方面
    3. 非功能方面
    4. Interfaces
    5. Test Data Requirements
    6. Test Coverage
    7. Refactoring
    8. Review and approval requirements
  2. checklist
  3. user story

。。。。。。

Test information
  1. user stories that need to be tested
  2. Associated Acceptance Criteria
  3. System Interfaces
  4. Environment where the System is expected to Work
  5. Tools availability
  6. Test Coverage
  7. DoD
Functional and Non-Functional Test Design

Test cases need to be in place before the implementation starts.

Exploratory Testing

time limite

Risk-Based Testing
Fit Testa

你可能感兴趣的:(Agile Testing梳理)