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

news2024/9/19 10:36:45

随着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.coloradmin.cn/o/2049381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI歌手-五月天(声音转换)

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…

JavaScript - 数组对象中实用好玩的reduce方法

JavaScript中reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行)&#xff0c;将其结果汇总为单个返回值。 语法&#xff1a; arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue]) 参数配置&#xff1a; 参数名描述cal…

系列:水果甜度个人手持设备检测-github等开源库和方案

系列:水果甜度个人手持设备检测 -- github等开源库和方案 概述 通常来说&#xff0c;年纪轻轻的我们一般都喜欢走捷径&#xff0c;对于智能设备和算法软件领域来说&#xff0c;GitHub应该算为数不多的的捷径之一。就算因为效果不好/知识产权/方向不同等原因不用&#xff0c;…

XML外部实体注入

1.DTD实体及引用 DTD(文档类型定义)是一种用于定义XML文档结构和元素约束的方法。它可以描述一个XML文档的元素、属性、实体、注释等&#xff0c;从而规定了文档的结构和语法规则。DTD 通常是一个单独的文件&#xff0c;可以被多个XML文档所共享。 而在DTD中&#xff0c;实体…

日志分析-Windows

目录 Windows事件日志场景 1&#xff08;问题 1&#xff09;&#xff1a;服务器管理员向管理层提出了大量关于 PowerShell 在环境中被阻止的投诉。管理层最终批准在环境中使用 PowerShell。查看哪些日志、监控哪些事件 ID 等。场景 2&#xff08;问题 2&#xff09;&#xff1a…

Ubuntu 24.04系统部署Zabbix7.0

1、Ubuntu 24.04系统 阿里云镜像下载地址&#xff1a; https://mirrors.aliyun.com/ubuntu-releases/noble/ubuntu-24.04-live-server-amd64.iso 如果不使用Ubuntu系统&#xff0c;自己可以在下图选择对应版本。安装操作差不多&#xff0c;就命令有差异。 2、Zabbix版本 &am…

AVL树的学习

1.1 AVL树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查 找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-Velskii 和E.M.Landis在1962年 发明了…

微前端架构:使用不同框架构建可扩展的大型应用

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言 在现代前端开发中&#xff0c;随着应用规模的扩大和团队分工的复杂化&#xff0c;传统的单体前端架构逐渐暴露出维护困难、部署周期长、技术栈更新不便等问题。为了应对这些挑战&#xff0c;微前端架构应运而生。这种架构…

每日OJ_牛客_树根(简单模拟)

目录 牛客_树根&#xff08;简单模拟&#xff09; 解析代码 牛客_树根&#xff08;简单模拟&#xff09; 数根__牛客网 解析代码 这个题目很容易理解&#xff0c;对于数字的每一位进行相加直到不大于9为止即可。 接收字符串得到各个数字&#xff0c;并且每位求和&#xff…

使用yolov5实现目标检测简单案例(测试图片)

一、前置 测试这个案例之前需要安装一些前置的东西&#xff0c;如果已经安装的可以忽略&#xff0c;下面我给出我跟着做的一些很好的博客提供大家参考&#xff0c;因为我们主要目的还是实现yolov5的目标检测。 1、安装nvidia显卡驱动 可以参考&#xff1a;【Windows】安装NV…

从ARM的最强超大核处理器来看:Arm Core里都有啥?

目录 L1 instruction memory systemInstruction decode -指令译码Register rename -寄存器重命名Instruction issue - 指令发射Integer execute - 整数执行Vector execute - 向量执行Advanced SIMD and floating-point support - 高级 SIMD 和浮点支持Cryptographic Extension …

在亚马逊云科技上部署开源大模型并利用RAG和LangChain开发生成式AI应用

项目简介&#xff1a; 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 本次介绍的是如何在亚马逊云科技上利用Sag…

CMake 的快速应用

一&#xff0c;什么是CMake&#xff1f; 我们在学习了C 和 C后&#xff0c; 知道从c/c代码,变成可执行文件的过程如下&#xff1a; 如果使用的IDE开发&#xff0c;例如vs 2017&#xff0c;QT,等&#xff0c;那么一般IDE会帮你生成可执行文件&#xff0c;开发者一键点击&#…

Wandb使用指南

安装&#xff1a; pip install wandb 登录 wanbd login 在terminal中操作查看你的API key并粘贴回车进行授权&#xff08;https://wandb.ai/authorize&#xff09; 设置离线模式/在线模式 设置为offline会在无网络&#xff08;内网&#xff09;的时候使用&#xff0c;常用于de…

如何运用独特的产业运营体系打造一流的数字媒体产业园

如何运用独特的产业运营体系打造一流的数字媒体产业园 2024-08-15 17:37树莓集团 在数字经济蓬勃发展的今天&#xff0c;数字媒体产业作为其中的重要一环&#xff0c;正展现出巨大的潜力和活力。而如何运用独特的产业运营体系&#xff0c;打造一流的数字媒体产业园&#xff0…

SQLAlchemy 学习笔记

通信类型&#xff1a;AF_INET 协议家族一般是表示TCP通信的SOC_STREAM和UDP通信的SOCK_DGRAM。对于TCP通信&#xff0c;建立socket连接&#xff0c;&#xff1a; s socket.socket(socket.AF_INET, socket.SOCK_STREAM)连接socket&#xff0c; s.connect((host,port))socket通信…

PostWigger的xss漏洞

文章目录 Lab: Exploiting DOM clobbering to enable XSS Lab: Exploiting DOM clobbering to enable XSS 这是一道dom破坏题。 首先进入&#xff0c;发现都是一个个博客。 随便点击看看。 发现是一篇文章之后是一些评论以及咱们也可以发布评论。这里的Email使用了html的正…

Redis的缓存淘汰策略

1. 查看Redis 最大的占用内存 打开redis配置文件, 设置maxmemory参数&#xff0c;maxmemory 是bytes字节类型, 注意转换 2. Redis默认内存多少可以用 注意: 在64bit系统下&#xff0c; maxmemory 设置为 0 表示不限制Redis内存使用 3. 一般生产上如何配置 一般推荐Redis 设置内…

微信小程序骨架屏

骨架屏是常用的一种优化方案&#xff0c;针对于页面还未加载完时给用户的一种反馈方式。如果自己要写骨架屏有点复杂因为页面的元素过多且不稳定&#xff0c;这边直接使用微信开发工具生成骨架屏。也不只有微信开发工具有像常用的抖音开发工具&#xff0c;字节开发工具都有对应…

Python自准直仪双筒望远镜光学ABCD矩阵行为算法

&#x1f3af;要点 &#x1f3af;平面&#xff1b;曲面&#xff1b;圆柱面&#xff1b;非球面光&#xff0c;双凸透镜&#xff1b;90 度棱镜&#xff1b;分束立方体&#xff0c;双透镜棱&#xff1b;镜分光镜光线&#xff1b;横置隔膜&#xff1b;全内反射&#xff1b;多个分束…