软件测试入门学习笔记
今天学习新知识,软件测试。
什么是软件测试?
使用人工和自动手段来运行或测试某个系统的过程,目的在于检验它是否满足规定的需求或弄清实际结果与预期结果之间的差别。
软件测试的目的?
1)为了发现程序(软件)存在的代码或业务逻辑错误(找到Bug)
2)为了检验产品是否符合用户需求(提高质量)
3)为了提高用户的体验
测试分类?
按照测试阶段划分
单元测试:主要测试程序代码,为的是确保各单元模块被正确地编译,比如有具体到模块,类,函数,方法的测试等。一般是由开发人员来完成对代码模块的测试。
集成测试:单元测试后,将各单元组合成完整的体系,测试软件单位之间的接口是否正确,数据能否正常传递,也就是把多个函数或模块组装到一起进行的测试。比如注册和充值这两个功能是否能正常连通。一般也是由开发人员来执行集成测试。
系统测试:把软件系统搭建起来,结合外设,网络等其他元素,按照软件规格说明书中的要求,测试软件的性能、功能等是否与用户需求相符合,在系统中运行是否存在漏洞等。由测试人员根据测试用例进行完整的系统测试。
验收测试:本测试阶段以用户为主,用户对软件进行验收,以确保软件达到符合的效果。
验收测试又分为Alpha测试(先)和Beta测试(后)。
Alpha测试:把用户请到开发方对软件进行的测试,测试环境受开发方控制,测试人员不多且测试时间较集中。执行者:测试人员、用户、公司内部人员。(Alpha测试可理解为软件发布的内测版本)
Beta测试:测试环境不受开发方影响,是真实的测试环境,是真实的用户真实使用的。测试人员广泛,测试时间较分散。执行者:用户。(Beta测试可理解为软件发布的公测版本)
通过Bate测试之后,软件产品基本上就可以确定下来等待正式发布上线。
按照测试技术划分
黑盒测试:只需关注外部的输入与输出,不需要太关注程序内部实现逻辑(不需要查看代码)
举个例子:当我玩一个竞技游戏时,用手指操控人物移动,当我的手指往上移动,人物对应也是往上移动,不需要知道这个人物移动功能是通过什么逻辑来实现。
白盒测试:需要关注程序内部实现逻辑(需要查看代码),不需要太关注外部的输入与输出。
举个例子:也是一个竞技游戏,有一个功能是用户通过手指操控人物移动,那么具体是怎么实现的,用什么代码什么逻辑来实现。
灰盒测试:需要关注外部输入与输出,也需要关注内部具体逻辑实现(两者都需要关注)
按照是否运行被测系统来划分
动态测试:需要运行被测系统而进行的测试。
静态测试:不需要运行被测系统来进行的测试(如界面检查、文档检查、代码找茬等)
按照测试手段划分
手工测试(点点点)
自动化测试(替代手工 利用工具/写脚本)
按照测试内容划分
功能测试:验证软件的业务功能是否符合需求。比如一个聊天软件,在聊天框能正常发送消息,这是一个功能,要对这个功能进行测试。
界面测试:当前被测系统的界面与原型图是否一致。比如一个软件的首页, 跟原型图的颜色、字体、格式、样式等是否一致。
安全测试:对被测系统的安全进行测试。检查是否有一些安全漏洞,例如:对于一个登录界面,用户名和密码输入框是否能过滤对一些特殊字符,是否存在SQL注入的风险等。
兼容性测试:被测系统在不同的测试环境下是否正常。例如(B/S架构的淘宝,用户在使用不同浏览器(ie/chrome/firefox)访问淘宝时,功能是否都能正常使用)
易用性测试:被测系统的各个功能是否操作方便,是否容易理解,是否容易上手等。
性能测试:在某个特殊情况(如用户数量剧增,软件是否还能正常使用);一般会利用一些工具来模拟对人使用的场景来进行测试(负载测试、压力测试等都属于性能测试)
其他测试
冒烟测试:在进行正式测试之前对主要核心功能进行的测试,当基本功能没问题了,再进行后续的测试。
回归测试:开发人员对存在问题的功能进行修改之后,再一次进行的测试,也就是找到Bug之后提交给开发人员,开发修改之后,测试人员再次进行验证。
软件测试基本流程?
需求分析阶段:阅读需求,理解需求,主要是对业务的学习、分析需求点等。
测试计划阶段:主要人物是编写测试计划,参考软件需求规格说明书,以及测试工作的统筹安排,包括测试内容、人员任务分配、测试环境、运用什么测试工具、时间安排等。
测试设计阶段:主要人物是编写测试用例(测试用例:具体如何进行测试的文档)。
测试执行阶段:首先搭建测试环境,执行预测(冒烟测试),以判断当前版本可测与否,若预测通过,则正式就进入系统测试;若发现问题则提交Bug到缺陷管理平台,并对Bug进行跟踪。知道被测软件达到测试需求要求,没有重大Bug,测试结束。
测试评估阶段:出测试报告,对整个测试的过程和版本质量做一个详细的评估,确认是否可以上线