自动化面试 - 实战

 1. python的三个特点, 分别怎么定义?

  1. 封装

  根据职责和需要将属性和方法封装到一个抽象类中

  2. 继承

  实现代码的重用, 相同代码不需要重复编写

  3. 多态

  1. 统一接口, 不同实现

  2. 不同子类调用同一个方法, 产生不同的执行结果

  3. 多态的优点

    1. 多态可以增加代码的灵活度

    2. 以继承和重写父类为前提

    3. 调用方法, 不会影响类的内部设计

2. 项目经验

  1. iphone专案项目

主要职责:

android手机软件测试和ios手机硬件测试

跟随客户进行产品研发模式app端测试 (设置, Audio, System, MIX性能)

使用方式: 老套的appium+adk+uiautomater, 特别慢, 还必须得等待

3. 软件测试的目的

  尽快尽早的发现软件中的缺陷, 通过修正各种错误和缺陷提高软件的质量, 回避软件发布后由于短暂的缺陷和错误造成的隐患所带来的商业风险

4. 黑盒测试和白盒测试的区别, 以及优缺点

  1. 黑盒测试

确认软件功能的正确性和可操作性, 检测软件的各个功能是否能得以实现, 把北侧程序看做是一个黑盒, 不考虑其内部结构, 在知道该程序的输入和输出之间的关系或程序功能的情况下, 依靠软件来推测正确性

  优点:

1. 简单, 不需要了解代码

2. 很容易知道用户会用到哪些功能, 会遇到哪些问题

3. 软件自动化时比较方便

  缺点

1. 覆盖率低

2. 复用性低

  2. 白盒测试

根据软件内部的逻辑结构分析来进行测试, 是基于代码的测试, 通过阅读代码或使用开发工具中的但不调试来判断软件质量

  优点

1. 可以增大代码的覆盖率

  缺点

1. 不可能测试所有路径

2. 基于源代码, 不知道设计是否正确

3. 测试开销大

5. 当测试界面发生改变时, 如何操作?

  进行自动化测试脚本的封装, 我采取的是PO模式封装, 当测试界面发生改变时, 只需要优化对应的class即可

6. 你测试的web界面中, 大概有几个测试用例?

大概会分为11个主测试用例框架, 每个测试用例框架中又封装许多大型接口测试用例

1. 登录窗口

2. 注册窗口 

3. 公司主页

4. 部门平台

5. 产品中心

6. 薪资查询

7. 公司风采

8. 商务合作

9. 加入我们

10. 公司跳转

11. 在线咨询

7. python中列表增删改查/去重/排序

append, pop, 赋值, 带索引

元组

sort(reverse = False)正序    sort(reverse=True)逆序

8. appium/selenium环境搭建

appium

1. 测试手机

2. python环境

3. appium服务器

4. appium客户端

5. 客户端

selenium

1. 浏览器

2. 浏览器驱动

3. python环境

4. selenium

9. 测试的分类

1. 测试设计的方法

1. 黑盒测试

2. 白盒测试

3. 灰盒测试

2. 手动/自动分类

1. 自动化测试

2. 手工测试

3. 测试目的分类

1. 单元测试: 在最低的功能/参数上验证程序的准确性

2. 集成测试: 验证几个互相有依赖关系的模块的功能 

3. 功能测试: 验证模块的功能

4. 场景测试: 验证几个模块是否能完成一个用户场景

5. 系统测试: 对于整个系统功能的测试

6. Alpha测试: 软件测试人员在真实用户环境中对软件进行全面的测试

7. Beta测试: 真实的用户在真实的用户环境中进行的测试, 也叫公测

4. 非功能性测试

1. 压力测试: 验证软件在超过负载设计的情况下仍能返回正确的结果,没有崩溃

2. 负载测试: 测试软件在负载情况下能否正常工作c

3. 性能测试: 测试软件的效能,是否提供满意的服务质量

4. 兼容性测试: 检测产品在不同的环境, 版本, 场景下, 是否能够正常运行

5. 其他测试

1. 安全测试: XSS(跨站脚本攻击)和SQL注入攻击

2. 回归测试: 为了全面考核某功能/特性而做的测试

3. 冒烟测试: 如果测试不通过,则不能进行下一步工作

 10. 软件测试计划

1. 确定范围

2. 确定需求

3. 确定策略: 对哪些项目做哪些测试

4. 确定方法: 每个策略用的是什么方法

5. 确定工具

6. 确定资源

7. 交付文档

11. 软件测试用例总结

1. 等价类划分法,将无限的测试变成有限的测试
2. 边界值分析法,是在任何用例中都必须用到的方法
3. 错误值推测法,能帮助我们在原有用例的基础上追加补充一些用例
4. 若输入条件需要考虑组合情况,则可用因果图法和判定表法
5. 参数配置类的测试,可结合正交试验法筛选用例
6. 业务流程清晰的系统,可选用场景法设计测试用例
7. 对于有状态迁移和逻辑功能路径组合的情况,考虑使用功能图法。
8. 对照程序逻辑,检查已设计出的测试用例逻辑覆盖度,如果没有达到要求的覆盖标准,应再补充足够的测试用例。 

12. xpath定位中, 双斜杠与单斜杠的区别

双斜杠: 表示从任意结点开始

单斜杠: 表示从当前结点开始

13. app端页面滑动

1. 封装swipe方法

边滑动边查找

三参: 驱动对象, 滑动元素, 要查找元素定位值

2. touchaction(例子: 九宫格)

  1. press()   按压

  2. longpress()   长按

  3. tap()   点击

  4. move_to()   移动

14. app性能测试(专项测试)需要关注哪些?

1. 内存, CPU占用, 耗电量, 流畅度

15. app抓包工具

fiddler, app抓包使用

1. fiddler客户端配置, 设置端口号

2. 设置手机代理

3. 看服务器返回值, 传入参数, 传出参数, 模拟网络延时

16. app的使用

1. android sdk

2. jdk

3. pycharm

4. selenium webdriver

5. appium客户端

node.js

17. appium局限性

1. 不支持Android4.2以下版本的测试

2. 使用uiautomateviewer进行元素定位

 

18. appium支持哪种语言

1. 支持任何支持http请求的语言

19. 解释App的利弊

优点:

1. 相同的测试可以在多个平台上工作

2. 不需要额外组件

3. 可以自动化web移动端程序

缺点:

1. 仅支持android sdk平台

2. 支持API16以上的版本

20. 如何使用jmeter进行并发登录测试?

1. 从数据库中捞取

在线程组中设置线程数, 添加定时器, 设置集合点

21. django的生命周期

请求-路由-中间件-视图-数据库-模板-返回

22.软件测试的生命周期

1. 需求分析: 测试人员需要了解需求, 对需求进行分解, 得出测试需求

2. 测试计划: 根据要求表邪测试计划书或方案

3. 测试设计: 测试人员适当的了解设计, 搭建测试用例框架

4. 测试执行: 执行测试用例, 找软件中存在的缺陷

5. 测试评估: 根据测试结果, 编写最终测试报告以对软件质量形成文字说明与衡量

23. 自动化测试框架如何搭建?

1. 自动化测试框架主要是有页面库, 数据驱动, 测试脚本, 测试报告, 持续集成这几部分组成的

2. 页面对象库对自动化包括工具(selenium, appium)API的二次封装, 还有二次封装后的自动化工具类实现的页面元素封装(Page Object)然后或给封装好的类好的页面设置一个统一入口类, 这些之中会有一个页面元素文件专门存放元素的定位方法

3. 数据驱动部分主要是测试脚本中使用的数据文件(excel, yaml, txt)以及读取方法类, 如果涉及到数据库, 也会把对应的数据读取方法封装到这个部分

4. 测试脚本主要是通过pytest测试框架进行编写的, 主要支持assert断言, 适合复杂的功能测试, 执行过程中可以自定义用例执行顺序和跳过以及预期, 支持重复执行, 还可兼容unittest编写测试用例, 最重要的是支持参数化和方便持续集成工具的集成

5. 测试报告主要是通过pytest自动生成的allure报告, 其可读性和生动的数据表图比pytest报告更能反映测试结果, 也可以集成于jenkins中

6. 持续集成方面主要是通过jenkins进行实现的, 自动生成测试报告, 方便测试人员能够省出时间进行更多的功能测试和探索性测试