软件测试
2022-10-20 16:08:45 1 举报
AI智能生成
登录查看完整内容
软件测试
作者其他创作
大纲/内容
软件测试
软件测试基础知识
01—软件:计算机系统中与硬件相互依存的另一部分,包括程序,数据及相关文档的完整集合
程序:是按事先规定的功能和性能要求执行的指令序列
数据:是使程序能够正常操作信息的数据结构
文档:与程序开发,维护和使用有关的图文材料
软件十大特性
形态特性:无形的、不可见的逻辑实体
智能特性:复杂的智力产品、可以帮助解决复杂的计算、分析、判断和决策的问题
开发特性:辅助开发工作
质量特性:可能存在缺陷
生产特性:复制简单
管理特性:独特
环境特性:硬件+软件,对环境有依赖性
维护特性:可升级、优化、功能更新,甚至全盘重构
废弃特性:软件不会因损坏而被废弃,会因不符合要求被淘汰
应用特性:应用广泛
软件分类
系统软件
负责管理计算机系统中各种独立的硬件,使得它们可以协调工作
服务性程序
操作系统
数据库管理系统
语言程序
应用软件
为了某种特定的用途而被开发的软件,可以是一个特定的程序,也可以是一组功能联系紧密,可以相互协作的程序集合
02—软件的生命周期:按照开发软件的规模和复杂度,从时间上把软件开发的整个过程
问题定义
可行性研究
需求分析
概要设计
详细设计
编码和单元测试
综合测试
软件维护
软件开发模型
瀑布模型
计划-需求分析-设计-编码-测试-运行维护
特点:
软件开发的各项活动严格按照线性方式进行
当前活动接受上一项活动的工作结果
当前活动的工作结果需要进行验证
缺点
由于开发模式是线性的,增加了开发风险
早起的错误可能要等到开发后期的阶段才能发现
原型模型
客户与开发公司紧密联系,开发周期长。开发受到需求变更的影响
特点
实现客户与系统的交互
进一步细化待开发软件需求
开发人员可以确定客户真正需要是什么
螺旋模型
制定计划-风险分析-实施工程(需求确认、软件产品设计、设计确认与认证、详细设计、开发、测试)-客户评估
螺旋模型是将瀑布模型与快速原型模型结合起来
强调了其他模型所忽视的风险分析
每一次螺旋都包括:制定计划、风险分析、实施工程、客户评估
强调风险分析,但要求许多客户接受并相信这种分析,是不容易的
敏捷模型
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法
开发周期短
增量开发
由程序员和测试人员编写的自动化测试来监控开发进度
通过口头沟通、测试和源代码来交流系统的结构和意图
编写代码之前先写测试代码,也加测试先行
团队的组建较难,人员素质要求较高
对测试员要求完全掌握各种脚本语言编程,能执行单元测试、自动化测试
04—软件开发文档
需求分析文档
概要设计文档
详细设计文档
测试设计文档
测试用例
测试报告
项目进程
编程阶段:单元(白盒)—测试参与
编程完成—开发联调(集成测试)—开发为主
提测—冒烟测试(自动化为主,手工为辅)—测试执行
测试阶段—系统测试(黑盒功能测试为主,自动化/接口测试为辅,根据项目进行性能、安全测试)
验收阶段—验收测试—测试配合用户或需求
05—软件测试(Software Testing)
经典定义:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能够满足设计要求进行评估的过程
标准定义:是使用人工或自动的手段来运行或测试某个软件系统的过程,其目的在于检验是否满足规定的需求或弄清楚预期结果与实际结果之间的差别
软件测试的目的:软件测试目的在于发现问题,检查系统是否满足需求
软件测试常用术语
C/S:客户端、服务端
B/S:浏览器、服务器【目前的主流】
缺陷【Bug/Defect】:软件中(包括)不符合用户需求的问题
测试环境:软件运行的平台,包括软件、硬件和网络的集合。即:测试环境=软件+硬件+网络
测试用例(Test Case):在测试执行之前设计的一套详细的测试方案,包括测试环境、测试步骤、测试数据和预期结果。即:测试用例=输入+输出+测试环境。”输入“:测试数据和操作步骤,”输出“:期望结果,”测试环境“:系统环境设置
冒烟测试(smoke testing):在对一个新版本进行大规模地测试之前,先验证一下软件的基本功能是否实现,是否具备可测性
α测试:验收测试的一种,指的是由用户、测试人员、开发人员等共同参与的内部测试
β测试:验收测试的一种,指的是内侧后的公测,即完全交给最终用户测试
软件测试分类
按照生命周期划分
单元测试
冒烟测试
集成测试
系统测试
验收测试
按测试方法划分
白盒测试
静态分析:分析代码,不执行代码
动态分析
逻辑覆盖测试
语句覆盖
判定覆盖
条件覆盖
路径覆盖
插桩测试(Mock测试,模拟数据或者接口)
概念:插桩就是在代码中插入一段自定义的代码
目的:由于我们插入的代码会一起被编译到可执行文件中,所以可执行文件在运行过程中必然会执行我们插入的自定义代码,这样我们可以记录任何我们渴望知道的信息,例如函数的调用信息等
黑盒测试
功能测试
界面测试
回归测试
业务测试
兼容性测试
易用性测试
自动化测试
Web自动化测试
接口自动化测试
性能测试
负载测试
压力测试
容量测试
并发测试
持久性测试
安全测试
手动臊面
自动化审计
灰盒测试
其他
随机测试
探索性测试
α测试
β测试
06—软件测试常见模型
V模型
瀑布模型的一种改进,改进点是在软件开发的生存期,开发活动和测试活动几乎同时开始会减少bug和error出现的几率。生命周期分为:计划、分析、设计、编码、测试和维护,缺点同瀑布模型一样。
W模型
迭代的开发模型或敏捷开发模型。W模型由V模型演化而来,实际上开始是V,测试时并行的V
其他模型
H模型
各阶段可以反复触发、迭代、增强
X模型
07—软件测试覆盖率
覆盖率是用来度量测试完整性的一个手段,同时也是测试技术有效性的一个度量。覆盖率=(至少被执行一次的item数)/item总数
通过覆盖率数据,可以检测我们的测试是否充分
分析出测试的弱点在哪方面
指导我们增加覆盖率的测试用例,有效提高测试质量
测试覆盖率对黑盒测试来说,主要2方面
需求覆盖
定义
表示在测试中,有哪些函数被测试到了,其测试到的频率有多大,这些函数在系统所有函数中占比有多大通过设计一定的测试用例,要求每个需求点都被测试到
计算公式
需求覆盖=(被验证到的需求数量)/(总的需求数)
用例覆盖
主要体现在我们每轮测试验证通过的用例数在总用例中的比重
用例覆盖=(验证通过的用例数量)/(总的用例总数)
测试覆盖率的运用
简单的测试覆盖率
计算公式:本次测试执行的用例数/所有用例数
建立在认为总用例数编写全面,一般对于大型系统测试要求覆盖率100%
覆盖率审核:抽样检查
基于产品的测试覆盖率
计算公式:已测试需求点/设计所有需求数
以产品、需求维度统计,无论大型项目或是小需求迭代都要求覆盖率达到100%
覆盖率审核:抽样验收
基于白盒的测试覆盖率
大多数工具判断语句覆盖,即单元测试代码覆盖代码行数/总代码行
更多考察研发人员;更多时候要求覆盖率达到80%+
缺陷:覆盖率数据只能代表测试过哪些代码,不能代表是否测试好这些代码;容易遗漏逻辑,判断等场景
基于自动化的测试覆盖率
自动化 覆盖率的测试场景(测试用例)/所有测试场景(测试用例)
二八原则,用户80%的时间在使用20%的功能,自动化测试的用例选择更着重于这20%的核心功能
用途:自动化测试更着重于回归测试,没必要追求过高的覆盖率,而要考虑用例设计
测试覆盖率的最终意义
应用最多的地方在测试停止标准。
单纯讨论测试覆盖率,在瀑布式开发模型中并不重要,但在螺旋式、敏捷开发模型中,由于不断迭代累加,很难确定哪些模块在开发过程中没有给与足够的测试。在短迭代、DEVOPS中,更强调单元测试覆盖率来评估不断增加的代码数量
08—测试的原则
所有的测试都应追溯到用户需求
尽早启动测试工作
Pareto法则应用于软件测试:二八效率法则
一般情况下,在分析、设计、实现阶段的复审和测试工作能够发现和避免80%的缺陷,而系统测试又能找出其余缺陷的80%,最后4%的缺陷可能只有在用户的大范围、长时间使用后才会暴露出来
穷尽测试是不可能的
杀虫剂怪事:软件测试越多,其对测试的免疫力越强的现象
为了克服杀虫剂怪事,软件测试员必须不断编写不同的、新的测试程序,对程序的不同部分进行测试,以找出更多软件缺陷
前进两步,后退一步
测试中的一个基本问题—缺陷修复总是会以(20-50)%的几率引入新的缺陷。每次修复后,必须重新运行之前的所有测试用例,从而确保系统不会以隐蔽的方式被破坏
三心二意
细心、信心、耐心;沟通意识、时刻保持怀疑的态度并且有缺陷预防意识
软件工程标准
ISO9000系列标准的基本思想
控制的思想
对产品形成的全过程—从采购原材料、加工制造到最终产品的销售、售后服务进行控制
预防的思想
通过对产品形成的全过程进行控制以及建立并有效运行自我完善机制达到预防不合格,从根本上减少或消除不合格产品
CMM:软件成熟度模型
软件测试流程
01—软件测试环境搭建原则
搭建测试环境前
确定测试目的
不需要大量的数据,需要覆盖率高,测试数据要求尽量真实
稳定性测试
可能需要大量存量数据或者与实际硬件环境尽可能相似的硬件配置
测试的软件环境尽可能的模拟真实环境
尽可能的模拟用户使用环境,选用合适的操作系统和软件平台
了解符合测试软件运行的最低要求及用户使用的硬件配置
了解用户常用的软件,避免所有配置所有操作系统下都要进行测试,没有侧重点,浪费时间
产品化的测试则需要考虑兼容性的方案
营造独立的测试环境
不同的项目、不同的公司会对测试环境的独立性有不同的要求
测试过程中尽量保证测试环境独立,不会受到其他测试人员以及研发人员的影响
构建可复用的测试环境
通过备份或数据隔离的方式
重复运用一套测试系统进行多版本多时间段的测试
搭建测试环境过程分析
线下搭建
独立测试服务器或虚拟机
测试环境配置
测试项目导入
Docker模式
构建属于自己的image
一键部署
依赖第三方平台
软件测试设计
测试执行管理
功能测试项目实践
测试技术深化
手机APP测试
测试总结
面试总结
0 条评论
回复 删除
下一页