软件测试的理论知识

1、前言

1.1什么是软件测试?

软件测试是一系列过程活动,包括软件需求分析,测试计划分析,测试用例设计,执行测试用例等。它贯穿于整个软件测试的周期,在软件项目的每个阶段,都需要进不同目的的内容的测试活动,以保证各个阶段的正确性。

1.2为什么要进行软件测试?

假如你安装的软件是一个未经测试的软件,那么在使用过程中可能会遇到:软件死机,账号被盗,资金被转等,而软件测试工程师的出现正是为了规避这些问题。

1.3软件研发初期的过程

在这里插入图片描述

2.研发模型

2.1 瀑布模型

计划--需求分析--设计--编码--测试--运行和维护

特点

  1. 线性化的研发模型
  2. 各阶段具有里程碑的特征
  3. 基于文档的驱动
  4. 严格的阶段评审机制

优点

  1. 有利于大型软件研发过程中的人员组织和管理
  2. 有利于开发方法和工具的使用
  3. 提高了软件的质量和效率

缺点

  1. 不灵活

在这里插入图片描述

2.2 V模型

用户需求--需求分析--概要设计--详细设计--编码--单元测试--集成测试--系统测试--验收测试

优点

  1. 软件测试分为若干个级别,更能提高软件的质量
  2. 软件测试和开发级别一一对应

缺点

1.忽略了软件测试对象不止有程序还包括文档

2.验收测试是最后阶段,需求阶段的问题只能到验收阶段才能发现

在这里插入图片描述

2.3 W模型

优点

  1. w模型,又称双v模型,测试活动和开发活动同步进行
  2. 软件测试的对象不仅仅是程序,还包括文档
  3. 尽早投入测试可以降低开发成本

缺点

无法迭代,指的相对的,不是绝对的

在这里插入图片描述

2.4 X模型

  1. 最早引用探索性测试的研发模型
  2. 软件分为几个片区,然后集成在一起形成最终的软件

在这里插入图片描述

2.5 螺旋模型

  1. 非线性化的研发模型
  2. 引入了风险管理,进行评估

在这里插入图片描述

2.6 快速模型

又称原型定义,非线性化研发模型,主要适用于小公司,客户到了最后才知道软件的最终模样,先做一个dome(模型或样本),给客户进行产品的预演。

在这里插入图片描述

2.7迭代开发

每次只设计和实现产品的一部分,通过逐步完成的方法叫迭代开发,每次设计和实现一个阶段叫迭代

优点

  1. 降低需求变更的成本
  2. 得到早期的用户反馈
  3. 持续的集成和测试

在这里插入图片描述

2.8 敏捷开发

敏捷开发以用户需求进化为核心,采用迭代,循序渐进的方法进行软件开发

敏捷开发的核心价值观

  1. 个人交互重于过程和工具(个体交互主要指人和人之间的沟通)
  2. 可用的软件重于完备的文档
  3. 客户协作重于合同谈判
  4. 响应变化重于遵循计划

优点

敏捷确实是项目进入实质的迭代阶段,用户很快可用看到一个基本架构版的产品,敏捷注重市场快速反应能力

缺点

敏捷注重人员的沟通,忽略了文档的重要性,若项目人员流动太大,又给维护带来了不少难度,特别是项目中新员工比较多,老员工比较累。

tips

敏捷和迭代虽然不一样,但是他们是分不开的,迭代开发和敏捷开发的结合,既保证了产品的质量又在项目产品的持续改进中具有一定的优势,吸取精华,剔除糟粕,只有这样,项目才会达到趋近完美的程度。

在这里插入图片描述

2.9 软件的生命周期

需求--设计--编码--测试--维护--升级--废弃

2.11 项目中的成员

  1. 项目经理(PM)
  2. 架构师
  3. 程序员(码农)
  4. 软件测试工程师:初级、中级、高级、技术专家、测试经理、交付经理、部门经理
  5. 资料工程师(大公司才有)
  6. 配置管理员(CMO)
  7. QA(大公司才有)
  8. 产品经理(BA)
  9. UI设计(界面设计)
  10. DBA(数据库管理员)

3.软件测试基础

3.1 软件测试的定义

在规定条件下操作程序,发现缺陷,评估软件质量

3.2 软件测试的目的

尽可能多的发现软件的缺陷,预防缺陷,对软件的质量进行评估,以提高软件的质量

3.3 软件测试的范围对象

程序、文档、数据

3.4 软件测试的原则

  1. 所有的测试都应该追溯到用户需求

    需求是软件测试的依据

  2. 应当把尽早测试和不断测试作为软件测试的座右铭

    尽早测试能够降低开发成本不断测试更能提高软件的质量

  3. 完全测试是不可能的,测试需要终止

    出于成本考虑和现实考虑

  4. 软件测试无法显示潜在缺陷

    缺陷有时候需要在特定的情况下才会出现

  5. 充分注意群集现象

    二八原则,80%的缺陷出现在20%的模块上,发现bug越多的模块,残留的bug越多

  6. 避免程序员检查自己的程序

    开发沿用之前的开发思路,去找问题很难发现问题

  7. ``避免软件测试的随机性`

    测试需要计划,节约成本和人力

3.5 软件测试的风险

进度风险,质量风险,人员风险,成本风险,变更风险

3.6 测试工程师所具备的素质

综合素质

  1. 细心,耐心,责任心,自信心
  2. 沟通能力,语言以及文字表达能力
  3. 团队协作的能力
  4. 发现问题的敏锐程度以及观察能力
  5. 逻辑思维能力和发散性思维能力
  6. 具有丰富的软件测试经验

专业素质

  1. 熟悉软件研发流程以及测试流程的知识
  2. 熟悉软件测试理论知识
  3. 掌握测试工具,管理工具,自动化工具,集成工具,性能工具,安全工具…
  4. 计算机相关知识,数据库,操作系统,网络基础,开发语言

4.软件测试的分类

4.1 按照阶段 阶段划分

单元测试--集成测试--系统测试--验收测试

  1. 单元测试
  1. 对于软件中最小可测单元进行检查和验证:如:java中的类,C语言中的函数,UI界面
  2. 依据:详细设计
  3. 谁测试:90%是开发人员测试,因为必须具有代码阅读能力
  4. 单元测试能够发现80% 左右的缺陷
  5. 单元测试工具:java语言中的junit,python语言中的unittest,pytest
  6. 侧重于检查程序内部结构,逻辑控制和异常处理
  1. 集成测试
  1. 在单元测试基础上,把模块组装成系统或者子系统,然后进行测试,又称联合测试组装测 试
  2. 依据:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值