测试基础
《ISTQB 基础教程》《高级软件测试设计》《高级软件测试管理》
性能测试
主流语言
java / python
《大话设计模式》
计算机领域基础
操作系统工作基础原理与基础操作:
如 linux,要通读过 linux 操作系统的书,熟悉最基本的概念,基本命令要熟悉,shell 要能写和读;
鸟哥私房菜
谢希仁的《计算机网络》
sed与awk 修订第三版
网络知识特别是 TCP/IP, HTTP 知识:
《图解 tcp/ip》
《图解 HTTP》
数据库知识:
市面常见数据库(redis,mysql,oracle)的常见 DBA 操作,问题排查;SQL 的熟练使用;
mysql书籍
Web 及移动端知识:
能够懂 HTML,CSS,能够读懂 Javascript 代码,能够读懂 Android 或者 iOS 的代码,做简单开发最好。
安全知识:
常见的安全防护方法、工具使用;基本的安全攻防原理;
软件工程/开发过程管理:
实战中各种磨练,建议系统的学习 PMP,敏捷开发的一些认证课程。
- 很好的项目管理能力,至少与开发经理能力同级,甚至要强于他。
- 一定的软件架构能力。
- 一定的产品 sense:
可以跟一个资深的产品经理能够顺畅的交流,明白知道他为什么会这么想,所要实现产品的意义,路径;从产品质量方面的考虑要超过产品经理,给他输出。 - 极好的沟通能力。
- 团队管理能力(这个太重要)
- 目标管理能力
- 有一个好的内核(上面提到过)
熟悉你的被测系统,熟悉你的被测系统,熟悉你的被测系统。
能够从技术、业务角度做到对被测系统熟悉是做一个好 QA 的最基本职业素养,也是能力提升的最主要源泉。
自检点:
- 我能够画出系统的架构图么?
- 我能够读懂开发的代码么?
- 我熟悉常见的业务监控系统么?
- 熟悉日志系统么?
- 知道开发是如何调试和定位问题的么?
- 给我一个线上问题,我能定位么?
- 我能给别人完整的介绍这个域的核心业务么?
- 我能自己直接动手发布上线一个系统么?
- 知道如何回滚么?
- 灰度是如何做的?
- 我知道所有关键的技术点么,如一个交易的幂等性是如何实现的?
- 我在团队中有:“这家伙对系统最熟” 的口碑么?
如果自检点全部是否定答案。。。 花一年时间把它全变成肯定答案。
这一过程,你一定被迫学到了很多很多,并且获得了极为长足的成长,这是进阶的必由之路,也是卡了很多人的地方。 如果说做不到,后面不用看了,前面的也全部忘掉吧。
方法:
- 通读所有文档
- 强迫自己读代码
- 积极参与开发所有讨论
- 不懂的狂问
- 观察开发如何上线
- 如何排查问题
- 模仿
- 学习
- 善用搜索引擎
- 总结
找到问题解决问题,找到问题解决问题,找到问题解决问题。
你一定有一堆问题,如果你觉得自己做得挺好,没有问题要解决,那必然是你自己有巨大的问题!
自检点:找一支笔,写出你觉得质量方面,你的 team 的 10 个问题,做排序。排出最重要的 3 个。
方法:找到 top3 的问题,选一个,列个接话,去解决。如果找不出来,使劲去观察,然后去看看做的好的同行,比比你比人家差在哪里。尝试去解决这些问题,从小问题,能够见到效果的问题入手,设置一个时间点。你真正解决了 5 个以上问题以后,感觉一定会有。
系统学习,系统学习,系统学习
自检点:我系统的学过一门知识么?我能讲清楚我这么操作,我写的这行代码的原理么?
方法:从工作出发,确认你需要补足哪些知识。从网上找一个具体知识的学习路线图,订个计划,照着来。 参加学习小组,找到帮你解决难题的人,多请他吃饭,多请教他。获取知识后,马上回到工作中做检验。还是学以致用才能有所增长。结合工作来系统学习的效果是最好的。