测试人生 | 从月薪5K到年薪30W,双非学历的她做对了什么?

毕业后很长一段时间,在一家港企做测试工作,工作很清闲,没有996,没有kpi。但是薪资才5k一个月。在港企做的是香港的项目,很稳定。一个项目往往可以做3年或以上,每次的需求可能都是升级框架,功能的变更并不大,我只需要每天点点点,就能应付自如,听起来这是一份很适合躺平的工作。但这只是表面,你在这样一家非互联网的公司,你会发现你的工资入职即巅峰,你的身边都是本地人,他们没有房贷车贷压力,但是你不一样,你家里没有矿,现实情况下,不去做技术层面的提升,往往行业就很容易抛弃你。

人无远虑,必有近忧

在这种无比忧虑,也忍受着低薪的工作条件下,我一直在寻找一个切入点。我去问身边很多的同学,去问他们对于未来的计划,问她们是如何提升的。很遗憾,同学都是不专业的打工人,她们并不知道一个测试工作的发展趋势究竟是怎么样,她们也没法给你更多的建议。

我尝试出去投简历,看看外面的市场能不能给我答案。也有面试的机会,面试官问语言掌握程度怎么样,有自动化性能具体实践经验,持续集成如何实现等等,在工作期间有了解过,但是自己实践的经验就真的没有多少。

焦虑情绪日常高涨,就开始各种找资料。百度搜索测试学习,有很多的培训机构弹出来,期间我看了好多其他的机构,也听过好多的公开课,之所以会最后选择华测教育 ,就是因为之前面试那些系统知识,刚好他们的课程详情目录下有很吻合的测试技能。有最基本的python基础快速学习、接口自动化热门框架httprunner、UI的appium的app自动化测试、平台开发等,顿时觉得有了救星。

全方面提升个人能力

华测教育是直播/录播+课后作业+课后答疑+就业指导的流程,课程资源也算是长期有效的。除了看基本的课程目录,我有深入了解整套的学习系统是怎么开展的,对于我这种上班族来说,其实也不用担心错过直播。

课后作业和答疑也是长期有人帮你解答,感觉就像小时候做作业有人批改监督讲解一样,其实效率很高。

学习完之后,我还整理过我习得技能如下:

在这里插入图片描述
以前不了解什么是测试左移右移,学完课程之后,你会明白测试左移的思想,本质是在一切开始之前先进行测试,测试对象是需求,越早的发现需求不合理的地方出问题的几率就越低。

测试右移,本质上是往发布之后移。也就是产品上线了之后也可以进行一些测试活动。当然在生产环境直接做测试是不推荐的,但是我们可以在生产环境做监控,监控线上性能和可用率,一旦线上发生任何问题,尽快反应,提前反应,给用户良好的体验。

其实总结下来,就是从QC到QA的思想转变,测试是从需求到最后的发布都是一个闭环的质量保证工作。

就业指导,从简历指导到刷面试题,再到定向名企投递都是一条完整链,我觉得这个是很保障的,就像下了一颗定心丸。总结上面心路历程,自己有了方向,有了目标,决定放手一试。

面试真题来啦

最初在港企其实就是5k一个月薪资,现在年总包大概30w了。也非常努力过,但是我觉得努力还不够,还需要继续加油下去。但是前提就是不能盲目去蜻蜓点水学习,还是要系统有计划有实践的开展自己的学习计划并严格执行。

总结一下,最近面试的一些面试题(答案有参考网上的解答):

(1)在项目中如何保证软件质量?

产品,保证迭代过程中的产品逻辑,对于可能的兼容,升级做出预判,并给出方案

设计,满足产品表达的同时,保证设计的延续性

开发,产品细节的保证,技术方案选择要严谨,考虑兼容,性能,开发完成后要充分自测,严格遵循开发规范操作

测试,验证产品逻辑,站在用户角度对交互设计进行系统验证,尽可能多的使用技术手段保证测试质量

(2)app闪退的原因?

在这里插入图片描述

(3)主键、外键和索引的区别?

主键:唯一标识一条记录,不能有重复的,不允许为空;用来保证数据完整性,只能有一个。

外键:表的外键是另一表的主键, 外键可以有重复的, 可以是空值;用来和其他表建立联系用的,一个表可以有多个外键。

索引:该字段没有重复值,但可以有一个空值;提高查询排序的速度,一个表可以有多个索引。

(4)介绍一下自动化项目整体框架的结构?

自动化测试框架涵盖基础方法封装、自定义异常封装、工具类封装、元素管理封装、Page Object模式封装、日志封装、数据管理封装、失败重试封装、浏览器/手机适配封装、数据库操作封装、测试用例管理封装、测试报告等

(5)Jmeter工具如何做接口之间的关联?

接口关联指的就是一个接口要使用另一个接口的返回值作为参数,这种我们在jmeter中叫做关联。

关联的实现方式有多种:

使用正则表达式提取器获取上一个请求的响应结果中的某个值,储存在某个变量中,然后下一个接口使用变量进行引用;

使用json提取器获取上一个请求的响应结果中的某个值,储存在某个变量中,然后下一个接口使用变量进行引用;

使用beanshell后置处理器,解析响应结果存储在变量中,然后下一个接口使用变量进行引用跨线程组关联则需要将关联字段设置为全局属性。

(6)性能测试中,TPS比较低,可能是哪些方面的问题?

压力机本身性能瓶颈

网络IO瓶颈

中间件(tomcat/nginx/mysql)连接数限制

Java线程的阻塞、等待

本系统资源的瓶颈(cpu、内存、磁盘、网络等)

其他外部系统响应时间过长,造成本系统的time-wait

(7)简单说说你在jmeter后置处理器写的脚本是怎么样的?

prev.setDataEncoding("utf-8"); 
String response_data = prev.getResponseDataAsString();

String Str = "\"code\":\"1000\"";
if (response_data == ""){
    
    
 log.info(carnumber+":"+"系统无响应,获取不到响应数据!");
}
else if(response_data.contains(Str) == false){
    
    
 log.info("报错:"+response_data);
}

(8)反转字符串 “Abc123”

print("Abc123"[::-1])

(9)python的re模块了解多少?

import re
# 常见操作方法
res = re.findall('a', 'jason apple eva')  # 查找所有符合正则表达式要求的数据 结果直接是一个列表 
res = re.finditer('a', 'jason apple eva')  # 查找所有符合正则表达式要求的数据 结果直接是一个迭代器对象
res = re.search('a', 'jason apple eva')
print(res)  # <re.Match object; span=(1, 2), match='a'>
print(res.group())  # a  匹配到一个符合条件的数据就立刻结束
res = re.match('a', 'jason apple eva')  # None  匹配字符串的开头 如果不符合后面不用看了
print(res.group())  # 匹配开头符合条件的数据 一个就结束
obj = re.compile('\d{3}')  # 当某一个正则表达式需要频繁使用的时候 我们可以做成模板
res1 = obj.findall('23423422342342344')
res2 = obj.findall('asjdkasjdk32423')

(10)Python threading实现多线程

from threading import Thread
from time import sleep, ctime

class MyClass(object):
    def func(self,name,sec):
        print('---开始---', name, '时间', ctime())
        sleep(sec)
        print('***结束***', name, '时间', ctime())

def main():
    # 创建 Thread 实例
    t1 = Thread(target=MyClass().func, args=(1, 1))
    t2 = Thread(target=MyClass().func, args=(2, 2))

    # 启动线程运行
    t1.start()
    t2.start()

    # 等待所有线程执行完毕
    t1.join()  # join() 等待线程终止,要不然一直挂起
    t2.join()

if __name__=="__main__":
    main()

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】
在这里插	入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_67695717/article/details/131474763