什么叫软件测试?不是找碴儿,是按计划用手工或者自动化的办法,把代码、文档、功能和性能都给查一遍,好揪出那些藏着的 bug。只要从最小的单元开始测起,一直测到验收,软件能不能交到用户手里,都得看这一路上的表现。按开发阶段分,总共要闯五关。第一关是单元测试,就是对着详细设计说明里写的模块功能和性能,把接口和约束都挨个验证一遍。好几个模块可以同时单独测,用例直接从程序内部结构下手设计就行。第二关是集成测试,等模块单元测过了,就把它们按顺序往一块组装,变成系统里的部件,这时候重点得看接口连对了没。第三关是确认测试,把软件放在像真的环境里跑一跑,看能不能让用户满意。要是这关过了,就说明软件有资格去系统测试了。第四关是系统测试,这就更实战了,直接放到真实的运行环境里看看能不能跟硬件、外设、网络还有系统软件好好配合起来。第五关是验收测试,这是最后一道门槛,得拿着项目任务书或者合同上定的规矩来评审一下系统怎么样。按测试技术来分的话,主要是黑盒、白盒和灰盒这三个套路。黑盒测试就是把被测的对象当黑箱子,光看输进去什么东西、输出来什么东西够不够用,不关心里头咋回事;白盒测试就像把程序装进了透明的盒子里一样,得盯着里面的代码路径、逻辑和循环来看是不是符合设计;灰盒测试则是在这两者中间找平衡,既看输出对不对路,又能通过事件或者标志这种现象大概推断出程序内部是怎么运作的。按代码咋跑来说又分静态和动态两种。静态测试不用真的把程序跑起来,就是人工或者用工具去看看代码符不符合规范、界面跟需求对不对得上、文档能不能看得明白;动态测试才是实打实运行程序,把测试数据输进去再和预期结果对比一下。只有真正把程序给跑起来了才算数。静态和动态这两种方法能互相补漏,把静态发现不了的运行时错误给找出来。按照软件的特性再分的话有功能、性能、安全还有其他几类测试。功能测试就是看实际做出来的东西跟用户想要的是不是一样,包含逻辑功能、界面设计、好不好用、安不安得好或者能不能卸下来、跟别的系统能不能兼容这些内容。性能测试是在看某个功能在规定时间和空间条件下表现咋样,关键指标有响应快慢、能处理多少数据量、占了多少资源这些。安全性测试得看防着外面的人不进来捣乱、数据没泄露或者没被破坏吧,保证软件在真正用的时候是安全可靠的。常见的其他测试类型还有回归测试和冒烟测试:回归测试是为了确认之前修的 bug 全好了没;冒烟测试是在新版本大张旗鼓地测之前先把最基本的功能过一遍看行不行。把这阶段、技术、特性三条主线串在一起看一下全景图吧!不管你是刚入行的小白还是管项目的大领导,都能用这张图把散落在各地的测试知识给串成一个系统。