好长时间了,就想要花时间系统去学习下Java的高级篇知识,这部分是我个人目前比较欠缺的,而且是急缺的知识。我认为的Java高级篇内容是这样划分的:对Java这个编程语言有基本了解,基本掌握了基础语法,能够利用基础部分知识去写一些小项目,例如,我们的webUI自动化测试包括简单的框架设计。而Java的高级部分,主要从基础语法到Java web编程中间的这个断层,例如,Java的几个核心常用的类的使用,集合类,JVM,多线程等等。
为什么要学习Java编程高级篇的知识?我个人认为,主要有以下原因。
1. 面试需要
自动化测试,测试开发,高级测试工程师这些职位都需要编程语言技能。特别是国内一线互联网大公司,例如BAT, 京东,小米,滴滴出行,美团点评,新浪,搜狐,再规模小一点的互联网公司,爱奇艺,摩拜单车,OFO单车,今日头条,WIFI万能钥匙。上面的一些公司,一般以上有参加过他们的测试开发的面试,结果很打击,有几个能勉强面试通过,剩下不通过的基本上都是由于代码能力不够。好多次,你对面的面试官,都是从BAT跳槽出来的,他们共同点都是看重代码能力,然后才考虑你其他能力。有时候,心里会恨不得骂他们,我是来做测试,为什么问题全部是开发的知识。没办法,测试的发展趋势,就是要用代码去测试开发的代码。
2.个人技术成长需要
每个人都应该有一个好的,清晰地职业发展规划。应该知道自己现在所处阶段,最缺的是什么。代码编程能力,绝对是很多测试工程师欠缺最多的一方面。我也同意,有些人说的,不管是黑盒测试还是白盒测试,测试的思维最重要。代码能力和测试工具只不过是手段。这个观点,在一定情况下是成立的,但是你根本就没有代码能力,不要再为自己不会代码而且解释什么。我在QQ群里说过,我从webui自动化入门然后到放弃。我也建议大家这么去做,从一个工具或者一门语言去入门自动化测试,然后积累到一定时候,需要自己去思考,你当前的是不是达到了自动化测试的效果,有什么缺点和优点,面临什么挑战,工作中哪些问题不能实现自动化,不能实现的原因是什么。最后,应该会得出一个结论,webui自动化只是前端,当然包括一部分接口测试,但是后端呢,还有端对端的自动化呢?说白了,我们代码能力太窄了,不足以支撑我们是实现很多场景自动化测试。如果你要设计一个自动化测试平台,Java语言的高级编程部分+web编程,觉得是你需要学习的地方。
3.市场需要
很多公司,基本上Java开发工程师的比例是最多的。你学习好Java,面试机会和选择机会更大。只是,目前Java自动化测试要比Python自动化测试要多很多。很多公司Python只是运用在自动化运维这方面,他们喜欢认为python是脚本语言。还一个现实问题就是,你如果用Java做自动化测试,遇到什么问题,直接问公司开发人员。他们都懂Java,能快速帮你解决问题。如果开发都是Java程序员,你测试采用Python,遇到问题,只能自己默默去解决。
高级部分知识点大纲
下面大概列举出一些Java高级编程的知识点,我们很多是在webui自动化中没有用到过的,学习好了这些,更好地帮我们实现工作中的一些自动化测试,而且你发现没有,面试经常出现的多线程,集合类,算法和高并发这些概念,基本都包括在本系列。一起来学习Java,一起讨论和进步。
- Java基础
- 断言
- 正则表达式
- 集合类
- 泛型
- 高级I/O类
- 日志API
- 网络
- 多线程
- 方法远程调用
- JDBC数据库连接