个人感觉可以往两个方向:
一个是,水平方向,一切工具化,包括把测试用例自动化,把流程自动化,开发各种各样的工具来提高研发的效率,避免做重复的手动的事情(这些事情比较容易出错),目的是, 让开发专注做开发,其他事情测试来做;这些技能和具体的产品关联小,可以应用到不同的产品中去;
那对人的要求就是,快速开发的能力,洞察力,不断发现问题,分析问题,解决问题的能力(也就是流程改善的能力),所谓快速开发的能力,就是比如开发人员在开发新功能的时候,测试可以接入然后很快开发出一系列的检查工具帮助开发避免回归的问题;就比如医生在诊断的时候需要的一切工具,体温计,血压计,心电图等等;
对研发而言,这些工具包括代码覆盖工具,分析代码改动的工具,代码版本管理,代码风险分析,bug管理,bug数据挖掘,软件模块依赖分析等等。
举些例子,关于开发一些工具来提高研发的效率;
1、比如我自己的机器上部署了Nginx还有Php,每次要做一些Php相关的开发或者测试的时候需要把2个程序都打开,以前是手动了一个一个打开,后来想想写个脚本,一键搞定:
start "dd" /d "d:\Download\nginx-1.0.11" nginx.exe timeout 20 echo "nginx is started" timeout 5 start "" "d:\Program Files\PHP\php-cgi.exe" -b localhost:9000 echo "php is started" |
2、测试某些软件的时候,需要配置环境,比如代理服务,host信息等等,可以把这些动作都自动化,让所有的人“一键点击”即可部署测试环境。
3、其实人是有惰性的,如果想让团队里面的人(开发,项目经理,产品经理,UI/UA工程师)参与测试,一个办法就是让测试变得很容易,一键点击即可完成。
4、再比如周报或者日报,可以开发一些web系统方便团队成员写周报或者日报,然后聚集成团队的周报或者日报
5、还有就是BVT(basic verification Test)把一些API的测试,简单的冒烟测试写成一个bat文件,开发在checkin之前很快的跑一下,没有问题即可checkin。
把重复的事情自动化,把需要2步或者3步做的事情一步做完,即可提高研发的效率。
另外一个是,垂直方向,软件测试架构师,专业化,比如你一直测试搜索引擎,那么你很清楚搜索引擎的原理,你发现过各种各样的bug,你甚至可以指导比较junior的开发人员,开发设计新功能的时候需要邀请你,因为你知道各种各样的问题,你可以在设计review的时候提出有价值的意见;在这个层面上,测试软件架构师和开发架构师无异; 这些技能和具体的产品关联很强,只能应用到同一类的产品中;
那对人的要求就是,要有很高的读代码的skill,能够读懂别人的代码,可以做code review,可以了解底层的运作;有很高的debug skill,发现问题的时候可以去root cause,从而从系统的角度上知道如何在将来比去避免这些bug,有很强的bug prevention skill;有很强的coding skill。
后记:通过这几周的学习,了解了软件测试的重要性和必要性以及做软件测试所需要的技能。