问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

开发转测试,需要哪些必备测试技能?

创作时间:
作者:
@小白创作中心

开发转测试,需要哪些必备测试技能?

引用
CSDN
1.
https://blog.csdn.net/m0_58026506/article/details/140016836

随着软件行业的快速发展,测试工程师的角色变得越来越重要。对于有开发背景的工程师来说,转行测试开发是一个很好的选择。本文将详细介绍从开发转测试所需掌握的技能和面试要点,帮助你顺利实现职业转型。

一、为什么从开发转测试

从2019年5月开始,我从一名Java开发工程师转为测试开发工程师。在这个过程中,我深刻体会到测试工程师需要具备更全面的技术能力。随着产品规模的扩大和用例的增多,测试工程师需要掌握自动化测试、服务器部署、网络架构、软件性能、软件安全等多方面的知识。

开发工程师转测试之后可做的内容非常多,测试领域也需要更多有开发背景的人员加入。

二、面试题准备指南

开发基础面试题

Java知识

  1. List、Set、Map之间的区别
  • List:有序且允许元素重复,底层数据结构是数组。
  • Set:无序且不允许元素重复,底层数据结构是哈希表。
  • Map:键值对形式,键不能重复,值可以重复。
  1. ArrayList与LinkedList的区别
  • ArrayList基于数组实现,支持随机访问,查询速度快。
  • LinkedList基于链表实现,不支持随机访问,查询速度慢。
  1. Hashtable与HashMap的区别
  • Hashtable是过时的类,方法是同步的,线程安全但效率较低。
  • HashMap不是线程安全的,但效率更高。
  1. Java中++操作符是否线程安全

    不是线程安全的,因为涉及到多个指令,可能会出现线程交叉。

  2. int和Integer哪个占用内存更多

    Integer是对象,需要存储指针和对象值,占用更多内存。int是基本数据类型,占用空间更少。

  3. Java中sleep方法和wait方法的区别

  • sleep()只是暂停当前线程,不会释放锁。
  • wait()是条件等待,会释放锁,直到满足条件才能重新获取锁。
  1. 解释Java堆空间及GC

    Java进程启动时会分配堆空间,用于创建对象。GC(垃圾回收器)负责回收无效对象的内存。

Python知识

  1. Python的八大基本数据类型

    int、str、float、list、bool、tuple、dict、set

  2. Python中可变数据类型和不可变数据类型

  • 不可变数据类型:数值型、字符串、元组
  • 可变数据类型:列表、字典
  1. Python字典和json字符串相互转化方法
  • 字典转json:json.dumps()
  • json转字典:json.loads()
  1. Python中@staticmethod和@classmethod的区别
  • @staticmethod装饰的静态方法不需要传递默认参数。
  • @classmethod装饰的类方法需要将调用的类传进去。
  1. 什么是装饰器

    装饰器是一个闭包函数,可以在不修改原函数的情况下扩展其功能。

  2. Python中常见的异常

    Exception、AssertionError、FileNotFoundError、AttributeError等。

  3. Python的内存管理机制

  • 引用计数机制
  • 垃圾回收机制
  • 内存池机制

数据库知识

  1. 如何消除数据表中code字段的重复行

    使用SELECT DISTINCT code FROM project

  2. 内链接、左链接、右链接、全链接的区别

  • INNER JOIN:返回两个表的交集
  • LEFT JOIN:返回左表所有行和右表满足条件的行
  • RIGHT JOIN:返回右表所有行和左表满足条件的行
  • FULL JOIN:返回两个表的所有行,不匹配的用NULL填充
  1. 索引的使用场景
  • WHERE条件查询
  • JOIN操作
  • MIN()或MAX()函数
  • ORDER BY排序

HTTP知识

  1. HTTP协议是否安全

    HTTP是不安全的,HTTPS通过SSL/TLS协议确保传输安全。

  2. Cookie和Session的区别

  • Cookie存储在客户端,存在安全风险
  • Session存储在服务器端,安全性较高但占用内存
  1. 什么是Socket

    Socket是应用层与TCP/IP协议之间的抽象层,用于网络进程通信。

Git知识

  1. git pull和git fetch的区别
  • git pull:拉取并合并远程分支
  • git fetch:只拉取远程分支,不合并
  1. 如何进行版本回退

    使用git reset --hard HEAD^

  2. GitLab的分支保护和代码审查

    在GitLab中设置Protected Branches,控制谁可以合并代码,并进行代码审查。

测试开发面试题

  1. 接口测试设计

    需要设计合理的测试用例,覆盖各种边界条件和异常情况。

  2. 自动化框架的搭建思路

    包括用例模块、发送请求、全局配置文件、数据自动采集、读取数据、接口断言、日志记录、测试报告等模块。

  3. 测试数据的分类和存储

  • 全局数据:写入配置文件
  • 一次性消耗数据:从随机函数生成
  • 多次读取数据:参数化,放入Excel、JSON或数据库
  1. 影响数据流的接口测试

    可以采用最后单独处理或连接数据库操作的方式。

  2. 测试脚本数据规划

    从简单到复杂,逐步增加数据量和覆盖范围。

  3. 常用的自动化测试框架

    unittest、pytest、postman、jmeter、Selenium、Appium等。

  4. unittest和pytest的对比

    pytest通过fixture机制简化了前置和后置操作的编写。

  5. pytest的参数化装饰器

    @pytest.mark.parametrize可以传入多个参数。

  6. Postman和Newman的使用

    包括变量使用、断言、参数化、测试报告输出等。

  7. Selenium的定位方法

    Id、name、link_text、partial_link_text、tag_name、class_name、css_selector、xpath

  8. GUI测试脚本稳定性提升

    使用相对路径、WebDriverWait等技术提高脚本的稳定性和执行效率。

扩展问题

  1. 安全测试方面

    包括XSS、CSRF、SQL注入、web木马、文件上传、账密暴力破解、验证码缺陷、用户权限、端口扫描、服务检测、中间件安全等。

  2. 性能测试相关

  • 性能测试:通过自动化工具模拟不同负载条件测试性能指标。
  • 负载测试:在保持配置不变的情况下测试不同操作条件下的性能行为。
  • 压力测试:测试硬件系统是否达到性能目标。
  1. 常用性能指标

    响应时间、并发用户数、吞吐量、性能计数器、TPS、HPS等。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号