软件测试期末考试复习--【乔冰琴微课视频版】

以下为本人根据考纲整理出来的自己手打的笔记,用于期末考试,部分章节没有,只整理常考的内容,欢迎各位批评指正!

第1章 概述

软件开发整体流程

  1. 需求分析:

    确定项目目标和范围。

    收集并分析用户需求。

    编写需求规格说明书,明确功能需求和非功能需求。

  2. 设计:

    系统设计

    详细设计

  3. 编码:根据设计文档编写程序代码,实现软件的各项功能

  4. 测试:

  5. 部署:将软件安装到生产环境,准备上线

  6. 维护:对软件进行定期更新,修复发现的错误,添加新功能,以响应用户反馈或市场变化。

  7. 项目管理与文档:将软件安装到生产环境,准备上线

软件测试目的

以最少的人力物力时间成本,找出软件中存在的各种错误和缺陷并且修正,最大限度减少在发布后由于潜在的问题带来的商业风险。

软件测试的原则

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

  2. 尽早开展测试

  3. 完全测试不可能,测试需要终止准则

  4. 充分注意测试中的群集现象

    即:发现错误多,残存错误也多

  5. 程序员应该避免检查自己的程序

缺陷报告的组成部分

  1. 缺陷的严重性和优先级

    问:严重性怎么等级划分?

    按严重性由高到低分别是致命、严重、一般、微小(0、1、2、3级)

    问:优先级怎么划分?

    按优先级分别是立即解决、高优先级、正常排队、低优先级(p1、p2、p3、p4)

  2. 缺陷的类型和来源

  3. 缺陷率 = (失败的测试用例数 / 所有经过测试的用例数) × 100%

  4. 缺陷注入率=D/F

    (Defect Injection Rate)是软件开发过程中用于衡量缺陷产生频率的一个指标。其计算公式为:

    缺陷注入率 = 缺陷总数(D)/ 功能点数(F)

    如题:某软件开发中发现缺陷101个,开发后发现缺陷96个,软件有10个功能点,求软件的缺陷注入率。

    解:D=101+96=197 F=1000,缺陷注入率=197/1000=0.197

    其中,缺陷总数(D)包括在开发过程中发现的缺陷数(D1)和软件发布后发现的缺陷数(D2),即D = D1 + D2。功能点数(F)表示软件项目的功能点数量。

  5. 整体缺陷清除率=D1/D

    (Defect Elimination Rate,DER)是软件测试中的一个重要指标,用于衡量在软件开发过程中发现并修复缺陷的效率。它可以通过以下公式来计算:

    整体缺陷清除率 = 开发过程中发现的缺陷数 / (开发过程中发现的缺陷数 + 提交后发现的缺陷数)

    ==整体缺陷清除率越高,说明在开发过程中发现并修复缺陷的效率越高,软件的质量也相对较高。==因此,整体缺陷清除率是衡量软件开发团队能力和软件质量的一个重要指标。在软件开发过程中,应该注重提高整体缺陷清除率,通过加强测试、提高代码质量、优化开发流程等方式来减少缺陷的产生和提高缺陷的修复效率。

缺陷管理生命周期

正常情况下:打开=>修正=>关闭

  1. 新建缺陷:缺陷提交入库
  2. 打开:分配给开发人员
  3. 修正:修复了bug,等待测试人员验证
  4. 拒绝:不是缺陷,拒绝修改
  5. 延期:延迟到下一版本修正
  6. 关闭:bug已被修复
  7. 重新打开:bug未被修复,重新打开缺陷

开发和测试工程师的关系

  1. 他们之间的关系是互补的、相互协作、相互依赖、共同确保软件质量的重要合作伙伴。
  2. 开发工程师负责编写、修改和调试软件代码,实现软件的功能和性能要求
  3. 而测试工程师则负责测试软件的质量和性能,确保软件符合用户需求和设计要求。
  4. 开发工程师和测试工程师之间的关系是密切而互补的。一方面,开发工程师需要依赖测试工程师的测试来验证他们的代码质量和功能实现情况。测试工程师的测试结果和反馈是开发工程师改进代码的重要依据。另一方面,测试工程师也需要与开发工程师紧密合作,了解软件的设计思路和实现细节,以便编写更有效的测试用例和发现潜在的缺陷。
  5. 此外,开发工程师和测试工程师还需要相互协作,共同参与到软件开发的整个生命周期中,包括需求分析、设计、编码、测试、部署和维护等各个阶段。他们需要相互协作,共同制定测试计划和测试策略,确保软件在每个阶段都能达到预期的质量和性能要求。

第2章 入门

为什么需要测试用例

  1. 高效、可重用性高,它可以更快更高效地发现软件缺陷
  2. 节约测试时间,提高测试效率
  3. 组织性和可跟踪性高,方便测试管理

第3章 软件测试分类

软件测试类型

  • 功能测试
  • 接口测试
  • 性能测试
  1. 什么是功能测试?

    直接运行软件,检查软件能否正确实现各项功能,能否满足用户需求

  2. 什么是性能测试?

    为了给用户提供高质量、高效率的软件产品,测试人员通过模拟生产运行业务压力或者用户使用场景,来测试系统是否满足性能要求。

  3. 性能测试的性能指标有什么?

    响应时间、吞吐量、服务器资源占用

软件测试级别(或阶段)

  • 单元测试
  • 集成测试 (两种集成模块的测试策略:非渐增式模式,渐增式模式)
  • 确认测试 (也叫有效性测试,运用黑盒测试方法)
  • 系统测试
  • 验收测试 (常用黑盒测试方法)
  1. 什么是单元测试?

    单元测试是对软件的最小单元进行测试,为了保证软件的各个单元的质量。

  2. 什么是集成测试?

    集成测试是确保软件模块组合起来后能够按照预期工作而进行的测试。

  3. 集成测试的两种集成策略是什么?(识记、理解)

    非渐增式模式:先分别测试每个模块,再把所有模块按照设计放一起测试。又叫大棒模式。

    渐增式模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,以此类推。

  4. 什么是α测试?什么是β测试?

    软件开发完后,由开发人员或测试人员在模拟环境下测试,以检查软件错误。即α测试。

    β测试是α测试之后执行,由最终用户实施,开发者不太干预。

软件测试方法

  • 黑盒测试:通过软件外部表现发现软件缺陷和错误。
  • 白盒测试:分析与检查程序内部结构发现软件缺陷和错误。
  • 灰盒测试:是介于黑盒与白盒测试之间,既关注程序外部表现,也关注程序内部逻辑结构进行的测试。

软件测试手段

  • 手工测试

  • 自动化测试

    应用领域包括:

    • ​ UI自动化测试

    • ​ 接口自动化测试

    • ​ 单元自动化测试

第4章 测试过程管理

软件测试流程

问:软件测试的整体流程是什么?(简略、详细)

  1. 测试计划:参考需求规格说明书等文档,规划本次测试的范围、内容以及资源的分配,制订整体测试策略。
  2. 测试需求分析:分析测试的需求可以明确测试的范围、保持测试目标的一致性以及指导测试用例的设计。
  3. 测试建模:将测试思路和内容形成条理清晰的模型,有利于梳理复杂的业务逻辑和功能,减少测试的盲目性,提高测试效率。
  4. 测试用例设计
  5. 测试执行
  6. 测试总结:对整个测试评估和总结,编写测试报告,确认系统能否上线。

测试执行阶段

  1. 冒烟测试:先对最基本的功能进行测试,如果测试出错,无需下一步测试,直接回退版本进行修改。
  2. 回归测试:修改后的代码进行的测试,以确认修改的代码没有引入新的错误或引起其它代码错误。
  3. 回归测试可以使用自动化测试处理。

第5章 白盒测试用例设计

逻辑覆盖法

应用(考察各种覆盖的理解,学会设计测试用例以满足某种逻辑覆盖)

  1. 语句覆盖

    使程序中的每个可执行语句至少执行一次

  2. 判定覆盖(分支覆盖)

    使程序中的每个判定的可能值至少满足一次

    注意!!是"程序中"的每个判定,即看程序有多少个if语句,而不是看一个if语句由多少个判定组成。

  3. 条件覆盖

    使每个判定里面的所有可能的条件取值组合至少执行一次

  4. 条件判定组合覆盖

    每个判定中每个条件的取值至少满足一次,并且每个判定的值也至少满足一次

  5. 多条件覆盖

    使程序中每个判定中条件的各种组合至少出现一次。

  6. 修正条件判定覆盖

    问:修正条件判定覆盖是怎么覆盖测试用例的??
    修正条件判定覆盖是一种白盒测试方法,要求在一个程序中,每一个条件的所有可能结果都至少出现一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的输出。(可以理解为“控制变量法”)

问:满足条件覆盖一定满足判定覆盖?

答:,不一定。教材P60

基本路径测试法

应用

做题步骤如下

  1. 画出控制流图

    懂得画if(a or b)、if(a and b)这样的复合条件判断的控制流图

  2. 计算环路复杂度(3种计算方法)

    • V(G)=区域数
    • V(G)=判断节点数P+1
    • V(G)=边数-节点数+2 E-N+2
  3. 基本独立路径导出

    由短到长导出基本路径集

    path1:…

    path2:…

    path3:…

    path4:…

  4. 设计测试用例

    根据上面的路径设计测试用例(很简单的)

    测试用例输入数据预期结果
    1
    2
    3

第6章 黑盒测试用例设计

等价类划分法

应用(要求你用该方法分析与设计测试用例)

  • 问:什么是等价类划分法?

    即将程序的输入数据集合划分为若干个子集(如:整个输入数据划分为“地区码”、“电话号码”),从每个子集(等价类)中选取少量的具有代表性的数据作为测试用例。

  • 问:有效等价类和无效等价类是什么?

    有效等价类:有效、有意义的输入数据;

    无效等价类:无效、不满足程序要求的输入数据;

  • 问:(判断)无效等价类划分法每次可以覆盖多个无效等价类

    错误。每次只能覆盖一个无效等价类,因为如果覆盖多个,那么测试过程中有可能只发现一个错误便终止此次测试,可能还有其他的输入错误没有被检查出来。

边界值分析法

  • 问:什么是边界值分析法?为什么使用?

    是针对数据输入的边界条件设计测试用例的测试方法,可以提高测试效率,高效地发现软件错误和缺陷。

  • 取边界值:除了边界值,还要取刚刚大于和刚刚小于边界值的数据作为测试数据。

  • 问:(判断) 无需确定边界值,也能划分出有效等价类和无效等价类。

    正确。边界值是划分两者的重要参考,但不是唯一标准。

因果图法

  • 问:什么是因果图法?

    是使用专门的符号描述输入条件与输出结果之间的因果关系,输入或输出的约束关系的测试方法。

  • 输入条件与输出结果之间的因果关系(4种)

    恒等、非、或、与

  • 输入或输出的约束关系 (5种)

    互斥、包含、唯一、要求、屏蔽

决策表法

(也称为判定表法)

5个概念

  1. 条件桩

    列出问题的所有条件,如上述3个条件——功率大小、维修记录和运行时间。

  2. 动作桩

    列出针对问题所采取的操作,如优先维修。

  3. 条件项(有值)

    针对所列条件的具体赋值,即对每个条件可以取真值和假值。

  4. 动作项

    列出在条件项(各种取值)组合情况下应该采取的动作。

  5. 规则(条件项+动作项)

    任何一个条件组合的特定取值及其相应要执行的操作。在决策表中贯穿条件项和动作项的一列就是
    一条规则。

场景法

举例:ATM机取款案例,先进行场景设计,再设计测试用例

2个概念

  1. 基本流:按照正确的业务流程实现的一条操作路径(模拟正确的操作流程)
  2. 备选流:导致程序出现错误的操作流程(模拟错误的操作流程)

第7章 接口测试基础

http与https协议

  1. 什么是http协议、https协议?

    HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。

  2. HTTPS协议是一种通过计算机网络进行安全通信的传输协议,用于对数据进行加密和传输,确保数据的机密性、完整性和真实性。

客户端的职能

向服务器发送请求

接收服务器返回的报文并解析

报文&状态码

  1. 请求报文

    组成:请求行、请求头、空行、请求体

    请求方法:(8种)Get、Post、Delete(删除web页面)、Put(存储web页面)

  2. 响应报文

    组成:状态行、响应头、空行、响应体

    状态码:

200请求成功
301资源被永久移动(永久重定向)
302资源临时移动
403没有权限,服务器拒绝提供服务
404没找到资源
500服务器内部错误
503系统超载,访问人数太多

第10章 接口自动化测试

接口自动化测试的特点

  1. 自动化执行

    接口自动化测试通过编写测试脚本和代码,实现测试过程的自动化执行,减少人工操作,提高测试效率。

  2. 可重复性

    自动化测试脚本可以重复执行,确保测试的一致性和可靠性。

  3. 可扩展性

    自动化测试框架可以根据需要进行扩展,支持更多的测试场景和协议。

工具

常见测试工具Postman、JMeter、Selenium、LoadRunner、Microsoft Project、MantisBT的应用场景

这些测试工具各自有其特定的应用场景,以下是对它们应用场景的简要介绍:

  1. Postman:
  • API 测试:Postman可以用于测试API接口,发送请求并查看响应结果,以确保API的正常工作和正确性。
  • API 文档编写:使用Postman可以创建API文档,包括请求和响应示例、参数说明等,方便开发人员和其他人员查看和理解API接口。
  • 团队协作和分享:Postman支持团队协作和分享,多人可以共同编辑API文档和测试集合,提高团队合作效率。
  • Mock服务:Postman提供mock服务,模拟API接口的返回数据,方便前端或其他团队在API开发前进行接口调试。
  • 监控和调试:使用Postman监控API接口的性能和可用性,及时发现问题并进行调试。
  • 自动化测试:Postman可以结合其他工具进行API接口的自动化测试,提高测试效率和覆盖率。
  1. JMeter:
  • 接口测试、性能测试:JMeter是一个开源Java桌面应用程序,旨在执行负载测试和检查Web应用程序的功能行为。它可用于模拟真实的用户场景,对Web应用程序或各种服务(包括Rest API)进行性能测试,以评估系统的响应性和稳定性。
  1. Selenium:
  • Web应用程序测试:Selenium是一个用于Web应用程序测试的工具,直接在浏览器中运行测试,就像真正的用户在操作一样。它支持多种浏览器,并可以创建回归测试来检验软件功能和用户需求。
  • 兼容性测试:通过在不同浏览器上运行测试,Selenium更容易发现浏览器的不兼容性。
  • 自动化测试:Selenium支持自动化测试,可以通过编写模仿用户操作的测试脚本来从终端用户的角度测试应用程序。
  1. LoadRunner:
  • 性能测试:LoadRunner可用于对系统进行负载测试、压力测试和稳定性测试,以评估系统在高并发、大数据量等场景下的表现。
  • 容量规划:通过模拟不同用户数量和请求频率,LoadRunner可以帮助企业预测系统在不同负载下的性能表现,为系统容量规划提供参考。
  • 故障重现与定位:LoadRunner可以模拟故障场景,帮助开发人员快速重现问题并定位原因。
  1. Microsoft Project:
  • IT项目管理:Microsoft Project是一款项目管理软件,可以帮助项目经理协调各个开发阶段的任务和资源,及时发现并解决问题。在软件开发项目中,项目经理可以使用该软件追踪bug和问题的解决情况,确保项目按时交付。
  1. MantisBT:
  • Bug跟踪系统:MantisBT是一个基于Web的轻量级bug跟踪系统,提供项目管理以及缺陷跟踪服务。它适用于中小型项目的管理和跟踪,使用户能够在几分钟内学会操作并开始管理他们的项目。

第14章 渗透性测试

SQL注入原理

答:当Web应用程序在构建SQL查询时,未对用户输入进行充分验证和过滤,直接将用户输入拼接到SQL查询中,导致攻击者可以插入恶意的SQL代码片段,从而欺骗数据库执行非预期的命令,获取或篡改数据。

你的这个web程序在构建SQL查询的时候没有编写对用户输入进行验证和过滤的功能,导致了黑客可以将精心构造的SQL语句插入到正常的SQL语句中,导致SQL解释器执行非法命令,造成数据泄露或者篡改。

SQL注入漏洞危害

  1. 数据泄露:攻击者利用SQL注入非法获取用户信息,如身份证、银行卡密码等,信息一旦泄露,有可能会被用于实施诈骗等违法犯罪活动。
  2. 数据被篡改:攻击者还可以利用SQL注入漏洞,修改数据库中的数据。如:攻击者可能会修改与财务、安全等关键业务相关的数据,造成巨大的经济损失或安全风险。
  3. 特权提升:攻击者通过SQL注入来提升自己的数据库权限,进而执行更高级别的攻击。造成更大的损失。
  4. 破坏系统:攻击者通过SQL注入破坏系统正常业务逻辑,造成系统瘫痪,无法正常运行。

XSS攻击

  • 即跨站脚本攻击
  • 是一种常见的网络安全威胁。这种攻击方式利用了网页开发中的漏洞,允许攻击者向正常用户浏览的网页中注入恶意的脚本代码(如JavaScript、HTML等)

XSS攻击主要分为三类:

  1. 反射型XSS:恶意脚本作为参数包含在URL中,用户访问这个被构造的链接时,脚本在用户的浏览器上执行。这种类型的XSS通常不会持久存在于目标服务器上。
  2. 存储型XSS:攻击者将恶意脚本提交到目标网站的数据库或存储系统中,当其他用户访问某个页面时,网站服务器将恶意脚本作为正常内容的一部分返回给用户的浏览器,导致持续性攻击。
  3. DOM-based XSS:这类攻击利用的是浏览器的Document Object Model (DOM),恶意脚本通过修改网页的DOM结构来执行,而不需要服务器参与。这类XSS发生在客户端,通常由于客户端JavaScript代码未正确处理用户输入所致。

XSS攻击危害

  1. 盗取用户凭证:攻击者可以通过脚本窃取用户的cookie或其他认证信息,进而冒充用户身份登录网站。
  2. 敏感信息泄露:恶意脚本能够读取或修改页面内容,获取用户的输入信息,如密码、个人信息等。
  3. 重定向用户至恶意站点:通过脚本修改页面的DOM结构或使用window.location重定向用户到钓鱼网站。
  4. 执行恶意操作:在用户浏览器中执行操作,如发送恶意请求、上传文件、进行点击欺诈等。
  5. 传播蠕虫:在社交平台上通过用户之间的交互传播恶意脚本
  • 21
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值