一文掌握 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掉了这些目录跳转符。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

transformer-explainer

安装和启动 找到这个项目&#xff0c;然后装好了。 这个项目的目的如名字。 https://github.com/poloclub/transformer-explainerTransformer Explained: Learn How LLM Transformer Models Work with Interactive Visualization - poloclub/transformer-explainerhttps:/…

BVS:多强联手,李飞飞也参与的超强仿真数据生成工具,再掀数据狂潮 | CVPR 2024

BEHAVIOR Vision Suite&#xff08;BVS&#xff09;是一个新型工具包&#xff0c;旨在系统评估和全面理解计算机视觉模型。研究人员能够在场景、对象和相机级别控制各种参数&#xff0c;有助于创建高度定制的数据集。 来源&#xff1a;晓飞的算法工程笔记 公众号 论文: BEHAVIO…

Java基础开发之编译异常和运行异常

一、getProperties()方法 1.System类提供一个getProperties()方法用来**当前系统的全部属性&#xff0c;它会返回一个Properties对象&#xff0c;也封装了系统的全部属性&#xff0c;这些属性的存在是以键值对的形式。 2.getProperties()方法使用例子&#xff1a; public cl…

springboot粮仓管理系统的设计与实现论文源码调试讲解

第3章 系统分析 本文作者在确定了研究的课题之后&#xff0c;从各大数字图书馆下载文献来阅读&#xff0c;并了解同类型的网站具备的大致功能&#xff0c;然后具体事务具体分析&#xff0c;得出本系统要研究的具体功能与性能。虽然分析系统这一阶段性工作主要是确定功能&#…

Java二十三种设计模式-状态模式(20/23)

本文深入探讨了状态模式&#xff0c;一种允许对象根据其内部状态变化而改变行为的软件设计模式。文章从定义、组成部分、实现方式、使用场景、优缺点分析、与其他模式的比较&#xff0c;到最佳实践和建议&#xff0c;全面介绍了状态模式的各个方面。通过Java语言的实现示例和实…

如何高效搜集知乎热门话题? 掌握这五种搜索技巧

本文将深入探讨如何高效地在知乎平台上挖掘热门话题&#xff0c;通过揭秘五大实用搜索技巧&#xff0c;帮助内容创作者、市场分析师快速捕捉网络热点&#xff0c;提升内容相关性和曝光率。掌握这些技巧&#xff0c;让你的文章或产品始终站在潮流前沿。 一、为何关注知乎热门话…

Ropdump:针对二进制可执行文件的安全检测工具

关于Ropdump Ropdump是一款针对二进制可执行文件的安全检测工具&#xff0c;该工具基于纯Python开发&#xff0c;是一个命令行工具&#xff0c;旨在帮助广大研究人员检测和分析二进制可执行文件中潜在的ROP小工具、缓冲区溢出漏洞和内存泄漏等安全问题。 功能介绍 1、识别二进…

Python实现水果忍者(开源)

一、整体介绍&#xff1a; 1.1 前言&#xff1a; 游戏代码基于Python制作经典游戏案例-水果忍者做出一些改动&#xff0c;优化并增加了一些功能。作为自己Python阶段学习的结束作品&#xff0c;文章最后有源码链接。 1.2 Python主要知识&#xff1a; &#xff08;1&#xf…

网络安全-防火墙初步认识。

文章目录 1. 防火墙是什么&#xff1f;2. 防火墙的工作原理是什么&#xff1f;3. 防火墙的分类有哪些&#xff1f;4. 实战4.1 防火墙管理和实验介绍4.2 防火墙命令行初体验实验目标&#xff1a;实验步骤&#xff1a; 4.3 防火墙Web初体验实验目标&#xff1a;实验步骤&#xff…

canvas实现图片矩形截图,矩形旋转后的截图,旋转后的截图摆正显示

一、效果图 二、主要代码 获取矩形框中地方的截图数据 1、先获取矩形四点在画布上的实际坐标值&#xff1b; 2、计算矩形此时实际的宽和高&#xff0c;便于设置后期临时矩形的宽和高&#xff1b; 3、可能矩形旋转了一定的角度&#xff0c;我们新建一个临时的画布tempCanvas&am…

mkv怎么改成mp4?3种mkv转mp4格式方法的介绍

mkv怎么改成mp4&#xff1f;将MKV格式视频转换为MP4格式&#xff0c;能显著提升兼容性&#xff0c;让视频在更多设备、平台上流畅播放。无论是智能手机、平板电脑、智能电视还是网页浏览器&#xff0c;MP4格式都具备广泛的支持&#xff0c;从而扩大视频的传播范围和受众群体。这…

【Hadoop】核心组件深度剖析:HDFS、YARN与MapReduce的奥秘

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《大数据前沿&#xff1a;技术与应用并进》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Hadoop简介 2、Hadoop生态系统概览 二、Hadoo…

人工智能和机器学习 3(复旦大学计算机科学与技术实践工作站)python机器学习、Pytorch库入门、d2l学习+<机器学习、神经网络————原理、理论>

前言 安装 — 动手学深度学习 2.0.0 documentation (d2l.ai)https://zh.d2l.ai/chapter_installation/index.html 安装 我们需要配置一个环境来运行 Python、Jupyter Notebook、相关库以及运行本书所需的代码&#xff0c;以快速入门并获得动手学习经验。 安装 Miniconda 最…

建造者模式 和 外观模式

这两种模式很像, 都是将一个复杂的流程统一用一个方法进行包装, 方便外界使用. 建造者模式更像是 外观模式的一种特里, 只对一个类的复杂初始化流程进行包装 建造者模式 简介: 就是一个类的构造方法可能很复杂, 由于系统的限制等原因, 可能很多初始化逻辑不能放在构造函数里,…

Redis大显身手:实时用户活跃排行榜

文章目录 场景说明方案设计数据结构 Redis使用方案排行榜实现更新用户活跃积分幂等策略榜单评分更新触发活跃度更新排行榜查询 技术派项目源码地址 : Gitee :技术派 - https://gitee.com/itwanger/paicodingGithub :技术派 - https://github.com/itwanger/paicoding 效果如图 …

在阿里云上部署 Docker并通过 Docker 安装 Dify

目录 一、在服务器上安装docker和docker compose 1.1 首先关闭防火墙 1.2 安装docker依赖包 1.3 设置阿里云镜像源并安装docker-ce社区版 1.4 开启docker服务并设置开机自启动 1.5 查看docker版本信息 1.6 设置镜像加速 1.7 将docker compose环境复制到系统的bin目录下…

DM8守护集群部署、数据同步验证、主备切换

1. 环境描述 实例详情 端口详情 2. 部署步骤 2.1 数据准备 2.1.1主库初始化 [dmdbaray1 ~]$ cd /dmdba/dmdbms/bin [dmdbaray1 bin]$ ./dminit path/dmdba/data PAGE_SIZE32 EXTENT_SIZE32 CASE_SENSITIVEy CHARSET1 DB_NAMEGRP1_RT_01 INSTANCE_NAMEGRP1_RT_01 PORT_NU…

C++——入门基础(上)

目录 一、C参考文档 二、C在工作领域的应用 三、C学习书籍 四、C的第一个程序 五、命名空间 &#xff08;1&#xff09;namespace的定义 (2)命名空间的使用 六、C的输入和输出 七、缺省函数 八、函数重载 九、写在最后 一、C参考文档 &#xff08;1&#xff09;虽…

第46课 Scratch入门篇:狙击望远镜

无限画中画 故事背景: 手拿一把狙击枪,第一次按下空格键的时候瞄准镜放大一倍,再按一次再放大一倍。开枪设计,瞬间击毁! 程序原理: 1、瞄准的物品放大,其实是角色的变化,我们把背景设置成角色,原始的角色是 480360,第一次放大的图为 14401080,放大了 3 倍。第二级…

【Java 并发编程】(二) 从对象内存布局开始聊 synchronized

对象的内存布局 首先抛出一个经典面试题: 一个 Object 对象占多大? 这里我用工具打印了出来, 发现是 “16bytes”, 也就是 16B; 为什么? 请继续往下看; 普通对象(除了数组), 由markword, 类型指针, 实例数据(就是对象里的成员), 对齐填充(整个对象大小要能被8B整数, 方便6…