软件测试基础面试问答(三)

1、UI测试是什么?

UI测试(用户界面测试)是软件测试的一种类型,专注于验证应用程序的用户界面(UI)是否按照设计要求正常显示和交互。它的核心目标是确保用户界面的功能、视觉效果、易用性和一致性符合预期,从而提供良好的用户体验。

UI测试的主要内容:

  • 功能测试:验证界面元素(按钮、输入框、下拉菜单等)是否能正确触发操作。例如:点击登录按钮是否能跳转到目标页面。
  • 布局与视觉测试:检查UI组件的位置、大小、颜色、字体等是否符合设计稿。例如:文本是否对齐,图片是否适配不同屏幕尺寸。
  • 兼容性测试:确保UI在不同设备(手机、PC、平板)、浏览器(Chrome、Firefox)或操作系统(Windows、iOS)上正常显示。
  • 交互测试:测试用户操作(滑动、拖拽、长按等)的响应是否符合预期。例如:下拉刷新功能是否正常加载数据。
  • 无障碍测试(Accessibility):验证界面是否支持屏幕阅读器、键盘导航等,满足残障用户需求。

2、UI的测试方法?

  • 手动测试:人工操作界面并验证结果,适合复杂交互或主观体验测试。
  • 自动化测试:通过工具(如Selenium、Cypress、Appium)编写脚本自动执行重复性测试,提高效率。
  • 快照测试:对比当前UI与基准截图,检测意外变更(常用工具:Jest、Storybook)。

典型工具示例

  • Web端:Selenium, Playwright, Cypress
  • 移动端:Appium, Espresso (Android), XCTest (iOS)
  • 视觉回归:Percy, Applitools

3、UI测试与普通测试方法使用边界值方法有什么区别?

维度

UI测试

普通测试(功能/单元测试)

测试对象不同

测试焦点

用户界面的显示、交互和兼容性

代码逻辑、数据处理、API接口等底层功能

示例场景

输入框的字符限制是否在UI层生效

函数对输入参数的边界值处理是否正确

测试示例

测试一个输入框允许输入的最大字符数(如100字),需验证:

输入99/100/101字符时,UI是否显示正确提示(如“超出限制”)。

输入超长文本时,界面布局是否错乱。

测试一个处理字符串的函数:

输入空字符串、最大长度字符串、超长字符串,验证函数是否抛出异常或截断。

 

边界值类型不同

典型边界

屏幕尺寸(如最小/最大分辨率)

输入字段长度(如0/最大/超长字符)

多语言文本(超长翻译词)

数值范围(如0、负数、最大值)

集合的空/满状态

时间戳的极值

测试示例

移动端横竖屏切换时,按钮是否可见。

不同语言环境下(如德语长单词),文本是否被截断。

验证方式不同

判断标准

视觉表现、交互响应、兼容性

输出结果、返回值、异常处理

工具差异

需要截图对比、视觉回归工具(如Percy)

通过断言直接验证(如JUnit、Pytest)

测试示例

输入框输入边界值后,通过自动化工具(如Selenium)检查页面是否显示错误提示。

使用Appium测试移动端按钮在屏幕边缘的点击区域是否有效。

单元测试中,调用函数并断言其返回值是否符合预期(如assertEquals(result, expected))

执行效率与稳定性

执行速度

较慢(依赖渲染、网络、设备)

极快(直接运行代码)

稳定性

较低(易受环境变化影响,如分辨率、浏览器版本)

较高(隔离性强)

核心区别心

目标

确保界面表现和交互正确

确保逻辑和功能正确

边界值重点

视觉、布局、输入限制、多端兼容性

数据范围、算法健壮性、异常流程

工具链

Selenium, Cypress, Appium

JUnit, Pytest, Jest

维护成本

较高(需适配UI变更)

较低(逻辑稳定时)

4、判断三个整数能否构成三角形,黑盒设计测试用例?

设计判断三个整数能否构成三角形的黑盒测试用例,只关注输入(三个整数a, b, c)和输出(布尔值:true 表示能构成三角形,false 表示不能)。三角形的构成条件是:任意两边之和必须严格大于第三边,即必须同时满足:a + b > c,a + c > b,b + c > a。

  • 覆盖关键场景:
  • 有效三角形(输出 true):所有条件满足。
  • 无效三角形(输出 false):至少一个条件不满足(包括两边之和等于或小于第三边)。
  • 边界值:测试输入在边界附近(如最小值、最大值、零、负数、等式边界)。
  • 输入顺序:确保函数对输入顺序不敏感。
  • 特殊值:零、负数、大整数(测试溢出或性能)。

测试用例ID

输入 (a, b, c)

预期输出

设计理由(验证点)

有效

三角形

1

(3, 3, 3)

TRUE

等边三角形(所有边相等,所有条件满足)

2

(5, 5, 8)

TRUE

等腰三角形(两等边,所有条件满足:5+5>8, 5+8>5, 5+8>5)

3

(3, 4, 5)

TRUE

直角三角形(满足勾股定理,所有条件满足:3+4>5, 3+5>4, 4+5>3)

4

(7, 10, 5)

TRUE

一般三角形(所有条件满足:7+10>5, 7+5>10, 10+5>7)

5

(1, 1, 1)

TRUE

最小正整数(所有条件满足)

6

(1000000, 1000000, 1000000)

TRUE

大整数等边(测试大数处理和性能,所有条件满足)

7

(10, 10, 19)

TRUE

边界有效(10+10>19, 10+19>10, 10+19>10,严格大于)

8

(5, 3, 4)

TRUE

输入顺序不同(与(3,4,5)相同,验证顺序不敏感)

9

(4, 5, 3)

TRUE

输入顺序不同(与(3,4,5)相同,验证顺序不敏感)

无效

三角形

10

(1, 2, 3)

FALSE

两边之和等于第三边(1+2=3,不满足严格大于)

11

(1, 2, 4)

FALSE

两边之和小于第三边(1+2=3<4)

12

(2, 3, 5)

FALSE

两边之和等于第三边(2+3=5,边界退化)

13

(2, 3, 6)

FALSE

两边之和小于第三边(2+3=5<6)

14

(0, 1, 2)

FALSE

包含零(边长必须为正,0+1=1<2)

15

(0, 0, 0)

FALSE

所有零(非正边长无效)

16

(-1, 2, 3)

FALSE

包含负数(边长必须为正)

17

(1000000, 500000, 500000)

FALSE

大数无效(500000+500000=1000000,等于第三边)

18

(1000000, 1, 2)

FALSE

大数无效(1+2=3<1000000)

19

(1, 1, 3)

FALSE

条件失败顺序1(a+b=2<3,验证 a+b>c 失败)

20

(1, 3, 1)

FALSE

条件失败顺序2(a+c=2<3,验证 a+c>b 失败,输入顺序敏感测试)

5、Bug的提交流程,Bug的生命流程示意图Bug严重性分级标准

Bug流程管理:

发现Bug ——> 本地验证 ——> 填写Bug表单 ——> 分配跟进 ——> 修改验证(回归测试) ——> 闭环归档

Bug的生命流程示意图:

Bug严重性分级标准:

P0-致命

核心功能瘫痪、数据丢失、安全漏洞

2小时内

全部用户无法支付、数据库被删

P1-严重

主路径阻塞,影响关键业务

24小时内

30%用户提交订单失败

P2-一般

非核心功能异常,有替代方案

3天内

个人中心头像显示错位

P3-轻微

界面错别字、边缘场景体验问题

下一版本

深色模式下按钮边框颜不协调

6、手工测试和自动化测试哪个时间更长?

首次执行

短(直接操作)

长(需开发脚本)

✅ 手工胜出

重复执行

长(每次人工重测)

短(一键触发)

✅ 自动化胜出

维护成本

低(需求变更时无需额外操作)

高(脚本需随需求更新)

⚠️ 手工占优

执行速度

慢(受限于人工速度)

快(并行执行+毫秒级响应)

✅ 自动化胜出

覆盖范围

窄(难以覆盖大量数据/组合)

广(可覆盖百万级数据组合)

✅ 自动化胜出

环境等待

长(依赖测试环境就绪)

短(可定时/触发执行)

✅ 自动化胜出

影响时间效率的关键因素:

迭代频率

每次需全量重测 → 时间线性增长

维护脚本 → 但远低于手工重测成本

复杂数据组合

人工组合易漏 → 返工耗时

参数化测试 → 一次性覆盖所有组合

跨平台兼容性

重复测试每台设备 → 时间倍增

云平台并行执行 → 时间几乎不变

非功能测试

难以手工压测/7*24监控

自动化必选方案(如JMeter脚本)

选择哪种测试方式:

#测试面经##测试#
测试岗面经 文章被收录于专栏

整理面试过程中的测试问答,常看常新,多多学习!有些问题是从其他人那里转载而来,会在文章下面注明出处,希望大家多多支持~~,觉得满意的话就送一朵小花花,谢谢! 内容目录:https://www.nowcoder.com/discuss/779856598809264128?sourceSSR=users

全部评论

相关推荐

08-04 23:08
浙江大学 C++
从24年10月到25年7月一直在Calix(南京)做嵌入式实习,作为第一份实习来说体验非常好,本来只签了6个月合同但因为对公司很有好感(以及项目没做完),又续签了四个月。公司主要做通讯设备软硬件以及云平台的,从底层的硬件、嵌入式到上层的cloud开发都有,并且有大量的测开。最近公司似乎在转型,也有很多AI方向的机会。优点一:能接触核心开发工作,充实简历我在的组是做linux平台开发的,给我安排的工作主要是安全启动相关。进去前三个月先完善了下上个实习生写的单元测试框架,增加一些自动化的feature,给新的产品加testcase之类的。这会儿的工作比较边缘,但是也正好能让我对业务逻辑和开发的流程规范有一定的了解。从第四个月开始,mentor就带着我一起做一个新产品上的安全启动feature。过程中mentor基本只是给出大方向,具体实现都需要我自己参考各种开源项目和文档。最后的成果是设计并实现了一整套安全信任链,这个新产品也投入了生产。所有代码都是我独立完成提交,mentor和manager负责审核方案以及code&nbsp;review。也写了很多文档,在组里做了展示,所以感觉特别锻炼人,也能充实简历。可能因为是小厂,并且招聘很多都来自于实习转正,对实习生的培养还是很用心的,一般都是招至少六个月,能参与开发的机会更多。优点二:工作环境和公司福利好外企该有的福利基本都有,当然实习生能享受到的也就是弹性工作制度,一般工作时间是9:00-18:00,但是不打卡,基本上完成任务就能走,很少有加班。作为起床困难户我经常9:30以后才到公司,晚上18:00准点下班,中午能从11:30休息到13:30,所以还是很轻松的。偶尔下班后想多干点活,manager还会催我没事早点走。。。工位也很舒服,是电动升降桌+人体工学椅,坐累了就可以站着办会儿工,公司还是很关心员工健康的。听说我们公司的平均年龄有38岁左右,在35岁即失业的大环境下真是很加好感了。优点三:氛围好活动丰富我们组就我一个实习生,并且仅我一个女生,再加上正职们都比我大很多,所以刚开始还是很拘谨的。但是manager人特别好,有什么集体活动都带上我,聊天或者开会的时候也会主动cue我,所以渐渐的也有融入感了。刚入职的时候manager就跟我讨论了我的工作规划,前三个月先做测试框架,之后给了两个安全启动相关的topic让我选,仔细跟我说明了难易度和区别。我一开始很没自信,想做简单、有参考的,是manager一直鼓励我,肯定我的能力,最后才去做了新的产品。做的过程中也隔段时间就会来关心我的实习体验,包括我一个人在南京租房生活有没有困难,学校里课程和毕设进度之类的,很温暖。每周开组会,即使我只完成了小小的task也会专门提出来,感谢我的帮助,完成大项目后还专门给我申请了奖金,真的是一个特别好的leader。当然我的mentor也很好,能够信任我,让我自己探索。遇到问题除了会帮我解决,还会教我怎么看log,怎么定位bug。刚来的时候连find,&nbsp;grep这种基本的linux命令都不会,也是他教我的。我们组似乎还有实习岗位空缺,如果感兴趣的话真的很推荐投递。除了组里偶尔会出去聚餐外,公司也有各种活动和社团,每个季度会有一次团建,社团的话有各类运动社团,以及像是萌宠、旅游、升学等交流型社团,均有经费。我加了篮球社,人还挺多的,每周三周五中午在公司楼下篮球场打球,基本都能凑十个人左右。还会定期组织到外面的球馆打比赛。三楼还有一个小的健身房,虽然我从来没去过。其他:我刚入职的时候就在申请美国的计算机硕士,还让manager帮忙写了推荐信,所以大家都知道我不会留下转正的,在这种情况下还用心的教我,给我做项目的机会真的很感激。前段时间美国那边的HR过来给实习生做宣讲,我向他透露我想去美国找工,他也很积极地给我推荐可以联系的人。所以总体感觉是一家很有人情味的公司。当然实习工资不是很高,也没有租房补贴,我从杭州过来租房+来回高铁基本是在倒贴实习。南京本地的同学会比较适合一些。
点赞 评论 收藏
分享
评论
2
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务