软件面试相关问题整理

一、接口测试

1. 测试数据管理

原则:数据与脚本分离

数据分类与存放策略

  • 全局参数(如账号密码):存放在配置文件(如ini格式)
  • 一次性消耗数据(如注册数据):使用随机函数生成
  • 多组测试参数:采用参数化,存放于yaml、text、json、excel等文件

两大禁忌

  1. 测试数据不能硬编码在代码中
  2. 面试时避免说"将少量数据放在.py文件开头"

2. 接口测试重点

  • 接口地址和参数的正确性
  • 接口返回与预期结果的一致性
  • 数据库数据的正确性验证

3. Fiddler断点测试作用

  1. 构造请求数据:突破表单限制,绕过前端校验,验证后端校验和数据库数据
  2. 拦截响应数据:修改响应实体,验证后端返回在前端的展示效果

4. 接口测试流程

  • 关注接口地址和参数是否正确
  • 验证接口返回是否与预期一致
  • 检查数据库数据的正确性

二、H5测试

1. 业务逻辑测试

登录测试

  • 客户端已登录 → H5保持登录状态
  • 客户端未登录 → H5点击登录需拉起native登录
  • 取消登录后能否再次拉起或显示提示

翻页测试

  • 数据分页加载时,验证后续页面数据正确性
  • 快速操作场景中,请求页数是否依次递增
  • 快速上拉时是否发送对应请求

刷新与返回测试

  • 下拉刷新是否保持当前页面
  • 主动刷新是否保持当前页面
  • 返回操作是否跳转到期望页面

数据请求与返回

  • 提交数据是否正确整理到后台
  • 请求是否返回正确数据

2. H5适配测试

重点覆盖

  • 大屏(7201280)与小屏(320480)手机
  • Android 2.3、Android 4.X系统
  • iOS 5、6、7系统
  • 浏览器展示效果

3. 安全测试

  • 涉及金钱相关功能需接入支付宝实名认证
  • 链接分享需做限制,防止脚本操作

4. 用户体验测试

资源优化

  • 图片不大于50kb
  • 资源压缩与CDN加载
  • 二次发布后的有效更新
  • 文本自适应屏幕而非截断

流量控制

  • 静态资源本地缓存
  • 大数据量时做分页加载

页面性能

  • 关注首屏加载时间
  • 弱网络下的loading提示
  • 接口异常时的友好提示
  • 页面刷新/加载时避免抖动

手机操作

  • 锁屏后页面展示
  • 后台重新呼出展示
  • 滑动流畅性与点击准确性

弱网络体验

  • 网络状态差时的降级处理

5. 埋点数据检查

  • 与前端确认埋点情况
  • 收集用户点击量数据

三、H5测试方法

1. 功能测试

  • 页面请求:数据正确性、重复请求、响应速度
  • Application Cache:Cookie值正确性、清除后表现、重试机制
  • Session失效机制
  • 返回逻辑:页面返回与浏览器返回
  • 页面刷新
  • 图片适配与动画加载
  • 转场动画与loading效果
  • 隐私模式下的功能正常性
  • 接口异常提示
  • 输入框校验(黑洞词汇、特殊字符)
  • 弱网降级处理
  • 网络切换影响
  • 横竖屏切换布局
  • 滑动定位准确性
  • 浮层拖动穿透
  • 文件导入导出功能

2. 适配测试

  • 机型适配(高中低端代表机型)
  • 操作系统适配(Android 6.x~8.x,iOS 9.x~13.x)
  • 品牌适配(OPPO、华为、小米、三星、vivo、魅族、中兴等)

3. 性能测试

  • 关键指标:加载时间、页面大小、请求数量、错误数
  • 测试工具:云测平台、dynatrace、yslow、page speed、firebug
  • 翻页测试:快速连续翻页时的请求处理

4. 安全测试

  • URL直接请求拦截
  • 接入集团安全,设置白名单
  • 防止信息窃取和财产盗取

5. 线上回归

  • 4G网络下验证功能
  • 检查测试环境与生产环境URL差异

6. 接口测试关注点

  • 请求返回结果符合预期
  • 参数边界值校验
  • 入参错误处理
  • 响应性能
  • 敏感信息加密传输

四、APP测试点

1. 移动测试设计要点

安装测试:应用程序正确安装到设备

软件权限

  • 扣费风险:短信、电话、网络连接提醒
  • 隐私泄漏风险:访问手机信息、联系人信息

登录测试

  • 删除/修改后的用户登录
  • 登录超时处理

应用切换

  • 后台切换回前台的功能状态
  • 程序崩溃检查
  • 数据自动更新
  • 锁屏解屏后的应用状态
  • 电话中断后的功能恢复
  • 用户切换后的数据清理

更新测试

  • 新版本更新提示
  • 非强制升级的用户取消
  • 强制升级的处理
  • 本地直接更新

消息推送

  • 不接受推送时的消息接收
  • 推送消息与用户身份的匹配

性能测试

  • 断网重启后的正常启动
  • 长期操作下的系统资源占用

交叉事件

  • 运行时切换网络
  • 运行时使用蓝牙
  • 运行时使用相机、计算器等设备

兼容性测试

  • 不同系统和分辨率的兼容性

用户体验测试

  • 用户引导设计
  • 菜单层次深度
  • 交互流程分支
  • 选项布局合理性
  • 数据加载量控制
  • 按钮点击范围适中

网络环境测试

  • 无网络时的友好提示
  • 弱信号下的功能正常性和防crash
  • 各种网络环境下的应用表现

服务器异常测试

  • 域名解析故障(404等)的异常处理

其他测试

  • 中文字符处理
  • 信息重复性检查
  • 输入法表情使用
  • 回车键功能检查

五、通用测试思路

1. 对象测试方法(如纸、杯子)

  • 从物体本身的属性/功能出发
  • 逐步拓展测试范围

2. 功能测试通过标准

  • 测试用例执行完毕
  • 通过率95%以上
  • 无一级bug
  • 无影响功能的二级bug
  • 界面问题或非关键bug可延后处理

3. APP测试与WEB测试差异

参考一

  • 性能测试:APP需增加流量和耗电量测试
  • 兼容性测试:WEB兼容浏览器,APP兼容手机设备
  • 安装测试:APP存在客户端安装测试
  • 专项测试:交叉事件、操作类型、网络测试
  • 更新机制:WEB同步更新,APP需用户更新客户端

参考二

  • 中断测试:来电、短信、蓝牙、闹钟等中断
  • 安装卸载:版本升级测试
  • 兼容性:不同手机型号、厂家、分辨率
  • 测试工具:Fiddler用于抓包和模拟网络延时

六、测试思路与实践

1. 模块测试设计(如注册模块)

测试思路:数据 → 入口 → 出口 → 数据库验证

步骤

  1. 需求分析(输入、处理、输出分析)
  2. 数据构造
  3. 编写测试用例

分析维度

  • 输入分析:长度、类型、规则、空值、重复
  • 处理分析:正常处理、异常处理
  • 输出分析:前台、后台、数据

2. 自动化测试原则

  • 使用场景:APP升级时测试原有功能影响
  • 测试范围:重要或重复调用的接口
  • 用例设计:只需设计正向用例
  • 脚本要求:可重复执行,最后清除新增数据
  • 组织方式:一个线程组只设计一个取样器

3. 功能测试心得体会

  • 深入理解业务需求
  • 加强团队沟通
  • 关注测试用例覆盖率

4. 业务流程理解示例

云上殿堂在线祭奠项目

  • 项目核心:追思平台,提供创建殿堂、在线祭拜、亲友留言
  • 功能模块:后台(审核管理)、PC端、小程序
  • 用户角色:堂主(殿堂创建者)、非堂主
  • 闭环流程:用户创建殿堂 → 后台审核 → 殿堂展示 → 用户互动(送礼、留言) → 内容审核展示

七、开发流程

1. 需求分析

  • 接收业务需求
  • 需求调研与分析
  • 评估工作量和优先级

2. 方案设计&评审

  • 输出流程图并与需求方确认
  • 原型设计
  • PRD文档编写
  • 必要成果物:状态流程图、产品文档、原型

3. Coding&自测

  • 内部评审(流程图→原型→PRD)
  • 复杂需求分阶段评审
  • 评审通过后进行需求宣讲

4. 测试

  • 原型设计与需求方确认
  • 前端文案(页面文案、短信通知)与业务方确认

5. 部署上线

  • 文档上传wiki
  • 建立需求JRA并关联wiki
  • 提前3天发出宣讲邮件
  • 预订会议室(含zoom)

相关推荐
会算数的⑨2 小时前
Java场景化面经分享(一)—— JVM有关
java·开发语言·jvm·后端·面试
我命由我123452 小时前
Photoshop - Photoshop 工具栏(53)画板工具
笔记·学习·职场和发展·求职招聘·职场发展·学习方法·photoshop
LYFlied13 小时前
【每日算法】LeetCode 416. 分割等和子集(动态规划)
数据结构·算法·leetcode·职场和发展·动态规划
坚持学习前端日记13 小时前
软件开发完整流程详解
学习·程序人生·职场和发展·创业创新
萧曵 丶14 小时前
ArrayList 和 HashMap 自动扩容机制详解
java·开发语言·面试
张老师Plus16 小时前
依依东望,望的是时间
经验分享·程序人生·面试·职场和发展·跳槽
小高00716 小时前
🔥3 kB 换 120 ms 阻塞? Axios 还是 fetch?
前端·javascript·面试
千寻girling16 小时前
面试官 : “ Vue 选项式api 和 组合式api 什么区别? “
前端·vue.js·面试