- 软件测试理论知识
1.前言
1.1 什么是软件测试?
-
软件测试是一系列活动过程,包括软件需求分析,测试计划分析,测试用例设计,执行测试用例等。它贯穿于
-
整个软件测试的周期,在软件项目的每个阶段,都需要进行不同目的和内容的测试活动,以保证各个阶段的正
-
确性。
- 1.2 为什么要进行软件测试?
-
假如你安装的软件是一个未经过测试的软件,那么在使用过程中可能遇到:软件卡死,账号被盗,资金被转
-
等。而软件测试工程师的出现正是为了规避这些问题。
- 1.3 软件研发初期的过程(了解)
2.研发模型
#2.1 瀑布模型
- 计划----需求分析----设计----编码----测试----运行和维护
特点 :
-
线性化的研发模型
-
各阶段具有里程碑的特征
-
基于文档的驱动
-
严格的阶段评审机制
优点优点 :
-
有利于大型软件研发过程中人员组织和管理
-
有利于开发方法和工具的使用
-
提高了软件的质量和效率
缺点缺点 :
-
不灵活
-
2.2 V模型
-
用户需求----需求分析----概要设计----详细设计----编码----单元测试----集成测试----系统测试----验收测试
优点:
-
软件测试分为若干个级别,更能提高软件的质量
-
软件测试和开发级别一一对应
缺点:
-
忽略了软件测试对象不止程序还包括文档
-
验收测试是最后阶段,需求阶段的问题只能到验收测试才能发现
-
2.3 W模型
-
优点优点 :
-
W模型,又称双V模型,测试活动和开发活动同步进行
-
软件测试的对象不仅仅是程序,还包括文档
-
尽早投入测试可以降低开发成本
-
缺点缺点 :
-
无法迭代,指的是相对的,不是绝对的
- 2.4 X模型
- 最早引入 探索性测试
探索性测试 的研发模型
- 软件分为几个片区,然后集成在一起形成最终的软件
- 2.5 螺旋模型
- 非线性化的研发模型,引入了 风险管理
风险管理 ,进行评估
- 2.6 快速原型
-
又称原型定义,非线性化的研发模型,主要适用于 小公司小公司 ,客户到了最后才知道软件的最终模样,先做成一
-
个demo(模型或样本),给客户进行产品的预演。
- 2.7 迭代开发
-
每次只设计和实现产品的一部分,通过逐步完成的方法叫 迭代开发迭代开发 ,每次设计和实现一个阶段叫 迭代迭代
-
优点:
-
降低需求变更的成本
-
得到早期的用户反馈
-
持续的集成和测试
- 2.8 敏捷开发
-
敏捷开发以用户需求进化为核心,循序渐进的方法进行软件开发
-
敏捷开发的核心价值观 :
-
敏捷开发的核心价值观
-
个人交互 重于重于 过程和工具(个人交互主要指的是人和人之间的沟通)
-
可用的软件 重于重于 完备的文档
-
客户协作 重于重于 合同谈判
-
响应变化 重于重于 遵循计划
-
优点优点 :
-
敏捷确实是项目进入实质开发的迭代阶段,用户很快可以看到一个基线架构版的产品,敏捷注重市场反应快速
-
反应能力
-
缺点缺点 :
-
敏捷注重人员的沟通,忽略了文档的重要性,若项目人员流动太大,又给维护带来不少的难度,特别是项目中
-
存在新手较多时,老员工比较累。
-
tips:
-
敏捷和迭代虽然不一样,但是它们是分不开的,迭代开发和敏捷开发的结合,既保证了产品的质量又在项目产
-
品的持续改进中具有一定的优势,吸取精华,剔除糟粕,只有这样,项目才会达到趋近于完美的程度。
- 2.9 软件的生命周期
- 需求----设计----编码----测试----维护----升级----废弃
- 2.10 软件的测试流程
需求分析----测试计划----测试方案—测试用例 ----测试执行----测试报告
- 2.11 项目中的成员
-
- 项目经理(PM)
-
- 架构师
-
- 程序员(码农)
-
- 软件测试工程师:初级,中级,高级,技术专家,测试经理,交付经理,部门经理
-
- 资料工程师(大公司才有的职位)
-
- 配置管理员(CMO)
-
- QA(大公司才有的职位)
-
- 产品经理(BA)
-
- UI设计(界面设计)
-
- 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 测试工程师所具备的素质
-
综合素质 :
-
- 细心,耐心,责任心,自信心
-
- 沟通能力,语言以及文字表达能力
-
- 团队协作能力
-
- 发现问题的敏锐程度以及观察能力
-
- 逻辑思维能力以及发散性思维能力
-
- 具有丰富的软件测试经验
-
专业素质 :
-
专业素质
-
- 熟悉软件研发流程以及测试流程的知识
-
- 熟悉软件测试理论知识
-
- 掌握测试工具,管理工具,自动化工具,集成工具,性能工具,安全工具……
-
- 掌握计算机相关知识,数据库,操作系统,网络基础,开发语言
4.软件测试的分类
-
4.1 按照 阶段阶段 划分
-
单元测试----集成测试----系统测试----验收测试
- 1. 单元测试
-
对于软件中最小可测单元进行检查和验证,如:java中的类,C语言中的函数,UI界面中的窗口
-
依据: 详细设计
详细设计
-
谁测试:90%是开发人员测试,因为必须具有代码阅读能力
-
单元测试能够发现 80%80% 左右的缺陷
-
单元测试工具:java中的junit,python语言中的unittest,pytest
-
侧重于检查程序内部结构,逻辑控制和异常处理
- 2. 集成测试集成测试
-
在单元测试的基础上,把模块组装成系统或者子系统&#