验收测试 : 验收测试是由用户或客户执行的测试,验证其是否符合用户需求。验收测试通常在软件开发的后期进行,以确保软件可以交付给用户并满足其要求。由用户客户,产品测试,管前端,不用管接口怎么调用,
按是否运行分类:
静态测试 : 静态测试是在不运行软件的情况下进行的测试。它主要关注软件的静态属性,如代码、文档、设计等。静态测试方法包括代码审查、文档检查、静态分析等。静态测试可以帮助发现潜在的问题和错误,提高代码和文档的质量。
动态测试 : 动态测试是在运行软件的情况下进行的测试。它通过模拟实际使用场景,测试软件在不同输入条件下的行为和性能。动态测试方法包括功能测试、性能测试、安全性测试等。动态测试可以验证软件是否按照预期工作,并发现运行时的错误和问题。
按是否查看源代码:
黑盒测试: 黑盒测试由于测试目的是站在用户角度看程序是否能正确执行实现所需要的功能,因此不考虑内部实现方法,而是从需求角度进行测试。黑盒测试可以测试功能完整性,正确性,是否能正确执行正确终止。
白盒测试 : 白盒测试主要面向代码逻辑,是在能看到全部代码的前提下进行的测试。白盒测试分为静态测试和动态测试。 常见的覆盖情况:语句覆盖、判定覆盖、条件覆盖、判定/ 条件覆盖、条件组合覆盖、路径覆盖。
性能测试 :正常范围,正常最大范围
数据量最大20w,响应时间10ws以内,最小数据吞吐量5000,假设17w是系统响应超过10ws,用二分法,从15w和17w之间找数据定位问题。
受到每秒接收发送
1、负载测试:通过模拟实际用户使用情况,向系统施加 正常或预期最大负载的压力 ,以测试系统在这些负载下的性能表现。主要关注 系统的响应时间、吞吐量、并发用户数 等指标;
2、压力测试:通过将系统暴露在 超出正常负载 的情况下,持续施加重负荷或极限负载,以评估系统在负载超出容量极限时的性能和稳定性。目的是确定 系统的瓶颈和极限 ;一般测试到最大值的120%,看cpu是否还是正常运行,
3、容量测试:旨在确定系统在 给定硬件和软件配置 下的性能极限,并确定系统在这些极限下的可扩展性和稳定性。通过逐步增加负载,测试系统在不同负载下的性能表现,以 确定系统的容量和资源需求 。
4、可靠性测试:通过 持续运行 系统,观察系统在长时间运行或持续负载下的稳定性和可靠性。主要 关注系统的错误处理、资源管理、日志记录和恢复机制 等方面。 MTBF :错误发生的平均时间间隔( Mean Time Between Failure)用来衡量系统的稳定性。
例如,我们购买了手机以后,很少有人拆开手机观察其内部的结构,大多数情况下,我们只是使用该手机的功能,从某种意义上说,此时这部手机就是我们的测试对象,所采用的测试方法就是黑盒测试。
功能测试、接口测试、性能测试、安全测试、兼容性测试、用户界面测试、安装测试、易用性测试,请举例。
易用性测试是由用户测试进行发现的,定制化的内容。
def check_condition(A, B):
if A > 10 and B < 5:
return True
else:
return False
语句覆盖(if判断条件)
判定覆盖(if else两个返回语句都要走到)
条件覆盖(防止两个都为true,)
判定 / 条件覆盖(要确定四个状况都能走到:true+false,)
条件组合覆盖
路径覆盖
用工具代替 / 辅助人工完成软件测试活动的过程,泛指所有能用工具辅助进行的有关测试活动。
测试自动化的目标是对被测试系统进行自动测试。总的来说,测试自动化的目标是通过 较少 的开销,得到 更彻底 的测试,并 提高产品的质量 。
自动化测试不能取代手工测试
手工测试比自动测试发现的故障要多,测试新功能,产品稳定后才会进行自动化测试
自动化测试不具有想象力
前端:
后端:
测试基本原则:
测试只能显示错误的存在
– 通过测试可以证明软件的错误
– 通过测试却无法证明软件没有错误
– 通过充分的测试可以减少在测试软件中未被发现错误的可能性
– 即使在测试过程中未发现软件的错误,这也不能证明被测软件是没有错误的。
穷举测试( exhaustive testing )是不可能的
即使一个大小适度的软件系统,一个考虑到所有的输入和它们所有不同的组合形式的穷举测试几乎是不可能的。同样考虑到对运行路径的每一种组合的穷举测试也几乎是不可能的。
测试总是一个 抽样的检查过程 ,所以应该根据风险和优先级来控制测试的开销(测试的时间,人员分配等)
• 谬误: “ 不存在缺陷的系统就一定是有用的系统 ”
• 发现并且消除缺陷远不等于系统就是用户所需的,满足了用户的期望
• 用户早期介入到开发过程以及半成品的使用过程是避免问题的有效措施
• 测试活动应尽早的介入
– 在系统或软件生命周期内,测试活动应该尽可能早的进行并实现规定的目标
– 通过早期的测试能及早地发现缺陷,减少测试即项目成本。
缺陷的集群( defect clustering )现象
人们经常发现,一个测试对象的大部分的错误起因都是在某几个部分被发现,错误并不是均匀分布在测试对象上的
通常在发现很多失效的地方往往还能找到更多的缺陷
重复不会有效率(杀虫剂悖论 (pesticide paradox) )
• 不断重复相同的测试用例不能发现更多的错误、不能带来新的信息
• 在开发测试过程中(组件测试、集成测试和系统测试),为了克服杀虫剂悖论保证测试效率,应该经常检查测试用例并且生成新的测试用例或对旧的不常用的测试用例以及常用但不能发现缺陷的测试用例进行改写
• 为了能找到更多的错误,应该对那些到目前没被检查的软件部分或在输入时未被考虑的情况进行测试
测试流程:
第二轮测试主要是针对上轮出现的bug,是bug修复的测试,编写测试用例。
第三轮测试才是全部回归测试,包括已通过的测试,
测试点细分成测试项。
测试用例:
为什么要写:
团队交流
重复测试
跟踪统计
用户自测
什么时候写:
需求计划,测试计划完成后
谁写:
测试人员
依据:
需求分析
测试方法: • 等价技术 • 边界值技术 • 业务流程图技术 • 其他(eg.决策表技术)
等价类划分是一种黑盒测试技术,它不考虑程序的内部结构,只是根据软件的需求说明来对输入的范围进行细分,然后再从分出来的每一个区域内选取一个代表性的测试数据。如果等价类划分的好,这个代表性的测试数据的作用就等价于其区域内的其它值。
等价类:是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。
等价类分为有效等价类(合理的输入数据集合)和无效等价类(无意义的输入数据集合),
题 1 :有一个 C 语言程序,其功能为计算两个 1~100 之间(包括1 和 100 )的整数的和。请构建其等价类划分。
划分为3个子区间:<1的整数;无效 1~100的整数;有效 >100的整数;无效
(1)先考虑输入数据的数据类型。 --- 合法类型 & 非法类型。
(2)合法类型中的合法区间和非法区间。
(3)画出示意图,区分等价类。
(4)为每一个等价类编号。
(5)从一个等价类中选举一个测试数据构造测试用例。
边界值是最容易出现错误的地方,也是我们测试的重点。
测试边界值时,一般测试边界值和正好超出边界值一个单位的值。
在编程的时候我们要画算法流程图,将这一思想应用到黑盒测试领域。黑盒测试的流程图针对整个系统业务功能流程的。
(1)详细了解需求。
(2)根据需求说明或界面原型,找出业务流程的各个页面以及流转关系。
(3)画出业务流图,或路径图。
(4)编写测试用例,覆盖所有的路径分支。
题 3 :画出淘宝网站购物业务流程,并依据此业务流程编写测试用例,进行测试?
在实际测试中,我们往往需要综合各种测试技术。
1. 我们首先应用流程图法画出被测软件的总体业务流程;
2. 然后针对具体某个页面或是模块,再应用等价类的思想来划分输入范围(重点测试边界值);
3. 如果涉及多个输入条件的组合情况,再应用决策表来考虑所有情况的排列组合。
Git 是当前最先进、最主流的 分布式 版本控制系统,免费、开源!核心能力就是版本控制。它是面向代码文件的版本控制,代码的任何修改历史都会被记录管理起来,意味着可以恢复到到以前的任意时刻状态。支持跨区域多人协作编辑,是团队项目开发的必备基础。工作区、暂存区、版本库是Git 最基本的概念。
工作区: 就是在电脑里能看到的代码库目录,是我们搬砖的地方,新增、修改的文件会提交到暂存区。
暂存区: 用于临时存放文件的修改,实际上上它只是一个文件(.git/index),保存待提交的文件列表信息。
版本库/ 仓库: Git 的管理仓库,管理版本的数据库,记录文件 / 目录状态的地方,所有内容的修改记录(版本)都在这里。
前端测试工具- F12
调出开发者工具 :
浏览器页面上
① F12 键 ( 笔记本电脑 Fn + F12)
② 右键选择 检查 (N)
③ 快捷键 Ctrl + Shift + i
开发者工具最常用的四个功能模块:
① 元素(ELements)
② 控制台(Console)
③ 源代码(Sources)
④ 网络( Network )
1 、查看元素的代码
点击左上角的箭头图标进入选择元素模式,从页面中选择需要查看的元素,可以在开发者工具元素(Elements)
一栏中定位到该元素源代码的具体位置。
查看元素的属性:定位到元素的源代码之后,可以从源代码中读出该元素的属性
修改元素的代码与属性 :点击元素,然查看右键菜单, 可以看到 chrome 提供的可 对元素进行的操作:包括编辑元素代码、修改属性等。
选择 Edit as HTML 选项时,元素进入编辑模式,可以对元素的代码进行任意的修改。
「注意:」 这个修改也仅对当前的页面渲染生效,不会修改服务器的源代码,故而这个功能也是作为调试页面效果而使用。
Console (控制台)
1、执行JS语句
2、查看控制台日志:在测试界面时,如果出现 Bug 问题,一般情况会在这栏展示,查看调试日志信息或者异常错信息,然后前端开发工程师根据具体问题来调试进行解决问题。
在源代码(Source)页面可以查看到当前网页的所有源文件 包括:样式、css、图片、 js 文件等。在左侧栏中可以看到源文件以树结构进行展示。
Web Performance 提供了可以通过的函数(performance 属性提供)测试当前网页或者 web 应用的性能,获取更为精确的原始数据,以毫秒为单位。一般放在window. onload 事件 中读取各种数据,有些值必须在页面完全加载之后才能得出。通过 performance 对象详解网页各项资源耗时及内存占用情况(精确到每个资源的 DNS 解析时间, TCP 连接时间等)。
用谷歌浏览器打开任意网页,进入调试模式(快捷键 F12 )。在谷歌浏览器 Console 选项中输入 performance 回车,可以看到一系列的参数。
performance 方法
1 、 performance.getEntries() : 查看所有资源具体消耗时间。
2 、 performance.getEntriesByType(type) : 根据资源类型来查看某种类型的资源耗时右侧展开的属性里有个 entryType 属性为 “resource” 。则可以使用performance.getEntriesByType("resource") 查询所有静态资源。
3 、 performance.getEntriesByName(name, type) : 查询指定的静态资源耗时。
YSlow 是 Yahoo 发布的一款插件,这个插件可以分析网站的页面,并告诉你为了提高网站性能,如何基于某些规则而进行优化。
常见支持的浏览器包括:FireFox 、 Chrome 、 Safari 、 Opera 等。 YSLOW 工具的使用主要有三个部分: Grade( 等级 ) 、Components(组件 ) 、 Statistics( 统计 ) 。
1.Grade
等级结果,表示对整个网站分析后得到的综合评分,综合评分的结果分为 6 等级,分别使用 A-F 来表示, A 表示最优化, F 表示最差。如果某一测试规则与该页面无关,则在前面出现N/A 标识,如下图:
2.Components
每个组件的信息包含:组件类型、组件大小 ( 组件大小能小则小 ) 、压缩后的大小、 COOKIE 大小、 HEADERS 请求头的详细信息、 URL 、EXPIRES过期日期、 RESPONSE TIME 响应时间、 ETAG 标签。
显示所有的组件个数,以及组件的大小。如果从组件数的大小的角度来说,我们希望组件数越少越好,组件总的大小越小越好。在组件标签页中会列出站点所有的组件数,一般的组件类型包括:doc 、 image 、 js 、 css 等。
3.Statistics 标签页
显示使用缓存和不使用缓存时,请求的组件数和组件文件大小的情况。该统计以饼状图的形式,显示了在清空缓存和缓存加载两种清空下,页面打开的信息情况
定义: JMeter ache 组织开发的基s's于 Java 的压力测试工具,用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。 JMeter 是通过线程组来驱动多个线程运行脚本对被测试的服务器发起负载,每一个负载121·2121211 机上都可以运行多个线程组
JMeter 测试计划要素是什么 ?
1 、一个脚本中 测试计划 只能有一个(右图所示)
2 、一个测试计划中至少要有一个 线程组
3 、至少要有一个 取样器
4 、至少要有一个 监听器
2 、线程组: 测试计划右键 >> 添加 >>Threads>> 线程组
3 、 sampler( 取样器 ) : 线程组 >> 添加 >>sampler>>http 请求(以http 请求为例)
4 、监听器: 线程组 >> 添加 >> 监听器 >> 聚合报告 / 查看结果树(以查看结果树为例)
Postman :是一款支持 http 协议的接口调试与测试工具,其主要特点就是功能强大,使用简单且易用性好 。无论是开发人员进行接口调试,还是测试人员做接口测试,postman 都是我们的首选工具之一 。
第一个请求:
数据库管理工具 - n a v i c a t e
Navicate : 是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL 、 Oracle、 PostgreSQL 、SQLite、 SQL Server 、 MariaDB 和 MongoDB 等不同类型的数据库
Jenkins : 是一个开源的、提供友好操作界面的持续集成 (CI) 工具,主要用于持续、自动的构建 / 测试软件项目、监控外部任务的运行。Jenkins 用 Java 语言编写,可在 Tomcat 等流行的 servlet 容器中运行,也可独立运行。
测试框架对比
安全测试工具 - N e s su s
NESSUS: 是一款使用非常广泛的系统漏洞扫描与分析软件,该软件诞生于 1998 年,是一款非常成熟的漏洞扫描软件。该软件具有以下特点:
1 、提供完整的电脑漏洞扫描服务,并随时更新漏洞库。
2 、可以在本机或者是远端上进行遥控,进行系统的漏 洞扫描分析。
3 、可自行定义插件。
4 、其运作效能会随着系统的资源而进行调整,当系统拥有的CPU 或者内存资源很多时, NESSUS 的效率也会随之提高。
5 、完整支持 SSL 。
6 、安全测试支持 NASL 。
安全测试工具 ----OWASP-ZAP
OWASP ZAP : 攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一,由数百名国际志愿者积极维护。它可以帮助你在开发和测试应用程序时自动查找Web 应用程序中的安全漏洞。 ZAP 是一个中间人代理。它能够获取你对 Web 应用程序发出的所有请求以及你从中收到的所有响应。
OWASP-ZAP 主要拥有以下重要功能:
本地代理
主动扫描
被动扫描
Fuzzy
暴力破解
他最强大的功能还是 主动扫描 ,可以自动对目标网站发起渗透测试,可以检测的缺陷包括路径遍历、文件包含、跨站脚本、sql 注入等等。
点开具体漏洞描述,结合业务逻辑和基本安全知识,分析判断漏洞并酌情考虑修复
安全测试工具 -----Burp Suite
Burp Suite : 是用于攻击 web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。它可以共享一个 HTTP 消息,能够在各种模块之间交换信息。
主要有以下功能和模块:
Proxy (代理模块)
Intruder (攻击入侵模块)
Repeater (中继器模块)
Sequencer( 会话 )
Decoder( 编解码 )
Comparer( 对比 )
Extender( 扩展 )
Burp 代理模块 - 实时拦截请求过程 :
1 ) Proxy-Open Browser ,打开内置浏览器,访问 web 系统;
2 )选择 Intercept is on ,实时拦截访问请求,修改测试参数信息,点击 Forward ,查看服务器返回的响应
Acunetix Web Vulnerability Scanner (AWVS) : 是用于测试和管理 Web 应用程序安全性的平台,能够自动扫描互联网或者本地局域网中是否存在漏洞,并报告漏洞。可以扫描任何通过Web 浏览器访问和遵循 HTTP/HTTPS 规则的 Web 站点。
可以通过检查 SQL 注入攻击漏洞、 XSS 跨站脚本攻击漏洞等漏洞来审核 Web 应用程序的安全性。
1)新建任务,然后保存
2 )默认选项后,若不需要特殊设置,直接点击 scan 即可开始扫描
3 )默认选项后,直接点击 Create Scan ;
4) 点击 Generate Report 可生成测试报告。