软件测试&软件测试分类
软件测试
软件是计算机程序(e.g. qq)、程序所用的数据(e.g. 账号登录、好友列表)以及有关文档资料(e.g. 勾选用户使用协议、帮助文档)的集合。
软件测试的对象:计算机程序、程序所用的数据、文档。
软件包括系统软件和应用软件。
-系统软件:生成、准备和执行其他程序所需要的一组文件和程序,e.g.windows、SQL、java。
-应用软件:e.g. QQ,微信,包含两种架构:C/S架构与B/S架构。
–C/S架构:client-server,要安装客户端才能用的软件。
—缺点:每次更新都需要更新服务端与客户端,人力物力很大。
–B/S架构:browser-server,只需要一个浏览器就可以访问服务的,e.g. 淘宝,京东。
—优点:只需要更新服务端,不用更新浏览器。
测试的目的:
1.发现程序(软件)存在的代码或业务逻辑错误。(找到bug)
2.检测产品是否符合用户需求。(提高质量)
3.提高用户的体验。
软件测试的分类
按测试阶段划分:单元测试、集成测试、系统测试、验收测试。
-单元测试:测试程序代码(由多个模块或函数组成)。(执行者:开发人员)
-集成测试:把多个模块/函数组装到一起进行的测试。(执行者:开发人员)
-系统测试:计算机程序+外设+网络等元素进行的测试。(执行者:开发人员)
-验收测试:以用户为主进行的测试。包括Alpha测试、Beta测试。(执行者:测试人员)
–Alpha测试:把用户请到开发方对软件进行的测试,测试环境受开发方控制,测试人不多,测试时间比较集中。
–Beta测试:测试环境不受开发方控制,测试人较多,测试时间不集中。(e.g. 安装qq时,会有个beta版本)
两者区别:1.测试场所不同;2.先后顺序不同,一般先Alpha,再Beta。
按测试技术划分:黑盒测试、白盒测试、灰盒测试。
–黑盒测试:只需关注外部的输入输出,不需关注程序的内部逻辑。
–白盒测试:只需关注程序的内部逻辑,不需关注外部的输入输出。
–灰盒测试:既关注输入输出,又关注程序的内部逻辑。
按测试对象是否运行划分:动态测试、静态测试。
–动态测试:运行被测系统而进行的测试。
–静态测试:不需要运行被测系统而进行的测试。(界面检查、文档检查、代码走查)
按不同的测试手段划分:手工测试、自动化测试。
按测试包含的内容划分:功能测试、界面测试、安全测试、兼容性测试、易用性测试、性能测试。
–功能测试:验证软件的业务功能是否符合需求。
–界面测试:被测界面与原型图是否一致。
–安全测试:对被测系统的安全进行测试(e.g. 对账号进行多次输入用户名和密码,检查是否允许输入)。
–兼容性测试:被测系统在不同测试环境下是否正常(e.g. 在apple和Android系统下是否正常运行)。
–易用性测试:是否好用(e.g. 微信与qq的易用性,微信更适合普通大众)。
–性能测试:某个特定时间,用户数量剧增,软件是否正常。
其他测试:冒烟测试、回归测试、探索性测试。
–冒烟测试:在进行正式测试前,对主要核心功能进行的测试。
–回归测试:开发方对测试方测试出问题的功能进行修改后,再一次进行的测试。
–探索性测试:根据自己的项目经验而进行的随意测试。(体现测试思维)