一文掌握 Web 测试:功能、界面、兼容与安全的综合测试指南!

随着Web技术的不断演进,测试除了对应用的功能性、界面美观性、跨平台兼容性的基本要求外、安全性和性能的要求也逐步增高。因此,全面、系统的测试思维和策略成为了保证Web应用高质量的关键因素。本篇文章将从功能测试、界面测试、兼容性测试和安全测试四个方面,深入梳理测试要点,确保Web应用在各个层面上都能满足用户和业务的需求。通过这篇文章,希望对于构建全面测试思维,提供一些帮助。

 

一、功能测试

1、表单测试

表单一般指在界面进行数据提交操作的,包括新增和修改数据,例如注册。它涉及到的测试包括以下方面,每个点的验证都要考虑有效及无效输入的情况:

  1. 输入框测试: 考虑长度、数据类型、必填、唯一性约束、空格、及业务相关约束;
  2. 下拉框测试: 考虑默认值展示、下拉框数据完整性及正确性、手动输入值模糊匹配、选择第一个/最后一个/中间一个/业务常见选取的操作进行测试、联动选择(例省市区选择);
  3. 单选: 选与不选
  4. 多选: 考虑单一选择、多个组合选择(两两组合、3个组合、全部组合、常见业务组合情况)
  5. 文件上传: 例如图片、视频、excel、txt等。
    • 如果是图片、视频类文件,考虑文件大小、格式、尺寸、数量、视频时长等;
    • 如果是excel/txt文件,除了考虑本身文件大小、格式、数量;还需考虑文件包含数据内容验证:长度、数据类型、必填、唯一性约束及业务常见约束、表单、是否可读取多个表单
  6. 表单提交按钮: 是否支持回车/单击、快速多次点击是否重复提交表单、网络中断(弱网)提交、提交之后是否有提示、提交后内容显示是否正确、敏感数据是否加密、提交是否做权限校验控制、多人针对表单同时操作的场景测试。

2、搜索测试

搜索功能的测试,需要关注输入的搜索条件以及对应搜索结果的正确性。搜索条件一般主要包含2种:输入框搜索条件、下拉框搜索条件。

1-对于多个条件的页面搜索可以按照下面的顺序去进行测试(假设搜索条件为4个):
  • 任单个条件查询:考虑正常输入搜索、模糊搜索、超长搜索、不存在与之匹配的条件、为空输入;
  • 任两个组合查询:确保任两个组合查询的正确性验证,验证两个组合的所有情况;
  • 三个组合查询:不需要测试三个组合的全部组合。因为前面针对所有单个条件的搜索、两个组合的所有组合进行测试了,那么在这里选择2-3组三种组合进行测试即可;
  • 全条件组合查询:确保最大组合的正确性;
  • 默认条件查询:补充默认条件查询的用例;
  • 根据需求或者业务规则选取重点条件组合查询,如果此点与前面4点重复,不需重复测试。
2-搜索条件还有一种常见的情况:时间输入框

关于按时间来搜索的测试点,可以从以下考虑:

  • 开始时间=结束时间,验证一天范围的数据;
  • 开始时间<结束时间,验证跨天、跨月、跨年的数据;
  • 开始时间大于/小于当前时间,若是针对出生年月搜索,验证大于的情况;若是定时任务时间搜索验证小于的情况;
  • 只输入开始时间或者只输入结束时间;开始时间和结束时间都不输入;
  • 结束时间早于开始时间,验证系统是否给予合理提示;
  • 验证是否支持手动输入时间,并注意时间格式验证例如20180612格式
3-搜索功能的重点:落在搜索结果的完整性及正确性验证!

如何进行搜索结果的正确性验证? 对比后台或数据库数据是否一致。当数据量大,那么

  • 看数量是否一致:页面显示10条 vs 后台/数据库查询得出10条
  • 挑选其中第一、最后、中间一条对比:页面显示 vs 后台/数据库查询

一般搜索结果数据量大的情况下,还需要关注一个功能:翻页

  • 首页、上一页、下一页、尾页功能验证;注意首页情况下,上一页是否支持点击;尾页情况下,下一页是否支持点击;
  • 总页数、当前页数正确性验证;
  • 指定跳转页验证;例如输入8,点击跳转那么是否能正常跳转到第8页的数据;且还注意下跳转的有效范围是1-总页数 ;所以我们考虑1、最大页数的有效值验证,且也需要考虑0、总页数+1、负数/小数/非数字、空的异常值验证

3、删除测试

所有删除操作需要关注当前页面及关联功能页面的数据是否被正常删除,页面不做显示。测试点考虑如下:

  • 不选择数据,点击删除,是否合理提示
  • 选择一条数据,点击删除,页面不显示
  • 连续删除多个产品,是否支持批量删除
  • 选择全选,点击删除,页面数据被清空
  • 删除一个有关联性的数据,是否提示
  • 删除数据后,再次点击添加,是否正常添加成功

除了页面不显示之外,对于数据库表数据,分逻辑删除、物理删除2种情况。界面删除操作,对于数据库通常是逻辑删除:

  • 逻辑删除:假删除,对应数据库表中有个字段(例is_deleted)会进行标记1删除,0未删除。该条记录在数据库中仍然存在。
  • 物理删除:对应数据库表中的数据,真实删除了。

4、业务流程测试

除了单个功能的流程验证外,功能与功能串联起来的各种业务场景,也是功能测试的重点,通常采用场景法来做分析。例如电商项目有从浏览商品到下单购买的业务场景、也有取消订单与退款退货的流程等

  • 单个功能的流程:例如用户在搜索栏输入商品关键词(如“手机”)-->点击搜索按钮-->搜索结果页显示相关商品。
  • 功能与功能串联的业务场景流程:例如用户注册-->用户登录-->搜索商品-->浏览商品详情页-->加入购物车-->提交订单-->支付-->跳转订单详情页,订单状态更改为:待发货。

二、界面测试

界面测试通常来说,只要对比产品的原型图,是一致的,就测试通过。但也有可能存在原型图覆盖不到的页面,且作为专业测试来说,基于当前产品原型设计,我们也可以关注:

界面布局是否合理、整体风格是否一致、各个控件的放置位置是否符合客户使用习惯,此外还要测试界面操作便捷性、导航简单易懂性,页面元素的可用性,界面中文字是否正确,命名是否统一,页面是否美观,文字、图片组合是否完美等等。

详细来说,比如:

1、导航测试

导航是指位于页面顶部或者侧边区域的,它起着链接站点或者软件内的各个页面的作用。

例如是否易于导航?导航是否直观?Web系统的主要部分是否可通过主页存取?Web应用系统导航帮助要尽可能地准确。Web系统是否需要站点地图、搜索引擎或其他的导航帮助?页面结构、导航、菜单、连接的风格是否一致?

2、图形测试

图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。

例如要确保图形有明确的用途。比如banner页图片的广告宣传。所有页面字的风格、颜色、格式是否一致?背景颜色是否与字体颜色和前景颜色相搭配?图片的大小和质量也是一个很重要的因素,不失真?需要验证的是文字回绕是否正确。如果说明文字指向右边的图片,应该确保该图片出现在右边。

3、内容测试

用来检验Web应用系统提供信息的正确性、准确性和相关性。

例如信息的正确性是指信息是可靠的还是误传的?信息的准确性是指是否有语法或拼写错误?信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口?

4、表格测试

表格经常和其他界面元素一起协同使用,主要承载数据的归纳、展示与对比的功能,是列表的一种。

  • 存在筛选条件、搜索控件,是否列于页面上方?
  • 对于日期筛选条件,是否单独处理,展示出来?
  • 对于多个搜索条件的场景,是否采用高级搜索按钮并将其打包收起?
  • 对于多个搜索条件的场景,是否配置重置按钮,便于一键清空所有搜索条件?
  • 在数据显示超过多条时(一屏无法完全显示,需要滚动查看时),且表格中的数据不能直观的展示出数据类型,是否采用固定表头的形式,时刻显示数据类型
  • 当字段数量过多,需要横向滚动表格,且需要对比数据时,采用固定属性列字段
  • 是否支持排序,上下箭头指示排序,一般上下空心箭头默认,上箭头为升序,下箭头为降序

三、兼容测试

不同的操作系统平台、浏览器、分辨率进行测试。web应用主要是考虑浏览器的兼容性测试。浏览器很多,时间成本等条件约束下,考虑主流浏览器的兼容性。

1、开展人工测试,测试web应用在主流浏览器显示正常,不会有页面错乱错位等。
主要是页面的格式,字体,输入框,下拉框,复选框,按钮等的检查;页面显示是否正常等。一般穿插在功能测试中同步检查。

2、也可以借助一些第三方测试工具

例如IETester、BrowserShots等,详见我之前写过的一篇文章

四、安全测试

安全测试内容是很多测试人员在测试中,不太会关注或者能力范围内关注不到的一个领域,很多公司的安全测试会找专业第三方安全公司来做。但作为专业测试,在一个web应用的测试流程中,可以去补充考虑一些业务层面的安全测试要点。比如:

1. 身份验证和授权

  • 弱口令测试 :检查是否用户设置过于简单或常见的密码,确保有强密码策略。
  • 多因素认证 :验证多因素认证是否正确配置和执行,防止单一身份验证被攻破。
  • 权限管理 :测试不同角色和用户的权限是否正确设置,确保用户只能访问其授权范围内的资源。可以通过抓包修改参数,例如身份id、属性id,验证是否存在越权。
  • 会话管理 :检查会话超时设置,验证会话在注销或超时后是否彻底销毁,避免会话劫持。

2. 输入验证

  • SQL注入 :测试所有用户输入是否经过正确的过滤和处理,防止SQL注入攻击。如输入某些特殊的SQL语句或SQL片断。' or 1=1- -
  • 跨站脚本(XSS) :检查应用是否对用户输入进行编码,防止恶意脚本在浏览器中执行。在URL参数或表单中输入如下语句(如:<scrīpt>alert(document.cookie)</scrīpt>)来进行测试,当用户浏览 时便会弹出一个警告框,内容显示的是浏览者当前的cookie串,这就说明该网站存在XSS漏洞。
  • 输入长度和格式验证 :确保输入字段的长度和格式正确处理,防止缓冲区溢出或意外的数据注入。

3. 数据加密

  • 敏感数据传输 :验证所有敏感数据(如登录凭证、个人信息)是否通过加密的方式(如HTTPS)进行传输。
  • 存储加密 :检查数据库和存储中的敏感信息(如密码、信用卡信息)是否经过加密处理,确保数据在存储时的安全性。
  • 加密协议和算法 :确认应用使用的是最新和最安全的加密协议和算法,避免使用过时或已知存在漏洞的加密方式。

4. 支付业务逻辑

针对软件的支付/充值/兑换等跟钱相关的功能,对整个操作流程进行抓包,判断有无敏感信息可修改。敏感信息包括:金额、数量、运费、优惠等;

  • 在整个支付流程(提交订单->确认订单->支付)中,修改金额、数量、运费、优惠,是否存在问题
  • 获取未支付订单的状态,修改为已支付
  • 跳过支付:网站支付成功后跳转的链接携带订单号;抓取支付信息,将未支付的订单号拼接到支付成功跳转的链接中
  • 越权支付:网站如果有余额功能,在进行支付时,传参存在例userid=xx,尝试修改id值,是否可利用别人的余额来购买东西

5. 错误处理

  • 通用错误信息 :检查错误信息是否对用户隐藏了敏感的系统或调试信息,防止攻击者利用这些信息了解系统结构。比如404,或500页面,是否给出了友好的错误提示信息比如“你访问的页面不存在”等,而并非曝露一些程序代码。
  • 异常处理 :验证系统在发生异常时是否安全处理,确保不会泄露敏感信息或导致系统崩溃。

6. 文件上传与下载

  • 文件类型限制 :检查文件上传功能是否严格限制文件类型,防止恶意代码通过上传文件注入系统。
  • 文件路径处理 :确保文件下载功能没有路径遍历漏洞,防止用户访问未授权的文件。在URL中输入一定数量的“../”和“./”,验证系统是否ESCAPE掉了这些目录跳转符。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/403831.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】PTA 带头结点的链式表操作集 C语言

本题要求实现带头结点的链式表操作集。 函数接口定义&#xff1a; List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中List结构定义如下&#xff1a; typedef struc…

Kotlin学习-01创建kotlin学习环境

安装idea https://www.jetbrains.com/zh-cn/ 创建项目 选择kotlin 修改Main.kt fun main() {print("Hello World!") }运行

APP支付宝授权获取code uniapp

1.点击使用plus.runtime跳转打开支付宝 //打开支付宝授权&#xff0c;在支付宝APP中授权后会在支付宝中跳转到你填写的h5地址//urls是授权地址可以后端拼接也可以前端写死 //以下是一个拼接示例&#xff0c;需修改app_id的值和redirect_uri的值即可 //app_id是商户的APPID&…

计算机网络系统速成

Http与Https Http与Https是两种重要的网络通信协议&#xff0c;它们在Web通信中扮演着关键角色。以下是对Http与Https的详细解析&#xff1a; 一、Http&#xff08;超文本传输协议&#xff09; 1. 定义与功能 定义&#xff1a;Http&#xff08;HyperText Transfer Protocol…

Vue如何给计算属性computed传参的思考,看完就明白了!

一、缘起 事情的起因是这样的&#xff0c;有位朋友&#xff08;无中生友&#xff09;遇到了如下需求&#xff1a; 上面是一个商品列表&#xff0c;每个商品对应一个价格、优惠、数量&#xff0c;并且数量可以动态改变&#xff0c;最后动态计算出一个总价。当然&#xff0c;这只…

Ubuntu修改命令提示符格式PS1

命令提示符组成 通过Xshell进入Ubuntu的默认提示符是这样的 rootDESKTOP:~# root: 当前登录用户DESKTOP&#xff1a;主机名~: 当前目录名&#xff08;即用户主目录&#xff09;#&#xff1a;超级用户权限(root用户显示)$: 普通用户权限(非root用户显示) 修改命令提示符 step1…

nginx实战演练

目录 一.Nginx架构和安装&#xff08;未完待续&#xff09; <1>.Nginx概述 <2>.Nginx架构和进程 <3>.Nginx模块 <4>.Nginx安装(编译安装) 二.Nginx基础配置 <1>.关闭debug <2>.将nginx软件添加到环境变量 <3>.开机自启动脚…

Qt/C++地图标注点的添加删除移动旋转/指定不同图标和动图/拿到单击信号

一、前言说明 标注点在地图开发中是最常见的应用场景之一&#xff0c;比如在地图上需要显示设备的位置&#xff0c;基本上都是添加标注点&#xff0c;指定图片和尺寸已经经纬度坐标位置。这个功能在每种地图内核中都提供的&#xff0c;这个并没有任何难点&#xff0c;在这个功…

CeresPCL 最小二乘插值(曲线拟合)

一、简介 在多项式插值时,当数据点个数较多时,插值会导致多项式曲线阶数过高,带来不稳定因素。因此我们可以通过固定幂基函数的最高次数 m(m < n),来对我们要拟合的曲线进行降阶。之前的函数形式就可以变为: 既然是最小二乘问题,那么就仍然可以使用Ceres来进行求解。 …

★ C++基础篇 ★ vector 类

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将继续和大家一起学习C基础篇第六章----vector类 ~ 目录 一 vector的介绍及使用 1.1 vector的介绍 1.2 vector的使用 1.2.1 vector的定义 1.2.2 vector iterator 的使用 1.2.3 vector 空间增长问题 1.2.4 vecto…

使用 Fyne 构建 GUI 应用:设置标签文本和自增计数器

引言 Fyne 是一个用 Go 语言编写的跨平台 GUI 框架&#xff0c;它提供了一套丰富的组件来帮助开发者快速构建出漂亮的用户界面。在本文中&#xff0c;我们将通过一个简单的案例来演示如何使用 Fyne 创建 GUI 应用程序&#xff0c;该程序包含设置标签文本和自增计数器的功能。 …

高可用集群keepalived从部署到实战一篇解决

目录 一.高可用集群 1.1 集群类型 1.2 系统可用性 1.3 系统故障 1.4 实现高可用 1.5.VRRP&#xff1a; 1.5.1 VRRP 相关术语 1.5.2 VRRP 相关技术 二.Keepalived 部署 2.1 keepalived 简介 2.2keepalived架构 2.3 Keepalived 环境准备 2.4 Keepalived 相关文件 2.…

Python编写Word文档

目录 0. 安装依赖 1. 创建word文档 2. 添加标题、居中、字体16大小 3. 添加标题一 4. 添加一段话并设置字体颜色 封装函数 5. 换页 6. 插入表格 0. 安装依赖 python-docx1.1.2 1. 创建word文档 from docx import Documentdoc Document() 2. 添加标题、居中、字体1…

智碳云/高能耗企业 水-电-气-热-油-空压机等能源数据采集系统【源码】

智碳云/高能耗企业 水-电-气-热-油-空压机等能源数据采集系统【源码】 介绍基于SpringCloud的能源管理系统-能源管理平台源码-能源在线监测平台-双碳平台源码-SpringCloud全家桶-能管管理系统源码-能管系统软件架构

【记git 重命名文件失败,和正确方法】

【背景】 想要重命名一个文件&#xff0c;并同步到远程 【过程】 1.我是直接把 “驱动增加he.c” 文件重命名为 “驱动增加播放he接口方法” &#xff0c;想着直接提交就会同步重命名git仓记录的文件名。然后就可以推送到远程仓库&#xff0c;同步重命名远程仓库的文件名。 2.然…

全球滑坡(降雨诱发的)数据(有时间属性)

滑坡一般指狭义概念的滑坡,是指构成斜坡的有滑动历史和滑动可能性的岩、土体边坡,在重力作用下伴随着其下部软弱面(带)上的剪切作用过程而产生整体性运动的现象。 滑坡的发育阶段滑坡的发生、发展过程是有阶段性的。根据大量的现场实际资料、观测成果、滑坡模型试验和相关的岩土…

ant design pro v6 如何做好角色管理

先上图&#xff1a; 整个角色管理是如何做的吗&#xff1f; 首先你要处理后端&#xff0c;要先把角色存到用户那。 这是用户管理部分的内容&#xff1a; 可以看到一个用户是有多个角色的。 看到没有&#xff0c;存的是数组 数组的是一个 role 对象 role 对象是这样&#xf…

【专题】2024年7月人工智能AI行业报告合集汇总PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37350 随着人工智能技术的飞速发展&#xff0c;AI已经成为当今时代的重要驱动力。本报告将聚焦于人工智能AI行业的最新动态&#xff0c;涵盖客户服务、体验营销、资产管理以及国产AI大模型应用等多个领域。通过深入研究和分析&#xff0c;我们…

C++ 设计模式——抽象工厂模式

抽象工厂模式 抽象工厂模式 抽象工厂模式主要组成部分代码实现抽象工厂模式模式的 UML 图抽象工厂模式 UML 图解析优点和缺点适用场景 抽象工厂模式提供一个接口&#xff0c;用于创建一系列相关或相互依赖的对象&#xff0c;而无需指定它们的具体类。它通常用于需要创建多个产品…

2024年必读!《大模型应用开发极简入门》—— 一书掌握LLM大模型精髓

大家好&#xff0c;今天给大家推荐一本大模型应用开发入门书籍《大模型应用开发极简入门》&#xff0c;本书对很多AI概念做了讲解和说明&#xff01; 朋友们如果有需要 《大模型应用开发极简入门》&#xff0c;扫码获取~ 本书主要讲解了以下几个方面的大模型技术&#xff1a; …