软件测试理论知识

本文详述了软件测试的全过程,从研发模型(如瀑布模型、V模型、敏捷开发等)到软件测试基础,涵盖测试用例设计、执行和缺陷管理。介绍了单元测试、集成测试、系统测试和验收测试的差异,以及测试用例设计方法如等价类、边界值分析。此外,文章还讨论了需求分析、测试计划和测试报告的编写,强调了测试工程师的职责和素质要求。
摘要由CSDN通过智能技术生成

1.前言

1.1 什么是软件测试?

  • 软件测试是一系列活动过程,包括软件需求分析,测试计划分析,测试用例设计,执行测试用例等。它贯穿于

  • 整个软件测试的周期,在软件项目的每个阶段,都需要进行不同目的和内容的测试活动,以保证各个阶段的正

  • 确性。

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

  • 假如你安装的软件是一个未经过测试的软件,那么在使用过程中可能遇到:软件卡死,账号被盗,资金被转

  • 等。而软件测试工程师的出现正是为了规避这些问题。

- 1.3 软件研发初期的过程(了解)
在这里插入图片描述

2.研发模型

#2.1 瀑布模型
在这里插入图片描述

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

特点 :

  • 线性化的研发模型

  • 各阶段具有里程碑的特征

  • 基于文档的驱动

  • 严格的阶段评审机制

优点优点 :

  • 有利于大型软件研发过程中人员组织和管理

  • 有利于开发方法和工具的使用

  • 提高了软件的质量和效率

缺点缺点 :

  • 不灵活

  • 2.2 V模型

  • 在这里插入图片描述

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

优点:

  • 软件测试分为若干个级别,更能提高软件的质量

  • 软件测试和开发级别一一对应

缺点:

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

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

  • 2.3 W模型

  • 优点优点 :

  • W模型,又称双V模型,测试活动和开发活动同步进行

  • 软件测试的对象不仅仅是程序,还包括文档

  • 尽早投入测试可以降低开发成本

  • 缺点缺点 :

  • 无法迭代,指的是相对的,不是绝对的
    在这里插入图片描述

- 2.4 X模型

  • 最早引入 探索性测试

探索性测试 的研发模型

  • 软件分为几个片区,然后集成在一起形成最终的软件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lKu7tc6d-1678100272225)(/images/X0)]

- 2.5 螺旋模型

  • 非线性化的研发模型,引入了 风险管理

风险管理 ,进行评估

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m8ZXR0Pb-1678100272226)(/images/X0)]

- 2.6 快速原型

  • 又称原型定义,非线性化的研发模型,主要适用于 小公司小公司 ,客户到了最后才知道软件的最终模样,先做成一

  • 个demo(模型或样本),给客户进行产品的预演。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FcL1oUdz-1678100272229)(/images/X0)]

- 2.7 迭代开发

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

  • 优点:

  • 降低需求变更的成本

  • 得到早期的用户反馈

  • 持续的集成和测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6B6iIrcE-1678100272229)(/images/X0)]

- 2.8 敏捷开发

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

  • 敏捷开发的核心价值观 :

  • 敏捷开发的核心价值观

  • 个人交互 重于重于 过程和工具(个人交互主要指的是人和人之间的沟通)

  • 可用的软件 重于重于 完备的文档

  • 客户协作 重于重于 合同谈判

  • 响应变化 重于重于 遵循计划

  • 优点优点 :

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

  • 反应能力

  • 缺点缺点 :

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

  • 存在新手较多时,老员工比较累。

  • tips:

  • 敏捷和迭代虽然不一样,但是它们是分不开的,迭代开发和敏捷开发的结合,既保证了产品的质量又在项目产

  • 品的持续改进中具有一定的优势,吸取精华,剔除糟粕,只有这样,项目才会达到趋近于完美的程度。

  • 在这里插入图片描述

- 2.9 软件的生命周期

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

- 2.10 软件的测试流程

需求分析----测试计划----测试方案—测试用例 ----测试执行----测试报告

- 2.11 项目中的成员

    1. 项目经理(PM)
    1. 架构师
    1. 程序员(码农)
    1. 软件测试工程师:初级,中级,高级,技术专家,测试经理,交付经理,部门经理
    1. 资料工程师(大公司才有的职位)
    1. 配置管理员(CMO)
    1. QA(大公司才有的职位)
    1. 产品经理(BA)
    1. UI设计(界面设计)
    1. 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. 细心,耐心,责任心,自信心
    1. 沟通能力,语言以及文字表达能力
    1. 团队协作能力
    1. 发现问题的敏锐程度以及观察能力
    1. 逻辑思维能力以及发散性思维能力
    1. 具有丰富的软件测试经验
  • 专业素质 :

  • 专业素质

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

4.软件测试的分类

  • 4.1 按照 阶段阶段 划分

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

- 1. 单元测试

  • 对于软件中最小可测单元进行检查和验证,如:java中的类,C语言中的函数,UI界面中的窗口

  • 依据: 详细设计

详细设计

  • 谁测试:90%是开发人员测试,因为必须具有代码阅读能力

  • 单元测试能够发现 80%80% 左右的缺陷

  • 单元测试工具:java中的junit,python语言中的unittest,pytest

  • 侧重于检查程序内部结构,逻辑控制和异常处理

- 2. 集成测试集成测试

  • 在单元测试的基础上,把模块组装成系统或者子系统&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值