什么是软件
概念
软件=程序+数据+文档。
- 程序:我们被测的软件,比如淘宝。
- 数据:指的是用户信息以及业务数据信息。比如我们的用户信息,历史浏览记录,订单信息等等。
- 文档:比如用户使用手册、协议、帮助文档等等。
软件类型
软件可以分为两大类,系统软件和应用软件。
应用软件
定义
应用软件是为了解决某个需求而研发的软件。比如我们的淘宝,支付宝和京东,首先淘宝是解决用户的购物需求,支付宝是解决用户的支付需求,京东也是解决购物需求。
应用软件的架构
- B/S架构:通过浏览器可以访问的软件。比如我们的淘宝网站,京东网站。
- C/S架构:需要安装客户端才可以使用的软件,比如我们的qq微信等应用程序。
系统软件
系统软件为其他多组程序提供环境的程序叫做系统软件,比如我们的windows系统,我们的安卓系统。
什么是软件测试
软件测试人员类比于工厂里面的质检人员,我们的核心目的,主要就是保障产品的质量。
定义
使用人工和自动化手段来运行或测试某个系统的过程,叫做软件测试。
软件测试的目的
他的目的主要是检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
解释是否满足规定的需求
那么我们去测试的时候规定的需求是什么?也就是我们去测试的时候绝对是有一个标准的,那这个标准是由我们来定,还是由谁来定?
它是由我们项目部的产品经理去确定的需求,产品确定的需求,是从用户手里收集整理的需求,一般我们把这个需求叫做规格说明书SRS。
我现在去测试一部手机,那么怎么去验证这个手机是合格还是不合格,那么此时它是一个测试标准的:他会给你一个检测表,这个检测表就是我们的规格说明书,如果和它里面一致,那么就是没问题的,如果和里面不一致,它就是一个错误或者bug。这就是我们目的里面的,是否满足规定的需求的一个解释。
解释弄清预期结果与实际结果之间的差别
- 预期结果,就是结合规格说明书,应该是什么样的结果?
- 实际结果,测试被测软件得到的结果。
如果预期结果与实际结果不一致,那么就是一个Bug。
比如我们需求文档说QQ支持语音视频,但实际它只支持语音或者视频,那这个就是一个Bug
常见笔试题
软件测试的目的有哪些?
- 尽可能去发现更多的bug。
- 降低成本。就是我越早发现bug,那修复bug的成本就越低。
- 提高产品的质量。
软件测试的分类
按阶段划分

单元测试
- 测试对象:我们的程序代码里面的细小单元,比如模块、类、函数。
- 测试者:开发人员
集成测试
- 测试对象:把多个程序单元整合到一起进行的测试。比如我们的淘宝,它有用户模块,订单模块,我们把用户模块和订单模块整合到一起来测试【比如用户模块是我们开发人员1进行的单元测试的,订单模块是由我们的开发人员2进行的单点测试,然后我们的开发人员呢就去拿我他们整合到一起去测试】,他测试的本质对象还是代码。
- 测试者:开发人员
系统测试
- 测试对象:把软件系统搭建起来,然后查看软件和用户规格说明书是否一致。
- 测试者:测试人员。
验收测试
- 测试对象:用户对软件进行测试。
- 测试者:测试人员,用户。
验收测试有两种形式:阿尔法测试(Alpha)和贝塔测试(Beta)。
那么什么叫做Alpha测试,什么叫做Beta测试,以及这两个测试之间有什么区别?
- Alpha测试:用户或者第三方来到我们开发方对系统进行的测试,就是他用户到我们公司来进行的测试。
它的特点是在公司内部测试,测试者可以是用户或者第三方专业测试人员。 - Beta测试: Beta测试理解为公测,就是它系统环境不是在我们开发方这里来测,而是到用户那边去测试。比如我们以前qq的一个贝塔版本,我们此时的测试对象是真实用户,然后测试环境是真实的用户环境,它是不可控的。所以
Beta测试的特点是系统的环境不受开发方控制,然后测试人是用户,测试的时间不集中
Alpha测试和Beta测试之间有什么区别?
- 测试的场所不同【阿尔法测试是在公司内部环境下测试,而贝塔测试是在真实的用户环境下进行测试,而且时间也不集中】
- 测试的先后顺序不同【我们肯定是先内部测试,然后再进行公测,也就是阿尔法测试测试先于贝塔测试】
按是否查看代码划分
白盒测试

关注内部逻辑的具体实现,不关注外部功能是否实现,简单来说就是需要查看代码进行测试。
黑盒测试

不关注内部逻辑的具体实现,只关注外部功能是否实现。简单来说就是不需要查看代码进行测试。
灰盒测试

他既要关注外部功能是否实现,要关注内部逻辑是否实现。
按照测试对象是否运行划分
动态测试
指的是运行被测系统进行的测试,然后查看实际结果是否和预期结果一致,我们一般进行的都是动态测试,比如:你要去启动微信,你才能测试。
静态测试
指的是不运行被测系统进行的测试,它体现的方式比较多,比如文档检查,代码检查,桌面检查。
按照测试的测试手段划分
手工测试
手工测试也叫做点点点测试,就是你自己去点击的测试。
自动化测试
然后自动化测试是指通过代码或者工具对系统进行自动化测试。
按照测试的内容来划分
功能测试
对被测程序的功能进行测试,我们叫做功能测试。
界面测试
对系统界面进行的测试,我们称之为界面测试。比如我们一般检查它的颜色,布局,设计,字体有没有错别字等等。
安全测试
他是为了去确保你这个系统能够抵御恶意攻击,保护数据源和保持功能性的过程。比如我们的黑客。
常见的一些安全问题,比如sql注入。
兼容性测试
指的是在不同的运行环境,比如在不同的浏览器,我们去进行运行系统,查看系统的功能是否符合要求。
易用性测试
站在用户的角度去查看这个软件是否操作方便,是否容易被理解。
性能测试
指的是在大量用户使用的场景下,查看系统是否正常。
其他划分
冒烟测试
它的概念就是进行系统测试之前就要进行的测试,它也叫做确认测试。
为什么要进行冒烟测试?贸易测试的主要目的是什么?

他测试的时间/什么时候进行冒烟测试:进行系统测试之前需要完成的。
为什么要冒烟测试?==》就是先验证一下你的基本功能是否符合我们的需求,如果确认不通过,那就让开发人员在开发完成之后,再给测试人员。举个例子,接电正负极,如果你都接不对的话就会冒烟,那么这个电路就跑不通,连基本的条件都达不到,就不用谈后面的使用和测试,所以这就是冒烟测试。
我们的冒烟测试内容是对核心功能进行测试。
如果冒烟测试通过,那么就转到测试部门进行正式的测试,如果冒易测试不通过,就打回开发部门。
回归测试
什么时候进行回归测试:对已修复的bug进行测试,比如我们测试人员找到bug之后,是不是就不管了呢?并不是,而是把这个bug告诉我们的开发人员,然后开发人员修复完之后,你还得再拿来测试一遍,并不是说他修改完你就不管了。
如何进行回归测试[测试的内容]:
- 对已修复的bug进行测试。
- 同时对与bug相关联的功能进行测试覆盖。
随机测试/探索性测试
根据自己的经验而进行的测试,他一般是作为测试的补充。