拓冰建站拓冰建站
首页 / 资讯中心 / 正文

软件测试入门:HTML基础与前端测试要点详解

软件测试基础学习总结_day04附思维导图——HTML基础与前端测试要点详解今天是系统性学习软件测试基础的第4天这一天的重点开始从纯理论转向一个非常关键的实操板块HTML基础与前端测试要点。对应的思维导图我在整理笔记时顺手梳理了一份整体结构会在后面几节里说明你也可以按照下面出现的知识点顺序自己画逻辑是通的。很多零基础转行软件测试的朋友都会有一个误区觉得测试就是“点点点”不用懂代码。但实际上不管是Web端功能测试、UI自动化还是接口测试前端页面都是绕不开的第一层战场。你可以不写程序但你必须看得懂页面元素、看得懂源码结构、知道一个按钮为什么在某些场景下点不动这些能力全部建立在HTML基础之上。这篇文章我会先把HTML基础里跟测试强相关的部分拆开讲清楚再结合前端测试要点做一一对应最后分享第4天学习过程中踩过的坑和总结出的经验。适合正在走软件测试学习路线的新手、准备软件测试面试的候选人以及想补前端基础知识的QA从业者阅读。1. 软件测试学习路线中HTML基础的位置1.1 为什么测试工程师要先学HTML基础先说说一个大前提测试工程师学HTML不是为了跟前端抢饭碗而是为了完成三件非常重要的事。第一件事是阅读页面源代码快速定位缺陷。一个按钮显示不出来可能是CSS覆盖问题可能是HTML结构嵌套错误也可能是后端接口没返回对应数据。如果你看不懂HTML结构就只能把问题描述成“页面坏了”这种描述对一个专业测试来说是不合格的。你至少要知道怎么查看Elements面板能判断出元素是否渲染出来了、文字被遮挡了还是数据没加载出来。第二件事是给自动化测试打基础。现在随便一家公司的测开岗位都要求掌握Selenium或者Playwright这些工具定位页面元素的原理就是XPath和CSS选择器而这两样东西的核心就是HTML标签、属性和层级结构。我记得在学习群里有人问“为什么我复制来的XPath过两天就不能用了”其实90%的原因就是没有理解HTML的DOM结构只会死记硬背工具自动生成的路径一旦页面局部改版定位直接报废。第三件事是看懂前端报错区分前端问题、接口问题还是环境问题。比如用户反馈页面白屏你打开控制台看到Uncaught TypeError旁边还有一行index.html里的某个script引用这就说明可能是静态资源没加载或者JS执行异常而不是服务器挂掉了。再比如你提交一个表单没反应打开开发者工具看Network面板发现提交请求根本没发出去那问题就在前端校验而不是后端逻辑。有一个我自己的例子印象很深。刚学测试那会接到一个Bug说“首页轮播图不轮播了”。我去复现发现页面打开后第一张图能显示但三秒钟后不动了。如果只从功能角度报Bug开发大概率会回一句“我这正常”。后来我打开开发者工具看Console发现报了一个SyntaxError再切到Sources看JS代码发现是一个变量名写错了导致一段定时器脚本直接挂掉。整个过程并没有多难但前提是我能看懂页面和JS的加载关系知道异常发生在哪个环节。1.2 前端测试在整个测试体系中的定位把前端测试单独拎出来看它和传统意义上的“功能测试”是有区别的和“接口测试”也不一样。我画过一张对比表今天顺便贴出来维度功能测试黑盒前端测试界面层接口测试逻辑层测试对象整个业务流程DOM元素、样式、交互接口入参、返回结果主要工具手工点选浏览器开发者工具Postman、Jmeter主要缺陷类型业务逻辑错误样式错乱、交互失效、兼容性问题参数异常、响应超时、状态码错误依赖前置条件无静态资源加载正常服务端接口可用在实际项目里这三个层面的测试是互相补充的。前端测试解决的问题是“用户看到的东西对不对”接口测试解决的是“数据交互对不对”。如果你只做接口测试很可能漏掉某些纯前端的问题比如按钮置灰逻辑不对、下拉框联动没触发、表单校验规则和产品文档不一致。而这些恰恰是用户能直接感知的缺陷。在第4天的计划里我给自己定的目标很明确掌握HTML文档结构和常用标签能阅读简单的Web页面源码知道前端测试要测哪些维度能够独立使用开发者工具分析页面元素和网络请求。接下来每一节我都会围绕这三个目标展开。2. HTML核心标签与测试关注点2.1 文档结构DOCTYPE、html、head、body先从一个最基本的页面模板说起这也是很多人面试时会被问到的“HTML骨架”!DOCTYPE html html langzh-cn head meta charsetutf-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title测试页面/title link relstylesheet hrefstyle.css /head body h1主标题/h1 p一段测试文本/p /body /html这个模板虽然只有几行但每一行都有测试关注点。先说!DOCTYPE html。它的作用是告诉浏览器“我是按HTML5标准渲染的”。如果这个声明缺失浏览器会进入怪异模式不同浏览器对同一个页面的渲染结果可能完全不一样。测试人员在验证兼容性时第一个要确认的就是页面有没有合法DOCTYPE。我自己就遇到过IE浏览器下页面布局全乱的情况最后查了源码发现是某次模板合并时把DOCTYPE声明弄丢了所有浏览器都看不懂这个页面但只有IE“反应最激烈”Chrome还能自动纠错IE直接拉胯。html langzh-cn代表页面主语言是简体中文。这个属性看起来没什么技术含量但对辅助工具和搜索引擎很关键。屏幕阅读器会依据lang属性来判断朗读语音如果页面标注的是英文读屏软件会用英文发音读中文内容体验极差。做可访问性测试时这个点是很容易被忽略的。head里更值得关注的是meta charsetutf-8。如果编码声明缺失或者写错页面会出现乱码。测试思路就是切换浏览器默认编码看看页面内容是否正常。同理meta nameviewport影响移动端适配如果缺失或者设置错误手机端页面会显示成PC端缩小的效果这是移动端适配测试的第一道关卡。title标签的测试价值经常被低估。它决定了浏览器标签页显示的文本也决定了搜索引擎结果里的标题还影响SEO。我有一次测试一个系统用户反馈“标签页标题一直显示系统异常”检查后发现前端把错误信息直接拼进了title虽然页面上看不到但是截图和浏览器标签都很刺眼。这种细节Bug在功能测试用例里非常容易漏掉。2.2 常用标签的测试关注点HTML标签很多但对测试而言最常用的就是以下几类标题标签h1到h6决定页面层级一个页面只建议有一个h1标题不能跳级段落与文本标签p、span、strong、em主要看展示效果和内容是否被截断超链接ahref属性和target属性是重点图片imgsrc路径、alt替代文本、加载失败占位列表标签ul、ol、li注意嵌套层级表单标签form、input、select、textarea、button这是前端测试的重头戏拿超链接举例。测试链接时我会看三类问题href是否为空或写成了javascript:void(0)导致点击无效果target_blank是否出现弹窗被浏览器拦截的情况链接文本是否有下划线和颜色变化有没有给用户明确的“可点击”提示。做Web功能测试时链接跳错、链接失效属于高频Bug而且很多开发自测根本发现不了。img标签的alt属性则是做可访问性测试时绕不开的点。正常情况下图片加载不出来浏览器会显示一个小裂图图标然后显示alt文字。如果你的系统有图片加载失败的场景测试时一定要检查alt是否为空如果为空对依赖屏幕阅读器的用户来说这张图就完全“消失”了。很多公司做无障碍改造时图片alt检查是必须项。2.3 表单元素与前端测试重头戏表单是Web系统里最常见的交互组件也是我第4天学习时投入时间最多的部分。一个典型表单长这样form action/submit methodpost label forusername用户名/label input typetext idusername nameusername placeholder请输入用户名 maxlength20 required label forpassword密码/label input typepassword idpassword namepassword placeholder请输入密码 required label forgender性别/label select idgender namegender option value请选择/option option valuemale男/option option valuefemale女/option /select labelinput typecheckbox namehobby valuereading 阅读/label labelinput typecheckbox namehobby valuesports 运动/label button typesubmit提交/button button typereset重置/button /form表单测试有一个核心原则不要只测正常流程要从用户的“操作习惯”出发设计用例。比如input的maxlength20很多人以为设了它就万事大吉。但实际上如果用户从外部复制一段超过20个字符的文本粘贴进去不同浏览器对超长文本的处理不一致Chrome会截断到20有些浏览器会直接不让你粘贴有些则允许粘贴但提交后校验报错。这就是浏览器兼容性测试的典型场景。再比如required属性它只是HTML5自带的非空校验。但在自动化测试里使用Selenium点击提交时一般不会触发浏览器的原生校验气泡而是直接提交数据。如果你在脚本里没有处理这个环节就会遇到“明明点了提交请求却发不出去”的假象。我一直建议测试人员在做页面分析时把表单的“前端校验规则”和“后端校验规则”分开记不要混在一起。前端校验只负责体验后端校验才负责安全。下拉框select的测试点也很多默认选项是否为空、选中后回显是否正确、联动时其他下拉框是否刷新、非法值是否能被选中。我遇到过下拉框选项在接口返回异常时全空的情况页面没有给出任何错误提示用户以为是Bug实际是后端数据没返回这属于异常场景的前端鲁棒性测试没做好。2.4 语义化标签与可访问性测试HTML5增加了很多语义化标签比如header、nav、main、article、footer。它们本身在视觉上可能没有明显区别但对搜索引擎和屏幕阅读器来说语义化标签能清晰地表达页面区域用途。测试关注点有两个方向第一标签嵌套是否符合语义。比如button和a可以做成视觉上一样的按钮但对于屏幕阅读器来说按钮是“可以被回车触发”的控件链接是“跳转”的链接如果混用会导致读屏软件提示错误。前端测试时遇到这种“长得像但语义不对”的元素要主动提出来。第二标题层级是否合理。页面中h1到h6的层级如果跳级比如h2后面直接跟一个h4屏幕阅读器的用户就无法理解内容结构。这种问题肉眼很难发现需要使用一些浏览器无障碍插件辅助检查。我习惯在Chrome里安装一个WAVE工具一秒钟就能显示出当前页面的标题层级、表单标签、对比度问题。3. 前端测试要点与实战拆解3.1 用开发者工具验证页面结构第4天实操课的第一个动作不是写测试用例而是学会用浏览器开发者工具“读”页面。F12打开开发者工具之后我会按以下顺序做一轮快速检查Elements面板看页面结构。点击左上角的选择箭头再点击页面上的任意元素Elements面板会自动定位到对应的HTML代码。这个操作能帮你验证元素是否存在、属性是否正确、CSS样式是否生效。我排查问题时第一步永远是确认元素在不在第二步看样式第三步看数据。Sources面板看静态资源加载情况。如果页面样式错乱切到Sources逐个检查CSS和JS文件是否正常加载有些404、500错误会直接显示红色。很多“页面打开慢”的Bug其实是某个脚本阻塞了渲染这个面板能直观看到加载顺序。Network面板看接口请求。这是测试工程师使用频率最高的面板之一。刷新页面后Network会记录所有网络请求你可以看到请求URL、请求方法、状态码、耗时、请求体、响应体。前端测试中判断问题归属靠的就是这个面板。Console面板看JS报错。里面出现红色错误信息时要重点看比如某个函数未定义、某个接口返回非JSON格式、某个对象为空导致取值失败。这些报错往往能直接指出前端代码的问题。下面是我整理的一个“页面白屏问题排查动作”列表可以直接保存下来当作工作手册第一步打开Console看有没有红色报错有则记下报错信息和对应文件行号第二步切到Network看文档请求和静态资源请求确认是否返回200第三步切换到Elements看看body中是否渲染出了内容第四步如果body有内容但页面仍然白屏再查看CSS是否加载成功第五步确认后端接口返回数据是否正常如果接口挂了页面也可能白屏3.2 表单校验测试用例设计表单校验是前端测试里的必考内容面试也喜欢问“你会怎么测一个登录框”。我现在的习惯是围绕“边界、格式、行为”三个关键词设计用例。边界测试用例包括输入长度为1的字符串、等于maxlength的字符串、超过maxlength的字符串、空值、全空格、特殊字符对于数字输入框还要测试负数、小数点、科学计数法、0、超过类型最大值的数。格式测试则看是否符合规则比如邮箱是否包含符号、手机号是否符合11位、身份证号校验位是否正确。行为测试用例更贴近真实用户输入框失焦后有没有提示点击提交时有没有触发校验校验失败后焦点是否跳到了第一个错误字段错误提示文案是否清晰用户清空错误输入后提示是否消失这个字段的校验会不会受其他字段影响举个具体例子。某注册页面的手机号输入框开发在HTML上设置了typetel这种输入框在PC端可能和普通文本框没有任何区别但在移动端会自动唤起数字键盘。测试时如果不覆盖这个场景到手机端验收就会发现键盘不对用户输入体验很差。另一个常见问题是输入框有pattern属性做正则校验但是开发只在前端做了校验后端没有重复校验。这时候你用工具直接构造请求就能绕过前端限制提交非法数据如果后端返回了正常业务数据那就是一个严重的安全漏洞。作为测试人员我建议每个表单提交接口都要验证服务端校验是否完整不能轻信前端。3.3 XPath定位与CSS选择器入门这一节是第4天学习内容里和我后来做自动化测试衔接最紧密的部分。XPath和CSS选择器本质上都是“查找HTML元素”的语言区别在于写法不同。一条XPath长这样//input[idusername] //form[classlogin-form]//button[contains(text(),提交)]一条CSS选择器长这样#username form.login-form button[typesubmit]测试人员不会手写复杂选择器但一定要看得懂。因为自动化脚本中一旦定位不到元素第一件事就是分析定位表达式为什么失效。常见原因无非三种第一元素有动态ID每次刷新都变。解决办法是不要用ID改用更稳定的属性或者层级关系。第二元素在iframe里直接定位不到要先切换到iframe。第三元素在点击前不可见需要先展开或者滚动页面才能定位。这些经验总结起来就是一句话不要死抠某一个定位方式要多掌握几种备选方案。在第4天我试着用XPath定位一个登录页的所有元素包括用户名输入框、密码输入框、登录按钮、记住我复选框、忘记密码链接。做完后我发现对HTML标签和属性的理解越清晰XPath就写得越顺手。如果说有哪些是学习HTML基础后收益最明显的自动化的元素定位绝对排在第一位。3.4 常见前端缺陷类型总结一下我在学习过程中接触到的前端缺陷类型方便你做测试用例设计时对照缺陷类型表现常见原因检查方式布局问题元素重叠、错位、溢出CSS兼容性、屏幕分辨率多分辨率截图对比数据回显问题页面空白、显示undefined接口返回字段与前端不一致NetworkElements对照交互失效点击无反应、按钮置灰不可点JS报错、事件绑定失效Console查报错表单校验异常不弹提示、错误提示不消失校验逻辑缺陷边界值测试兼容性问题某浏览器/某系统下异常浏览器渲染差异多浏览器遍历性能问题首屏加载慢、滚动卡顿资源体积过大、接口慢Performance面板这六类问题里数据回显问题是我遇到最多的。前端页面加载了一个接口接口代码里字段名写的是userName页面JS里用的却是username大小写不一致导致密文文本框一直为空。从HTML源码角度看textarea标签本身没有任何问题纯粹是数据和页面绑定出了问题。这就验证了一个观点前端测试不能只看HTML还要结合接口返回数据一起分析。4. 常见问题与排查技巧实录4.1 学习过程中的典型误区第4天的学习让我意识到新手在认识HTML和前端测试时有几个非常普遍的误区。误区一把HTML当开发课程学死记硬背每个标签的用法。事实上测试人员不需要记住全部标签按二八原则来80%的高频使用场景都集中在那几十个常用标签上。遇到生僻标签时打开W3Schools查一下就行重要的是培养读代码的能力而不是写代码的能力。误区二觉得前端测试就是“跟浏览器打交道”不做设计和记录。实际上前端测试暴露的问题非常零散如果不按维度归类很容易测了又忘。我现在每测一个功能都会把问题按照“样式问题、元素问题、数据问题、交互问题、兼容问题”进行分类日报写起来也方便。误区三遇到页面Bug直接截图丢给开发不配合定位。我在实际练习中发现如果测试人员能多说一句“这是Network里某个接口返回了500导致的接口都挂了所以页面没数据”开发会特别感谢你因为你的信息能直接缩短他排查的时间。测到Bug很重要但精确描述Bug等于给开发省时间也等于给你自己攒口碑。4.2 一个真实的前端Bug排查记录这里分享一个我在第4天学习结束后、拿着案例练手时遇到的实际问题。需求很简单一个登录页面用户输入正确的账号和密码点击登录跳转到首页。结果在测试环境里登录按钮点了之后页面没有任何反应。我先是打开Elements面板确认按钮存在页面上的HTML结构正常。然后切到Console看报错发现有一个TypeErrordocument.getElementById(...)is null后面跟着一行JS文件里的定位代码。这意味着JS代码在找某个元素的时候没找到。我推测是不是按钮的ID写错了因为开发用的是btnLogin而JS里找的是loginBtn两个名字对不上。再检查Network发现登录请求压根没有发出去确认是纯前端问题。最终导致登录按钮点击事件绑定失败整个登录功能处于瘫痪状态。这个案例给我的启发很大一个功能不可用不一定后端接口有问题很可能只是页面元素的ID和JS脚本里引用的ID不匹配。对初学者来说最容易上手的排查流程就是Elements看结构、Console看报错、Network看请求三步走就能快速锁定问题边界。4.3 每日练习针对登录页的测试用例演练第4天学习结束前我自己设计了一份针对登录页面的测试用例清单不放全部细节挑几个代表性用例供参考用例编号测试场景操作步骤预期结果实际结果LOGIN_001账号密码均正确输入合法账号密码点击登录跳转首页显示用户昵称通过LOGIN_002账号正确密码错误输入正确账号和错误密码提示“密码不正确”不跳转通过LOGIN_003账号为空不填账号点击登录提示“请输入账号”通过LOGIN_004密码为6位以下输入5位密码点击登录提示“密码长度不足”失败提示文案不明确LOGIN_005连续多次输错密码连续输错5次出现验证码或账户锁定失败无任何二次验证LOGIN_006已登录状态重新访问登录页登录成功后回退登录页跳转首页不能重复登录通过每个用例测完我会把Browser Console的报错、接口返回状态、页面DOM变化都记录下来。这样做的原因是以后写成自动化脚本时可以直接把预期结果转成断言条件提升脚本开发速度。如果你也在学习软件测试我强烈建议你从第1天开始就坚持“用例思维”。哪怕今天只测单个页面也要按用例写预期结果不要只写“点了没反应”。等习惯了这种思考方式你会发现写测试用例比点页面更重要。4.4 第4天学习后的一点心得如果非要用一句话总结今天学到的核心内容那就是前端测试的本质不是“看页面是否显示正常”而是“能快速判断异常出现在哪个环节”。HTML基础的作用是让你在第一时间读懂页面结构和元素属性开发者工具的作用是帮你快速定位问题链路前端测试设计的作用是让你在功能上线前找出尽可能多的边界问题。三者结合才是完整的Web前端测试能力。给同样在软件测试学习路线上的朋友一个建议第4天学HTML基础时不用急着把每一行代码都背下来但一定要动手抄一遍常用页面模板再用开发者工具拆解几个你每天都会访问的网站。比如你先打开浏览器按F12看看某个电商网站的搜索框HTML长什么样再对比一下它的登录按钮用的什么类型、什么ID。这个过程比看十遍教程都管用。我在实际学习中发现动手拆解真实网页之后XPath定位能力的提升速度是突飞猛进的后面学到自动化测试时你会感谢今天认真读HTML的自己。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门