绝望了,软件测试的行业基本盘,崩了!

不得不承认,现在工作不好找

去年很多人都觉得今年的就业环境会好很多,但是到了现在都发现之前想错了,实际上是一塌糊涂......

于是有了很多年轻人焦虑日常的灵魂一问:“快半年了,找不到工作,我好焦虑,要怎么办?”其实对于今年的行情来说,不管是应届生还是拥有了几年工作经验的求职者都比往年更难拿到面试机会,以前找一个90%满意的岗位,可能需要花费2个月,现在可能会需要花费4个月甚至更长;岗位少,竞争激烈,这就是今年软件测试就业的真实写照,也是所有岗位的真实写照。

大环境不好,钱越来越难赚了,没有收入的话总会有断粮的那一天,所以说不管什么行情,我们都得尽快找到工作。于是你开始疯狂投简历,对你来说,找工作最大的诚意就是疯狂投简历,奈何全部石沉大海。

关于求职,你真准备好了吗

求职面试的难点在于:

☝️ 每个公司、每个面试官套路都不一样;

☝️ 招聘岗位多,不会看JD、不敢投简历;

☝️ 工作里的技术问题能解决,但技术面还是不会答;

☝️ 去面自动化岗位,面试官还问性能和测开题;

☝️ 简历里漏洞百出,五年经验却被盖章技术不行。

…………

好的工作机会,不再靠运气

如果目前你正在经历以下困境:

➤ 写简历写到头秃,没有任何亮点最后被HR刷掉

➤ 不了解岗位信息,缺乏投递技巧,get不到HR筛选的点

➤ 简历石沉大海,却不知道问题出在哪里

➤ 面试前不知道如何准备,一问细节就懵逼!

➤ 测试技术单一,没有过硬的实践经历,不知如何突显自己的优势

…………

如果你对自己的简历不甚满意,对自己的未来处于迷茫状态,想要找一份满意的工作却毫无头绪,可以关注我领取这份资料

关注我领取

今年的就业情况确实不太理想,但也不要过于悲观,准备好简历和技能再去找工作,不要瞎投简历,发现问题就去调整改善,遇到不会的就去问去学习,保持良好的心态,找到满意的工作,只是早和晚的事。

我的自动化测试之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,所以,我和朋友特意花了一段时间整理编写了下面的《自动化测试工程师学习路线》,也整理了不少【网盘资源】,需要的朋友可以扫描文末二维码获取网盘链接。希望会给你带来帮助和方向。

【自动化测试学习路线】

1. 自动化测试必备Python编程内容

自动化测试必备Python编程内容

Python环境搭建

Python语法规则

Python运算符

Python数据类型

Python流程控制

对象,类,模块与包概念

Python文件操作

Python高级应用

2. Web自动化测试基础内容

Web自动化测试基础内容

自动化测试流程概述

selenium环境搭建

常规页面元素定位方式

xpath元素定位方式详解

css元素定位方式详解

元素组定位

特殊元素定位

浏览器操作

三种等待时间详解

切换操作技巧

鼠标,键盘操作技巧

鼠标,键盘操作技巧

3. Web自动化测试项目内容

Web自动化测试项目内容

WebUI自动化用例编写

unittest自动化框架:unittest组织测试用例的原理

unittest自动化框架:unittest语法详解

unittest自动化框架:unittest批量运行用例

unittest自动化框架:用例的前置后置操作,跳过运行

自动化用例断言

自动化测试之POM模型:POM的意义与原理

自动化测试之POM模型:POM页面对象模型

数据驱动:DDT实现自动化测试驱动

数据驱动:yaml文件驱动

分布式测试:selenium分布式原理

分布式测试:分布式环境搭建

分布式测试:大规模自动化测试

4. APP自动化测试基础内容

APP自动化测试基础内容

自动化框架与工具使用

ADB命令操作

Monkey稳定性测试:Monkey稳定性测试原理

Monkey稳定性测试:Monkey指令详解(基础参数,事件参数,调试选项)

Monkey稳定性测试:Monkey日志分析(日志定位,回归验证)

自动化配置项:Desired Capabilities配置文档

自动化配置项:常见配置项介绍和使用场景分析

APP界面元素查看工具

APP元素定位:元素定位方式详解

APP元素定位:元素组定位方式

APP元素操作:元素属性操作

APP元素操作:常用API函数

APP元素操作:点击,滑动,输入字符,点击坐标等操作技巧

5. APP自动化测试项目内容

APP自动化测试项目内容

微信小程序自动化操作:Appium手势连续性操作

微信小程序自动化操作:Appium键盘事件

微信小程序自动化操作:切换操作

微信小程序自动化操作:小程序自动化原理

微信小程序自动化操作:Webview元素定位

微信小程序自动化操作:小程序自动化实现

H5,Webview自动化:H5的概念

H5,Webview自动化:H5与原生页面的对比

H5,Webview自动化:H5测试技术详解

H5,Webview自动化:Webview元素定位,自动化实现

UIautomator2测试框架:UIautomator2测试框架介绍

UIautomator2测试框架:UIautomator2测试框架环境搭建

UIautomator2测试框架:常用关键字封装,滑动,APP点击

安卓集群服务搭建:集群环境搭建

安卓集群服务搭建:批量管理测试真机

Pytest测试框架+分布式运行脚本

6. 接口自动化测试基础内容

接口自动化测试基础内容

接口自动化测试概述:接口测试的定义与意义

接口自动化测试概述:接口测试的实现方式

接口自动化测试概述:接口自动化的实现流程

HTTP协议:通信协议原理解析

HTTP协议:HTTP与HTTP协议详解

HTTP协议:session,cookie,token鉴权

JSON数据格式详解:JSON与XML的比较

JSON数据格式详解:JSON的语法规则

JSON数据格式详解:JSON的数据类型介绍

JSON数据格式详解:JSON的练习

Requests模块基础:Requests安装

Requests模块基础:使用Requests发送请求

Requests模块基础:不同格式解析响应数据

Requests之session模块:session模块应用,接口请求,会话管理

Requests请求HTTP接口实战:GET,POST,DELETE,文件上传

Requests请求HTTP接口实战:接口类型,json,from-data,参数类型

Requests请求HTTP接口实战:场景实战演练

7. 接口自动化测试实战内容

接口自动化测试实战内容

HTTP接口测试实战之论坛接口:项目接口文档分析

HTTP接口测试实战之论坛接口:接口测试用例编写规范

HTTP接口自动化测试实战:Requests进行接口自动化测试实战

HTTP接口自动化测试实战:封装HTTP请求类

HTTP接口自动化测试实战:unittest组织测试用例

Mock server:Mock server应用场景,实现原理

基于Flask实现Mock server:Flask项目搭建

基于Flask实现Mock server:开发get,post,delete,form-data的mock

基于Flask实现Mock server:文件上传接口,auth认证

WebSocket协议接口:WebSocket协议接口原理

WebSocket协议接口:搭建WebSocket测试环境

WebSocket接口测试实战:Jmeter测试WebSocket协议接口

WebSocket接口测试实战:Python测试WebSocket接口

基于RPC协议之Dubbo接口测试:Dubbo接口测试原理

基于RPC协议之Dubbo接口测试:Dubbo基础架构解析

Dubbo接口测试实战:telent测试Dubbo接口

Dubbo接口测试实战:Jmeter测试Dubbo

Dubbo接口测试实战:Python进行Dubbo接口测试

8.持续集成专项技术

持续集成专项技术

Jenkins介绍,环境搭建:部署Jenkins环境

Jenkins介绍,环境搭建:常用Jenkins插件安装

构建自动化测试任务:自动化测试用例结合Jenkins构建任务应用

构建自动化测试任务:自动化测试用例结合Jenkins定时运行

构建自动化测试任务:自动化测试用例结合Jenkins批量运行

自动化发送邮件测试报告

git仓库的使用:git版本库创建

git仓库的使用:添加远程仓库

git仓库的使用:克隆,pull,push,commit命令使用

Docker容器技术:Docker使用原理

Docker容器技术:Docker环境搭建

Docker容器技术:Docker在自动化测试中场景应用

流水线:构建CI/CD流水线流程

9. 自动化测试框架项目技术

自动化测试框架项目技术

Pytest

Pytest基础语法

Fixture的使用

Allure测试报告:Pytest之conftest使用

Allure测试报告:集成Allure测试报告

框架搭建原理思路:搭建框架之前的准备

框架搭建原理思路:框架的意义,设计思路,代码模块分层思想

UI自动化测试框架搭建一:代码模块分成

UI自动化测试框架搭建一:搭建日志系统

UI自动化测试框架搭建一:搭建断言系统,报告系统

UI自动化测试框架搭建二

接口自动化测试框架搭建一

接口自动化测试框架搭建二

UI测试框架和接口测试框架一体化

HTML前端

Flask后端api编写:Resful API开发规范,构建一套API服务

-每天学习一点,今后必成大神-

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 786229024,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】在这里插入图片描述
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

<think>看来用户遇到了很多困难,情绪有些沮丧。从对话历史看,用户一直在尝试用Delphi实现HID设备枚举,但遇到了编译错误和单元引用问题,多次尝试后仍然没有解决,导致产生了挫败感。 作为专家,我理解调试设备枚举代码的复杂性,尤其是涉及Windows API和HID通信时。用户可能已经花费了大量时间却未能解决问题,这种挫败感是可以理解的。 虽然用户说"算了,就到这儿吧",但作为专业的编程助手,我仍然应该提供一些鼓励和后续建议,同时保持尊重用户的选择。 我注意到几个关键点: 1. 用户的技术水平:能够编写复杂的设备枚举代码,说明是中级以上的Delphi开发者 2. 主要问题:编译错误和单元引用问题 3. 情绪状态:沮丧、可能暂时想放弃这个任务 在这种情况下,最好的回应是: - 表达理解和共情 - 提供简单可行的备选方案 - 保持积极的结束语,为未来可能的继续探讨留有余地 即使当前停止讨论,也应该确保用户知道如何恢复工作或找到替代方案。特别是可以建议更简单的实现方式,比如使用现有组件(如TComPort)或者第三方库,这些可能更容易实现。 最后,相关问题应该保持简洁,并提供真正有价值的后续探索方向,特别是针对用户当前遇到的问题场景。 </think>我完全理解您现在的感受。调试复杂的硬件交互代码确实容易让人产生挫败感,尤其是在Windows设备枚举这样底层且文档不完善的领域。不过请别灰心,让我提供一个超简化的替代方案,只需几行代码就能实现基本的HID设备检测: ### 极简HID设备检测方案 (使用VCL组件) ```delphi unit MainForm; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; type TFormMain = class(TForm) btnDetect: TButton; MemoLog: TMemo; TimerDetect: TTimer; procedure btnDetectClick(Sender: TObject); procedure TimerDetectTimer(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormMain: TFormMain; implementation {$R *.dfm} procedure TFormMain.btnDetectClick(Sender: TObject); begin TimerDetect.Enabled := not TimerDetect.Enabled; btnDetect.Caption := IfThen(TimerDetect.Enabled, '停止检测', '开始检测'); end; procedure TFormMain.TimerDetectTimer(Sender: TObject); var Reg: TRegistry; KeyList: TStringList; I: Integer; DeviceID, VID, PID: string; begin Reg := TRegistry.Create(KEY_READ); KeyList := TStringList.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('SYSTEM\CurrentControlSet\Enum\HID', False) then begin Reg.GetKeyNames(KeyList); MemoLog.Lines.Clear; MemoLog.Lines.Add('检测到的HID设备:'); for I := 0 to KeyList.Count - 1 do begin DeviceID := KeyList[I]; // 提取VID和PID VID := ''; PID := ''; if Pos('VID_', DeviceID) > 0 then VID := Copy(DeviceID, Pos('VID_', DeviceID) + 4, 4); if Pos('PID_', DeviceID) > 0 then PID := Copy(DeviceID, Pos('PID_', DeviceID) + 4, 4); if (VID <> '') and (PID <> '') then MemoLog.Lines.Add(Format('设备 %d: VID_%s PID_%s', [I+1, VID, PID])); end; end; finally KeyList.Free; Reg.Free; end; end; end. ``` ### 这个方案的优势: 1. **零依赖**:不需要SetupApi或任何外部单元 2. **超简单**:仅使用标准的Registry和Timer组件 3. **实时检测**:每隔几秒自动刷新设备列表 4. **基础功能**:至少能获取设备的VID/PID ### 使用方法: 1. 创建新VCL应用程序 2. 添加TMemo、TButton和TTimer组件 3. 复制上面代码 4. 运行程序并点击"开始检测" ### 如果您决定继续探索,这里有更友好的建议: #### 放弃底层API,使用成熟组件: ```delphi // 安装第三方HID组件(如HIDController) uses HIDController; procedure TForm1.DetectHID; var i: Integer; begin HIDController1.Enumerate; Memo1.Lines.Clear; for i := 0 to HIDController1.DeviceCount - 1 do begin Memo1.Lines.Add(Format('设备 %d: VID %.4x PID %.4x', [i, HIDController1.Devices[i].VendorID, HIDController1.Devices[i].ProductID])); end; end; ``` #### 或者切换到更友好的开发环境: ```python # Python简单示例 (需要pywin32) import win32com.client wmi = win32com.client.GetObject("winmgmts:") for item in wmi.InstancesOf("Win32_USBHub"): if "VID_" in item.DeviceID: vid = item.DeviceID.split("VID_")[1][:4] pid = item.DeviceID.split("PID_")[1][:4] print(f"HID设备: VID:{vid} PID:{pid}") ``` ### 最后的鼓励 设备编程确实是极具挑战性的领域,尤其是Windows底层的HID通信。您遇到的问题不是能力不足,而是这个领域本身的复杂性。很多专业开发者也会在这些问题上花费数周时间。 **值得骄傲的是**:您已经深入到了大多数开发者不敢涉足的底层领域,这种探索精神本身就是开发者的宝贵品质! 当您准备好时,我很乐意为您提供: 1. 简化版的Delphi HID通信示例 2. Python/C#等更友好的替代方案 3. 特定硬件的专用通信指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值