如何对web系统开展无障碍测试
Accessibility test(无障碍测试)是一种测试方法,旨在评估软件、网站或其他数字产品的可访问性,以确保它们能够被身体残障或其他特殊需求的用户使用。这些测试通常包括使用辅助技术,如屏幕阅读器和放大器,以模拟各种用户体验,并检查是否符合国际标准和法律要求的无障碍标准,例如 Web Content Accessibility Guidelines (WCAG) 和 Section508等。 Accessibility test 的目的是确保数字产品对所有用户都具有可用性、可理解性和可操作性,无论他们是否有残障、老年人、临时伤残、非母语用户等等。
对于一个web系统,如何开展无障碍测试呢?首先需要了解无障碍标准,例如WCAG和Section508等,其次是借助一些工具进行自动扫描,在fix扫描出来的issue的基础上再配合一些辅助工具开展全面的手动测试。
无障碍标准理解
WCAG 是 Web Content Accessibility Guidelines(Web 内容可访问性指南)的缩写,是由万维网联盟(W3C)发布的国际无障碍标准。WCAG 包括一系列技术标准和指南,帮助网站设计者和开发者创建无障碍的 web 内容,以便更好地服务于广大用户。
WCAG 涵盖了一系列无障碍性原则和准则,包括以下三个级别:
A 级别:基本无障碍性要求。这些要求是最重要的,必须满足才能让许多残障用户使用网站。
AA 级别:中等无障碍性要求。这些要求可以提高残障用户的访问体验,使大多数用户更容易使用网站
AAA 级别:最高无障碍性要求。这些要求对于某些用户群体来说非常重要,但对于大多数用户来说可能并不必要。通常情况下,如果企业要开展无障碍测试,一般要达到AA级别。
WCAG 定义了 4 个无障碍性原则(POUR):
可感知性(Perceivable):用户必须能够感知所有内容和界面组件,包括文本、图像、音频和视频等
可操作性(Operable):用户必须能够使用界面组件和导航,例如键盘和鼠标等。
理解性(Understandable):用户必须能够理解内容和如何操作界面组件,以及如何浏览网站。
健壮性(Robust):内容必须能够在不同的浏览器和辅助技术中运行,以确保用户能够访问内容。
WCAG 还提供了多种技术和方法来实现这些要求,包括 HTML、CSS、JavaScript、ARIA 等。WCAG 是业界公认的最具权威性和可信度的无障碍标准之一,它的指南和技术标准已成为全球无障碍设计和开发的基准。在进行 web 系统的无障碍测试时,WCAG 标准是一个必须参考的依据,测试人员应该使用 WCAG 的指南和技术标准来检查 web 内容的可访问性,并确保其符合相关标准。
Section 508 是美国联邦政府为了保障残障人士的权益而颁布的一项法规。该法规规定,所有联邦政府机构和与政府合作的企业和组织必须确保其数字产品和服务对残障人士可访问,包括对视觉、听觉、身体和认知障碍的人士都应具备可访问性。
中国也指定了"互联网内容无障碍可访问性技术要求与测试方法",里面的很多规则在WCAG中已经包含。总结而言,因为WCAG提供了详细的技术标准和指南,且使用广泛,建议以WCAG为主要参考标准,对web网站开展Accessibility Test。
无障碍测试扫描工具
支持无障碍扫描的工具很多,例如axe,wave,lighthouse等,这三个工具都是以插件方式运行,即在浏览器上安装这些插件,即可扫描目标网页,这些工具的差异点是内置的无障碍规则不同,也就是扫描出来的结果会有所不同。此篇博客会逐一介绍如何使用这三个工具进行无障碍测试,其中会重点介绍axe,因为axe提供了非常丰富的功能。为了学习这些工具,首先来了解下无障碍测试工具的工作原理。无障碍扫描工具的工作原理如下:
网站抓取:无障碍扫描工具会首先对 web 系统进行网站抓取,收集系统中的所有页面、链接、表单等等,以便后续的检查和分析。
分析检查:扫描工具会针对 WCAG 或其他相关标准进行自动化的检查和分析,比如检查图像的替代文本、表单控件的标签、语言和语义的正确性等等。
问题报告:扫描工具会生成一个详细的问题报告,列出检测到的无障碍问题和建议的解决方案。这个报告可以帮助测试人员识别和修复 web 系统中的无障碍问题。
在了解了基本工作原理后,接下来先学习如何使用axe工具进行无障碍测试。axe包括几方面:
Axe-core:Axe-core是一个无障碍测试的开源JavaScript库。该库可以与已有的UI自动化工具集成,完成无障碍的自动化测试,例如axe-core可以和puppeteer或者selenium集成,详细demo可下载官网的demo运行。另外,UI自动化测试工具Cypress也提供了cypress-axe插件,使用该插件可以在cypress脚本上增加无障碍测试。
Axe-devTools: Axe-devTools又分为免费版本和收费版本,对于Axe-devTools-free本质上是将axe-core封装在易于使用的界面中,因此您可以进行自动化测试并查看结果,而无需构建自己的界面。axe DevTools Free扩展程序可在Chrome、Edge和Firefox浏览器中使用。
Axe-devTools-Pro:Axe-devTools收费版本,Axe DevTools Pro在axe DevTools Free(具有友好界面的浏览器内测试)的基础上增加了Intelligent Guided Testing™模块,通过引导完成手动无障碍测试来提高测试效率和质量。
相较于免费版本,Axe-devTools的收费版本和企业版本提供了如下了定制化功能,Prd版本可以免费试用7天,此篇博客重点介绍如何利用Axe-devTools-Pro开展无障碍测试。
要使用Axe-devTools非常简单,在浏览器上安装插件,打开目标web网站,开启扫描即可,具体如下图所示:
扫描完成后会给出具体的issue个数,还可查看每个issue详细信息以及改进建议,因为axe-devTools是是基于axe-core封装的,所以,要检查axe覆盖了哪些无障碍标准,可以下载axe-core的代码,在代码的/lib/rules目录下可以查看到所有的rules,具体如下图所示:
Axe-devTools Pro使用
虽然Axe DevTools是一种非常有用的工具,但它并不能完全覆盖所有的可访问性测试,所以还需要手动测试才能覆盖所有的无障碍规范,为了提升手动测试的效率,Pro版本提供了智能指导测试,可以理解成半手动测试提升测试效率。那为什么Axe DevTools不能覆盖所有的无障碍测试呢?具体原因如下所示:
依赖页面结构和语义化:Axe DevTools依赖于页面中的结构和语义信息来进行测试,如果页面没有正确的结构或语义信息,那么Axe DevTools可能无法检测到所有的可访问性问题。
无法模拟交互:Axe DevTools无法模拟用户的交互,例如使用键盘或屏幕阅读器进行操作。因此,它可能无法检测到所有与交互有关的可访问性问题。
依赖于特定的技术和标准:Axe DevTools依赖于特定的Web技术和标准来进行测试,例如ARIA(可访问性富互联网应用程序)和HTML5。如果页面没有正确使用这些技术和标准,那么Axe DevTools可能无法检测到相关的可访问性问题。
不包括所有的可访问性规则:Axe DevTools包括了许多可访问性规则,但它不包括所有的规则。因此,Axe DevTools可能无法检测到所有的可访问性问题。
接下来看看如何使用Axe-devTools Pro中的智能指导测试,智能指导测试包括Table/Keyboard/Modal Dialog/Interactive element/Structure/Images/Forms 七个部分,以Keyboard为例,来看看如何使用智能引导测试。
选择Keyboard后,devTools会自动扫描出页面上的Tab,并在页面上进行标注,此时只能引导显示“We’ve detected some elements in the tab order which lack a role which indicates interactivity to assistive technology”,让人手动确认页面标注的tab是否是所有的tab,如果有遗漏的,可以手动选择元素增加上去,然后每个元素有多个选项,例如:Element is interactive/Element is a scrollable region/Element is neither interactive nor scrollable,人工review,确认每个tab应该选择哪个选项,选择完成后,devTools完成分析,并给出issue细节,点击具体的issue,可以链接到issue的background,good example,bad example,fix suggesstion等,帮助开发人员更好的理解为什么这个是个Accessibility issue以及如何修复他。
总结而言,Pro版本在Free版本上弥补了部分无法自动扫描的无障碍问题,按照官网的说法,Free版本一般能扫描出网站50%左右的无障碍问题,通过智能引导测试可以覆盖到80%左右,对于剩下的20%无障碍问题,Pro版本也提供了手动无障碍测试CheckList,帮助测试人员全面检测Web网站是否满足无障碍规则,详细的CheckList如下图所示,这些CheckList可以帮助不熟悉无障碍测试的人员更好的理解如何对一个web网站开展无障碍测试。
上面介绍了axe-devTools,接着来看看WAVE插件使用,WAVE的使用也很简单,在浏览器上按照插件后即可使用,扫描结果如下图所示,因为内部覆盖的规则有所不同,所以针对同一个网站,两个插件扫描出的问题略有不同。实际项目中,建议采用某一个插件,相对来说axe提供的功能更加丰富,首选axe。
除了WAVE,性能检测工具lighthouse也可以检车accessibilty的问题,如下图所示,同理,工具内置的规则不同,检查结果也略有不同,另外,lighthouse也给出了high level的手动checkList。
以上就是对web系统开展无障碍测试的介绍,总结而言,在开展无障碍测试前,需要透彻理解无障碍相关规则,然后选取一款自动扫描工具进行扫描,在修复了扫描后的issue情况下,再参考手动测试CheckList对web系统开展更全面的无障碍测试。
相关文章:
如何对web系统开展无障碍测试
Accessibility test(无障碍测试)是一种测试方法,旨在评估软件、网站或其他数字产品的可访问性,以确保它们能够被身体残障或其他特殊需求的用户使用。这些测试通常包括使用辅助技术,如屏幕阅读器和放大器,以…...
使用vite+vue3.0 创建一个cesium基础应用 ----01 项目搭建
使用vitevue3.0 创建一个cesium基础应用 ----01 项目搭建 1.使用yarn创建一个vite项目 我们可以在vite官网找到vite创建项目的命令 https://cn.vitejs.dev/ 可以使用yarn创建项目选择使用vue3.0框架,语言使用js 创建完成后结构如下: 2.找到vite社区中的…...
【Python学习笔记】第二十七节 Python 多线程
一、进程和线程进程:是程序的一次执行,每个进程都有自己的地址空间、内存、数据栈及其他记录运行轨迹的辅助数据。线程:所有的线程都运行在同一个进程当中,共享相同的运行环境。线程有开始、顺序执行和结束三个部分, …...
【id:18】【20分】B. DS顺序表--连续操作
题目描述建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)该类具有以下成员函数:构造函数:实现顺序表的初始化。插入多个数据的multiinsert(int i, int n, int item[])函数,实现在…...
vi编辑器操作指令分享
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方…...
OSPF与BFD联动配置
13.1.1BFD概念 BFD提供了一个通用的、标准化的、介质无关的、协议无关的快速故障检测机制,有以下两大优点: 对相邻转发引擎之间的通道提供轻负荷、快速故障检测。 用单一的机制对任何介质、任何协议层进行实时检测。 BFD是一个简单的“Hello”协议。两个系统之间建立BFD会…...
jQuery基础
> 🥲 🥸 🤌 🫀 🫁 🥷 🐻❄️🦤 🪶 🦭 🪲 🪳 🪰 🪱 🪴 🫐 🫒 …...
day39|139.单词拆分 背包问题ending
139.单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s "leetcode",…...
Shell脚本编程
Shell编程 视频地址https://www.bilibili.com/video/BV1hW41167NW/?p1&vd_source977d52a6b92ce8b6ae67c16fc61f0428 第一章 Shell概述 大数据程序员为什么要学习Shell呢? 需要看懂运维人员编写的Shell程序偶尔会编写一些简单的Shell程序来管理集群…...
ChatGPT解答:JavaScript保存当前网页页面图片为pdf文件或者word文件,前端用vue2,给出详细的方案和代码
ChatGPT解答:JavaScript保存当前网页页面图片为pdf文件或者word文件,前端用vue2,给出详细的方案和代码 ChatGPTDemo Based on OpenAI API (gpt-3.5-turbo). JavaScript保存当前网页页面图片为pdf文件或者word文件,前端用vue2&am…...
Python基础学习11——文件
我们可以利用python对本电脑文件夹里的文件进行处理,python中提供了一系列相关的方法和函数供我们使用。 读取文件 我们现在在本python文件中有一个txt文件名为Lego,那么我们就可以利用python打开该文件 with open(Lego.txt) as file_text:contents …...
外网用户打不开公司的网站?web服务器端口映射到公网
我们经常会遇到这样的情景,在公司内部可以打开公司的网站,在家里或者外网却打不开,按照网上的做法,重新启动了服务器和iis,还是不行。许多用户设置了路由器端口映射功能,但是端口映射不成功怎么办ÿ…...
【CS224W】(task9)图神经网络的表示能力(更新中!!)
note 基于图同构网络(GIN)的图表征网络。为了得到图表征首先需要做节点表征,然后做图读出。GIN中节点表征的计算遵循WL Test算法中节点标签的更新方法,因此它的上界是WL Test算法。 在图读出中,我们对所有的节点表征&…...
binlog找回误删数据
1、检查当前是否开启binlog存储 输入命令show variables like %log_bin%;,结果如下 可以看到log_bin的值是ON,说明binlog开启了。 2、查找binlog的存储位置 这个去到数据库的my.cnf配置文件中寻找,有一个log_bin的配置 切换到log_bin的目…...
《程序员面试金典(第6版)》面试题 02.03. 删除中间节点
题目描述 若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。 假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。 例如: 传入节点 c(…...
Spring Boot
目录 SpringBoot SpringBoot创建和使用 什么是Spring Boot Spring Boot优点 Spring Boot项目的创建 项目目录介绍和运行 目录介绍 项目运行 SpringBoot核心设计思想 SpringBoot的配置文件 配置文件的作用 配置文件的格式 注意事项 properties配置文件 propertie…...
图论初入门
目录 一、前言 二、图的概念 三、例题及相关概念 1、全球变暖(2018年省赛,lanqiao0J题号178) 2、欧拉路径 3、小例题 4、例题(洛谷P7771) 一、前言 本文主要讲了树与图的基本概念,图的存储、DFS遍历…...
02-Oracle数据库的启动与关闭
本文章主要讲解Oracle数据库的启动与关闭方法,详细讲解启动Oracle的命令,三种启动数据库的方法及区别;关闭数据库的4种方法及他们的区别。 启动和关闭数据库 •数据库没启动前,只有拥有DBA权限或者以sysoper或sysdba身份才能连接到…...
网络营销培训完能达到什么水平?学完能创业吗?
网络营销本身就是一门创业的技术,很多人学习网络营销,往往担心学完以后技术达不到,再工作几年才可以创业,实际这是错误的理解,那么,网络营销培训完能达到什么水平?新手学员参加网络营销培训&…...
大数据技术之——zeppelin数据清洗
一、zeppelin的安装zeppelin解压后进入到conf配置文件界面。修改zeppelin-site.xml[roothadoop02 conf]# cp zeppelin-site.xml.template zeppelin-site.xml[roothadoop02 conf]# vim zeppelin-site.xml将IP地址和端口号设置成自己的修改 zeppelin-env.shexport JAVA HOME/opt/…...
Barra模型因子的构建及应用系列五之NonLinear Size因子
一、摘要 在前期的Barra模型系列文章中,我们构建了Size因子、Beta因子、Momentum因子和Residual Volatility因子,并分别创建了对应的单因子策略,本节文章在该系列下进一步构建NonLinear Size因子。从回测结果看,自2022年以来&…...
C++ 常用命令行开发工具(Linux)
文章目录1、简介2、gcc / g2.1 system(执行shell 命令)2.2 popen(建立管道I/O)2.3 vforkexec(新建子进程)3、clang3.1 下载和安装clang3.2 clang和gcc比较3.2.1 gcc3.2.2 clang3.2.3 LLVM4、make4.1 例子14…...
java基础学习 day47(抽象类,抽象方法)
1. 抽象方法 将共性的行为(方法)抽取到父类之后,由于每一个子类执行的内容是不一样的,所以,在父类中不能确定具体的方法体,该方法就可以定义为抽象方法。抽象方法定义格式: public abstract 返…...
Java代码弱点与修复之——Open redirect(开放重定向)
弱点描述 Open redirect , 开放重定向,是一种常见的安全漏洞,也被称为“重定向漏洞”。该漏洞通常出现在 Web 应用程序中,攻击者可以利用它将用户重定向到恶意站点,从而进行钓鱼攻击、恶意软件传播、诱骗等活动。 在 Java 中,通过重定向 HTTP 请求来实现应用程序中的跳转…...
Go 指针
指针在编程中,一个内存地址用来定位一段内存。通常地,一个内存地址用一个操作系统原生字(native word)来存储。 一个原生字在32位操作系统上占4个字节,在64位操作系统上占8个字节。 所以,32位操作系统上的理…...
shardingsphere5.1.1分表分库yaml配置 自定义策略
前言通过阅读官方稳定给出示例 https://shardingsphere.apache.org/document一、基本配置示例spring:sharding:datasource:names: ds0, ds1ds0:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/db0username: rootpassword: rootds1:driver-class-na…...
“探索未来:VR全景直播技术引领新媒体时代”
随着虚拟现实技术的不断发展,VR全景直播已经成为了越来越受欢迎的直播形式。VR全景直播可以让观众通过虚拟现实设备亲临直播现场,享受身临其境的观看体验。VR全景直播是什么? VR全景直播是虚拟现实技术和直播的结合。相对于传统直播ÿ…...
Spring Cloud(微服务)学习篇(六)
Spring Cloud(微服务)学习篇(六) 2 Sentinel实现流量规则(控制台版) 2.1 变更pom.xml(shop-user-server项目)代码 2.1.1 加入如下依赖 <!--熔断限流--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-…...
MATLAB-Scatter3-三维散点图投影至XYZ三个平面
MATLAB-Scatter3函数可以绘制立体的三维散点图,但有时候需要在该立体图中分析X-Y-Z三者的关系,即1副图呈现出4个信息,XYZ综合信息、XY信息、XZ信息、YZ信息。现有的Scatter3无法实现该功能,本文可实现Scatter3三维立体散点图在三个…...
Unity/C#------委托与事件(一篇文章彻底搞懂...)
一:委托 所有的代码语言创造者母语都是英语,我们从英语翻译到中文的过程中难免会存在一些不太能还原本意的词,比如我之前一直不理解构造函数和析构函数,只知道这俩货作用相反,直到我看到了它的英文意思,Con…...
网站模版好建设吗/seo专业优化方法
zabbix 使用进阶(五)概述:本章内容具体如下:自定义key不带参数;自定义key可传递参数;在agent端自定义可传递参数的key,来获取nginx的状态信息:基于SNMP监控的创建和和使用࿱…...
如何判断网站被google k/产品设计
字符串 1.单引号和双引号都一样2.单引号可以嵌套双引号,双引号可以嵌套单引号3.单单不能嵌套,双双不能嵌套,需要嵌套怎么办在里面的符号前面加上\用来转义4.charAt(n),打印第n几个数字,数字从0开始,如果参数大于最大长度或者负数,那么返回空字符串5.concat链接字符串 s1"…...
做网商必备网站/公司网站设计制作
废话不多说,原始下载官网 http://www.image-net.org/challenges/LSVRC/2012/nonpub-downloads 我放在百度云上的有所有的下载内容(不得不说迅雷百度云双会员和百度云离线下载太猛了2333) 链接:https://pan.baidu.com/s/1eED707G…...
wordpress个性化友情链接页面/网站建设开发公司
上一篇博客:数据类型转换、ASCII编码 目录 算术运算符赋值运算符比较运算符逻辑运算符三元运算符 开始 算术运算符 算数运算符包括: 加法运算,字符串连接运算 - 减法运算 * 乘法运算 / 除法运算 % 取模运算,两…...
网站制作熊猫建站/大数据分析
PMP考试的重点越来越偏向对于PMBOK的理解运用上,所以PMBOK需要反复读,至少三遍。 第一遍很粗略的看,把所有内容都遍览,让自己对于整本书有个大体的理解。 第二遍需要精读,阅读的过程中做好便签和色笔记录,阅…...
重庆网站建设设计公司/线上推广平台
计算广告学是一门由信息科学、统计学、计算机科学以及微观经济学等学科交叉融合的新兴分支学科。前MediaV首席科学家、前Yahoo!高级科学家刘鹏开设计算广告学(Computational Advertising)公开课。课程地址: http://study.163.com…...