本文主要讲了软件测试基础的概念和软件测试需要掌握的知识技能。
1.定义
软件测试是在规定的条件下,使用人工或自动化的手段来运行或测试某个系统的过程。
2.软件测试流程:
标准流程:计划与控制——>分析与设计——>实现与执行——>评估与报告——>结束活动。
常用流程:测试计划——>测试方案——>测试用例——>测试执行——>测试报告。
3.测试经济学
不能一味的追求质量,还要考虑成本。应该在成本和质量之间找一个平衡点。
4.测试心理学
指的是测试的心态,一种是“为了证明系统存在问题”,一种是“为了证明系统不存在问题”。在实际测试的过程中,我们潜意识会将之前测过的部分默认是没有错误的,而实际产品进行版本迭代时,总会“牵一发而动全身”。
5.测试方法
5.1.黑盒测试:在测试过程中只关注输入和输出,应用于集成测试。优点:从产品功能角度测试容易入手,可适用于各阶段测试。缺点:在测试过程中某些代码得不到测试,如果规格说明有误,则无法发现BUG。
5.2.白盒测试:不仅仅关注输入输出,还要关心程序是如何处理的,主要用于单元测试。优点:可构成测试数据使特定程序部分得到测试,有一定的充分性度量手段,可获较多工具支持。缺点:通常不易生成测试数据,无法对未实现规格说明的部分进行测试,工作量大,通常只用于单元测试,有应用局限。
5.3.灰盒测试:灰盒测试用于单元测试系统测试之后的集成测试。
6.静态测试和动态测试
6.1.静态测试:不运行被测试的软件系统,而是采取其他的手段技术。如:代码走读、文档评审、程序分析等。
6.2.动态测试:按照预先设计的步骤和数据运行被测试的系统,在系统测试阶段都属于动态测试。
7.自动化测试
自动化测试是和是手工测试相对应的。不适用测试工具的测试属于手工测试,这是最基本的测试形式。自动化测试需要在适当的时间使已经形式化的手工测试自动化。
8.测试阶段
测试阶段分为单元测试(UT),集成测试(IT),系统测试(ST)和验收测试(AT)四个阶段。单元测试是分别对单元模块进行测试;集成测试是测试各个单元模块之间的数据交换和交互;系统测试相当于集成测试的集成测试;如果是定制或者外包产品,还会进行一次验收测试。
9.软件测试需要掌握的技能
9.1.功能测试
(1)测试用例设计
(2)缺陷分析,缺陷管理,追踪
(3)优化开发流程
9.2.接口测试
(1)工具:Jmeter,postman等。
(2)协议:HTTP协议,8583协议等。
(3)抓包工具:Fiddler,httpwatch
(4)脚本语言:python,java,ruby,go等
(5)接口测试框架
(6)接口测试平台
9.3.自动化测试(GUI自动化)
(1)工具:selenium,UFT,framework关键字自动化测试框架
(2)脚本语言:python,java,ruby,go,groovy,beanshell等
(3)自动化:测试框架开发
(4)CI持续集成
(5)自动化平台的开发flask
9.4.性能测试
(1)工具:loadrunner,Jmeter
(2)脚本语言:groovy,beanshell,C等
(3)性能调优
前端 | HTTP协议,TSLOW,pagespeed,httpwatch,前端调优23大规则... |
web服务器 | Apache,tomcat,Nginx... |
数据库 | mysql,orcle,db2... |
操作系统 | Linux。Unix,aix... |
负载均衡 | nginx,kafaka... |
微服务 | dubbo... |
数据库缓存 | redis... |
消息队列 | mq... |