一、软件测试概念
软件测试就是通过特定的方法和技术,为了检验软件是否满足用户的需求或发现其是否有潜在缺陷,而执行程序的过程。
二、软件测试目的
- 对于软件开发来说,软件测试通过找到的问题缺陷帮助开发人员找到开发过程中存在的问题,包括软件开发的模式、工具、技术等方面存在的问题与不足,预防下次缺陷的产生。
- 对于软件测试来说,使用最少得人力、物力、时间等找到软件中隐藏的缺陷,保证软件的质量,也为以后软件测试积累丰富的经验。
- 对于客户需求来说,软件测试能够检验软件是否符合客户需求,对软件质量进行评估和度量,为客户评审软件提供有力的依据。
三、主流测试技能
1. 功能测试
-
定义:验证软件的功能是否符合需求文档,关注“系统是否做了该做的事”。
-
核心方法:
-
黑盒测试:不关心代码逻辑,仅通过输入和输出来验证功能。
-
测试用例设计:使用等价类划分、边界值分析等方法设计测试场景。
-
2. 接口测试
-
定义:测试系统组件之间的接口(如API),确保数据交互正确性。
-
核心内容:
-
验证接口的请求(输入参数)和响应(输出结果)。
-
检查状态码(如200成功、404未找到)、数据格式(JSON/XML)、业务逻辑正确性。
-
3. 自动化测试
-
定义:通过脚本或工具替代手动测试,提升效率和覆盖率。
-
核心类型:
-
UI自动化:模拟用户操作界面(如点击、输入),工具:Selenium(Web)、Appium(移动端)。
-
接口自动化:通过代码直接调用接口验证,工具:Postman + Newman、Python + Requests。
-
持续集成(CI):自动化触发测试(如每次代码提交后),工具:Jenkins、GitLab CI。
-
4. 性能测试
-
定义:评估系统在高负载、高并发等场景下的表现,关注“系统能否扛住压力”。
-
核心类型:
-
负载测试:逐步增加用户数,观察系统性能变化。
-
压力测试:施加极端负载,找到系统崩溃的临界点。
-
稳定性测试:长时间运行,检查内存泄漏等问题。
-
一句话总结
-
功能测试:手动点点点,看功能对不对。
-
接口测试:检查API返回的数据是否正确。
-
自动化测试:用代码代替人工测试,省时间。
-
性能测试:模拟很多人用,看系统会不会挂。
四、常见测试分类
1. 按测试阶段划分
- 单元测试(又称白盒测试,针对程序源代码进行测试)
- 做什么:测试代码的最小单元(如一个函数、方法)。
- 谁来做:开发人员自己写。
-
集成测试(又称接口测试,主要针对模块与模块或系统与系统之间的接口进行验证)
- 做什么:测试多个模块组合在一起时能否正常工作。
- 重点:检查接口调用、数据传递、依赖关系
-
系统测试(针对软件全面进行验证)
- 做什么:测试整个系统是否符合需求(功能、性能、兼容性等)。
- 谁来做:测试工程师。
- 类型:功能测试、性能测试、安全测试等。
-
验收测试(使用内测,公测来实现)
- 内测:公司内部进行测试。
- 公测:让玩家来进行测试。
一句话总结
-
单元测试:测代码的某个函数。
-
集成测试:测多个模块组合。
-
系统测试:测整个系统。
-
验收测试:用户说“OK”才能上线。
2. 按代码可见度划分
- 黑盒测试(功能派):看不见源代码,主要对程序功能进行测试。
- 灰盒测试(中间派):看见部分代码,主要对程序接口进行测试。 【比喻:测试汽车时知道发动机型号,但不拆开看】
- 白盒测试(代码派):看见全部代码,主要对程序源代码进行测试。
重点补充:
- 系统测试和黑盒测试重点核心是功能测试。
- 集成测试和灰盒测试又称接口测试。
- 单元测试和白盒测试是对代码进行测试。
- 自动化测试归属功能测试。
- 性能测试、安全测试归属专项测试。