有一种打工人的羡慕,叫做"大厂"。
真是年少不知大厂香,错把青春插稻秧。
但是,在深圳有一群比大厂员工更庞大的群体,他们顶着大厂的"名",做着大厂的工作,还可以享受大厂的伙食,却没有大厂的"命"。他们就是大厂的"外包员工"。
什么都做了,和什么都没做其实是一样的,走出"瞎忙活"的安乐窝,才是避开弯路的最佳路径。希望我的经历能帮助到有需要的朋友,同时也给各位准备了一份资源,盘里头是一整套软件测试必备资料。
内容涵盖:包括测试理论、Linux基础、MySQL基础、Web测试、接口测试、App测试、管理工具、Python基础、Selenium相关、性能测试、LordRunner相关等... 质量非常高,需要的可文末自行领取(免费)!!
外包公司的特点有哪些?
首先,特点就是人员流动性特别大,接着上面例子,因为可能干了三四个月,该项目做完了,这10个人估计都得走,然后这10个人又会被外包公司派去其他的甲方公司面试,面试成功才有工资拿,没面试成功只有底薪2200。
如果一个外包人员面试甲方公司,一直都没有面试通过,那他就是只能一直拿底薪,大约每天70块钱的收入,所以,有些就觉得没劲,干脆辞职。
还有一个就是:你如果要入职外包公司的话,一般要经过两面,一面外包,过了外包的面试,才有第二轮甲方公司的面试,这些外包的人事都会提前通知你,去哪个甲方公司面试,然后第二面你又要去甲方面试,如果这个甲方公司面试通过了,就会给你发offer,让你入职签合同,如果第一个甲方公司面试没通过,那就去第二个甲方公司,依次类推,直到你面试的甲方公司通过才可以入职签合同。
关于签合同和福利待遇
- 薪酬福利
一般而言外包员工的薪酬福利是远低于正式员工的
正式员工:薪资之外还有五险一金和公司福利等;而外包的价格顶多是岗位的正常薪资。
- 职业发展
外包员工很快会遇到瓶颈,因为只有非核心岗位会外包,这类岗位缺乏长期发展的空间。
正式员工,有成绩或者呆的年限够长都回有相应的回报。
- 工作稳定性
外包是灵活用工的一种,意味着公司一旦需要裁员,首先考虑的是外包员工。
正式员工,会相对稳定,裁员,会获得法律的相应补偿。
- 合同签订
外包员工的合同,是和第三方外包公司签订。
正式员工的合同,是直接和公司签订。
- 工作范围
外包公司,一般是一对多,同时服务多家企业。
正式员工,一般是一对一,只服务于所在公司。
- 外包公司可不可以进呢?
一般情况下,我不建议大家选择去外包公司,因为从各个方面综合比较,外包公司都是不利于我们发展的。但是外包公司的存在又是大多数,我们应该怎么办呢?我的建议是,根据自身情况做"符合事实的选择",如果我们找了很久的工作都没有拿到一份满意的offer,无论是心理还是身体上都承受不住这种煎熬,那么我们可以暂且先在外包公司进行工作,从而积累工作经验,等到时机继续寻找符合自己的满意公司。
但是在外包公司工作一定不要超过两年,要提前去策划自己如何跳出这个环境,从而找到更加有发展潜力的平台进行学习和发展。这些都是需要自己去运营的。在整个过程中,"学习"是主要改变的方式,通过巩固和学习技术与知识,我们可以增加自身的竞争力,毕竟我们还是做的技术行业,还是要用自身的技术能力来说话。
我的外包测试收获
在外包公司也不一定全无收获,我在外包公司这几年也收获不少,感慨良多!
技术方面
- 熟悉了大厂的流程,掌握各种工具
- 掌握了新的技术栈,如mysql都是在外包的这两年学习的
- 代码习惯更好了,
- 编程思想上的提升
- 问题定位速度的提升。
- 工作能力方面
- 更有耐心了,同事之间的交流也是很有礼貌
- 更能抗压了,有时候测试压力挺大的,只能多加班,有时候一个月工作日都在加班,最少每个月有15天的加班
- 更有效率了,简单的东西有时候很快就可以完成
生活方面
体重增加,因为伙食好了,现在早晚餐都包了,另外运动少了,基本没什么运动。
下一份工作不想做外包了
我之所以做了外包,是因为那时候刚来深圳,又没有找到合适的工作,就想先做一年看看,没想到这一做就是两年多,时间真的过的很快,不管是有意义的过还是颓废的过,都一样的快。
自动化测试学习建议
1、多样化练习
完全按照视频里的操作方法,用视频里的网站,按部就班的写代码,效果不大,并不是说没有必要。因为课程里所使用的网站都是老师"精心挑选"的,主要针对某个模块某个知识点而来的,用来做例子的功能也是最简单,主要目的是让学员明白当前所讲的知识点。
但是在实际应用的过程中肯定会比这复杂。所以建议在按照视频里的例子练习完成后,多拿一些常用的网站或者工作中正在使用的网站多做练习,这样我们往往会获取到一些课程里没有的知识。
一开始不会没关系,就是照着现有脚本抄也要练习,因为只有练习才能熟能生巧。
2、虚心学习不自以为是
因为我之前是有代码基础的,所以在第一次学习的过程中将所有代码相关的课程都跳过了,所以导致了知识的断层。第二次学习的过程中,是将课程从头到尾的完整的看了一遍并进行了实际操作,才发现,之前被我跳过的内容隐藏了一些我从前并不知道的知识点。
3、有始有终
第一次学习时,学习完脚本录制之后,就停止学习了,并没有继续学习后续的内容。
第二次学习后发现,用录制的方式写脚本是很low的,很有局限性,并不能满足所有的需求,后来用WebDriver和UnitTest才是真正的高级,解决脚本录制不能解决的问题。
4、应用到日常的工作中
我们学习完自动化之后,不要学习完就行了,而要积极的将其应用到我们日常的工作中,如果放着不用,一段时间之后我们学习到的知识都会慢慢遗忘。将其应用到工作中后,不仅能对技术进行不断练习、优化、升级,还能提高工作效率,何乐而不为呢?
这是我自学自动化的历程,走了不少弯路,也没有专人的指导,只能靠自己去摸索,希望我自己犯的错误能让大家引以为戒。
5、全面了解,选好切入点
目前自动化测试方向大概有以下几个:
- 辅助测试脚本方向:以Shell,Python为主来简化重复的工作,过滤日志等;
- 接口自动化测试方向:Python+Unittest+HtmlTestRuner+Jenkins和Java+Httpclient+TestNG+Jenkins,当然还有很多其他二次开发的框架或工具,不过核心是一样的;
- 页面自动化方向,主要有Python+Webdrver+HtmlTestRunner+Jenkins,Java+Webdriver+TestNG+Jenkins,以及其他的框架和工具;
- App自动化测试方向:以Robotium+Java+TestNG+Jenkins,
- Appium+Java+TestNG+Jenkins,Appium+Python+HtmlTestRunner为主。
当然这里介绍的都是简单的,最基本的实现方案,作为入门学习比较合适。其他五花八门的二次开发的框架,包含众多功能的方案留待你以后提升。先从这几方面了解入手,选择一个语言体系,建议从接口自动化入后,然后再去学习页面和app。
全网首发-涵盖16个技术栈
- 第一部分,测试理论(测试基础+需求分析+测试模型+测试计划+测试策略+测试案例等等)
- 第二部分,Linux( Linux基础+Linux练习题)
- 第三部分,MySQL(基础知识+查询练习+万年学生表经典面试题汇总+数据库企业真题)
- 第四部分,Web测试
- 第五部分,API测试
- 第六部分,App测试
- 第七部分,管理工具
- 第八部分,Python基础(Python基础+编程题+集合+函数+Python特性等等)
- 第九部分,Selenium相关
- 第十部分,性能测试
- 第十一部分,LordRunner相关
- 第十二部分,计算机网络
- 第十三部分,组成原理
- 第十四部分,数据结构与算法
- 第十五部分,逻辑题
- 第十六部分,人力资源
软件测试基础
- 软件测试的步骤是什么?
- 如何录制测试脚本?
- 应该考虑进行如何测试的测试方法
- 怎样估计测试工作量?
- 测试设计的问题
- 当测试过程发生错误时,有哪几种解决办法?
- 测试执行的问题
- 测试评估的目标
- 如何提高测试?
- C/S模式的优点和缺点
- B/S模式的优点和缺点
- ...
Linux
- grep和find的区别? grep 都有哪些用法?
- 查看IP地址?
- 创建和删除一个多级目录?
- 在当前用户家目录中查找haha.txt文件?
- 如何查询出tomcat的进程并杀掉这个进程,写出linux命令?
- 动态查看日志文件?
- 查看系統硬盘空间的命令?
- 查看当前机器listen 的所有端口?
- ...
Python编程
- 统计python源代码文件中代码行数,去除注释,空行,进行输出?
- python调用cmd并返回结果?
- 冒泡排序
- 1,2,3,4 这4个数字,能组成多少个互不相同的且无重复的三位数,都是多少?
- 请用 python 打印出 10000 以内的对称数(对称数特点:数字左右对称,如:1,2,11,121,1221 等)
- 给定一个整数 N,和一个 0-9 的数 K,要求返回 0-N 中数字 K 出现的次数
- 判断 101-200 之间有多少个素数,并输出所有的素数
- 一个输入三角形的函数,输入后输出是否能组成三角形,三角形类型,请用等价类- 划分法设计测试用例
- ...
MySQL数据库
- 你用的Mysql是哪个引擎,各引擎之间有什么区别?
- 如何对查询命令进行优化?
- 数据库的优化?
- Sql注入是如何产"生的,如何防止?
- NoSQL和关系数据库的区别?
- MySQL与MongoDB本质之间最基本的差别是什么
- Mysql数据库中怎么实现分页?
- Mysql数据库的操作?
- 优化数据库?提高数据库的性能?
- 什么是数据的完整性?
- ...
Web测试
- Web测试和app测试区别?
- WEB测试环境搭建和测试方法
- WEB测试教程
- WEB测试要点及基本方法
- Web测试页面总结
- ...
接口测试
- 什么是接口
- 如果模块请求http改为了https,测试方案应该如何制定,修改?
- 常用HTTP 协议调试代理I具有什么?详细说明抓取HTTPS协议的设置过程?
- 描述TCP/IP协议的层次结构,以及每一-层中重要协议
- jmeter,一个接口的响应结果如下:
- 接口产生的垃圾数据如何清理
- 依赖第三方的接口如何处理
- 测试的数据你放在哪?
- 什么是数据驱动,如何参数化?
- ...
性能测试
- 你认为性能测试的目的是什么?做好性能测试的工作的关键是什么?
- 服务端性能分析都从哪些角度来进行?
- 如何理解压力测试,负裁测试以及性能测试?
- 如何判断是否有内存泄漏及关注的指标?
- 描述软件产"生内存泄露的原因以及检查方式。(可以结合- 种开发语言进行描述)
- 简述什么是值传递,什么是地址传递,两者区别是什么?
- 什么是系统瓶颈?
- ...
selenium自动化
- 如何开展自动化测试框架的构建?
- 如何设计自动化测试用例:
- webdriver如何开启和退出一个浏览器?
- 什么是自动化测试框架?
- Selenium是什么,流行的版本有哪些?
- 你如何从命令行启动Selenium RC?
- 在我的机器端口4444不是免费的。我怎样才能使用另一个端口?
- 什么是Selenium Server,它与Selenium Hub有什么不同?
- 你如何从Selenium连接到数据库?
- 你如何验证多个页面上存在的一个对象?
- XPath中使用单斜杠和双斜杠有什么区别?
- 如何编写SeleniumIDE/ RC的用户扩展?
- 如何在页面加载成功后验证元素的存在?
- 你对Selenium Grid有什么了解?它提供了什么功能?
- 如何从你的Java Class启动Selenium服务器?
- Selenium中有哪些验证点?
- 什么是XPath?什么时候应该在Selenium中使用XPath?
...
计算机与网络
- 一台计算机的IP是192.168.10.71子网掩码255.255.255.64与192.168.10.201 ...
- 请简述DNS、活动目录、域的概念。
- 10M兆宽带是什么意思?理论下载速度是多少?
- 什么是IP地址?
- OSI七层网络模型的划分?
- TCP和UDP有什么不同?
- HTTP属于哪一层的协议?
- HTTP和HTTPS的区别?
- cookies和session的区别?
- HTTP的get请求和post请求的区别?
- HTTP1.0和HTTP1.1有什么区别
- TCP的连接建立过程,以及断开过程?
- 客户端使用DHCP获取IP的过程?
- 写出某个网段的网络地址和广播地址?
- ...
人力资源
- 你的测试职业发展是什么?你自认为做测试的优势在哪里?
- 你找工作时,最重要的考虑因素为何?
- 为什么我们应该录取你?
- 请谈谈你个人的最大特色。
- 一个测试工程师应具备那些素质和技能?
- 还有问一下你是怎样保证软件质量的,也就是说你觉得怎样才能最大限度地保证软件质量?
- 为什么选择测试这行?
- 如果我雇用你,你能给部门带来什么贡献?
- ...
这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!