每个软件工程师其实都应该了解软件测试,合适的软件测试方法可以将bug前置,提升软件质量。这里主要聚焦于辛勤劳动的测试工程师 ,lisa镇楼~
软件行业发展至今,软件测试已经成为软件工程中不可缺失的一环,演进了很多测试方法论,发展了多个测试平台。其实是最近遇见了一个很可爱的测试妹子,毕竟我也在这个开发行业混了四年了,肯定要有足够的知识来展示自己无可匹敌的魅力并且产生话题。so 赶紧补一波软件测试方面的知识,帮助妹子能快速捕捉到令人叹服的bug,升职加薪~
现状
需求交接后,测试爸爸们就开始设计测试用例了,开发之完毕之后,进入SIT(System Integration Testing)系统集成测试阶段。这时,测试工程师就会用设计好的测试用例来验证功能是否符合预期。一般三个开发配一个测试。这里包括了功能测试和性能测试。
测试阶段
单元测试、SIT、UAT、安全测试、性能测试、回归测试、冒烟测试、灰度测试
测试理论
测试可从书籍或视频中获取,经典黑皮书《软件测试》《软件测试的艺术》《Google软件测试之道》
文档能力
测试用例
合适的测试用例和测试方法对于测试是极其重要的。
功能测试
最基础的功能测试就是手动点巴点巴,验证流程结果是否符合预期,特殊字符是否有限制,条件是否满足,表单校验的正确性,接口返回是否超时,基础测试,称为level1级别,这都没过,就算是回归不通过,等着吃单吧~
工具
接口测试
postman
前后端必须会的工具呀,只有调过接口才能说是ok。专业的测试人员不仅要会基础的调用接口,并且还要熟练使用批量跑接口以及断言(preRequest和test,需要js语法支持)。
soupUI
支持Groovy脚本扩展
抓包工具
Fiddler
首推的抓包工具,修改request和response测试软件是否合理的处理了各种异常场景,比如对于500、400等返回值的处理,loading是否自动停止。可以拦截request修改入参、拦截response修改返回值,达到测试目的。mac可以用最近免费推出的全平台版本Fiddler Everywhere
Charles茶壶
同样也是很出色的抓包工具
Wireshark
wireshark只能查看封包,而不能修改封包的内容,或者发送封包。wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容,总结,如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP 就用wireshark.
chrome调试
了解network的调用链路更好设计合理的用例,发现漏洞。
自研测试平台
根据自家软件特性,一般都会搭建自动化测试平台。上下文参数传递,自动化接口测试。
移动端测试
不仅仅要回web端的测试,还需要对app测试有了解,毕竟前端也是日新月异的。安卓需要了解adb(Android Debug Bridge 安卓连接桥)指令,可以用于安装sdk
Appium
继承于Selenium的一个app测试客户端桌面应用。
chrome
需要移动端的浏览器为chrome内核,通过usb连接电脑和移动设备,并且使用chrome查看移动设备网页的展示效果和html布局样式。
性能测试
Jmeter
基于java开发的GUI 性能测试工具,也支持SDK调用,多线程并发接口调用,定时、专业的观察树图表展示。
LoadRunner
同著名性能测试框架
自动化测试
Selenium
最流行的 自动化测试框架,支持java和python的sdk。测试行业人员必学。可以打开浏览器驱动,模拟用户进行一整套流程操作,完成UI全自动测试,解放人力,可快速回归测试。此时就需要前端基础,获取xpath来定位元素。 so~前端也是我的强项,可以加强而攻之。
Robot Framework
Robot Framework是用于验收测试和验收测试驱动开发(ATDD)的通用测试自动化框架。 它具有易于使用的表格测试数据语法,并使用关键字驱动的测试方法。 它的测试功能可以通过使用Python或Java实现的测试库进行扩展,用户可以使用与创建测试用例相同的语法,从现有的关键字创建新的更高级别的关键字。
QTP(UTP)
CS端自动测试框架,已经慢慢不使用了
持续集成测试
jenkins
持续交付,自动化测试平台,在DevOps中占大头,当开发提交代码后,就触发出发流水线从而触发自动化测试。
单元测试
一般开发自测或者开发转测试,都需要进行黑盒测试,在功能小单元做好逻辑的头尾对接。
JUnit
经典java单元测试框架
testNG
经典后的经典 java单元测试框架
UnitTest & Pytest
python的单元测试框架,可以配合自动化测试框架联合测试。
数据库能力
有些程序的运行结果是体现在数据库上的,并且还有些是存储过程,那就更依赖数据库了,所以基础的sql能力也是要有的。
how to become 测试经理
毕竟不是这个方向,也只能分析下周围厉害的测试兄弟有什么优秀的特性。
产品owner意识
其实测试就是潜在的用户,如果在测试过程中,交互体验不顺畅,就需要和产品经理、需求分析等进行讨论,是否有更合理的方案,优化产品的易用性。
测试即业务
对业务了如指掌,只有对业务非常了解才能在各种复杂场景中发现异常,并且对于功能改动影响范围有所把握,是否需要回归测试。
人员管理
对的人做对的事,根据每个人对功能模块的熟悉程度来划分测试任务
测试手段
需要定下测试手段和规则,交叉测试就是很好检验是否完成测试的手段,发现别人用例的盲点。
版本测试复盘
每个版本的测试任务完毕后,需要分析这个版本的测试团队整体的good things 和 bad things,并且归档后找出解决方案,并且严格按照标准践行。专业性就体现在有想法并能高效执行,这样才会信服。
联调协作能力
实际测试中,可能会涉及到多个系统,那么就需要分析测试边界,是否从创建表单到表单结束整个生命流程都需要参与
版本控制&项目管理
开发是测试的好弟弟,只有开发完成了,才能启动测试,所以也需要盯紧开发的进度,防止测试时间紧张造成未全面覆盖测试。
方法论
TDD 测试驱动开发 。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。
技术
搭建自动化测试平台能力,一般来说自动化测试平台都是jenkins+jmeter可以搞定。