1.是软件测试?
正向思维:测试是为了验证软件可以正常运行,评价一个程序或系统的特性或能力。软件测试是为了确定软件是否符合要求,是否达到期望的结果。
逆向思维:软件测试是为了发现软件种存在的错误而执行软件的过程,而不是证明软件没有错误。
狭义的:软件测试是指执行软件的过程。
广义的:软件测试是贯穿于整个软件开发周期当中的。
总结:软件测试是通过人工或自动化手段对软件进行运行或测量的过程,从而检验软件是否否满足规定要求,并找出与预期结果之间的差异。
2.为什么要进行软件测试?软件测试的目的是什么?
因为软件中存在各种各样的缺陷,问题(bug)
软件测试的目的:
1) 降低系统的风险
2)提高系统的质量
3)验证系统是否满足法律法规和行业标准
4)帮助管理者做出更加合理的决定
5)通过测试结果数据,可以帮助开发、测试改进工作
6)提高研发人员对产品质量的信息。
缺陷是怎么造成的呢?
人为因素:
1)开发人员的技能、开发水平导致的
2)开发人员的态度
3)开发的过程中沟通出了问题
4)开发工期被压缩
5)工作人员压力过大
6)需求的频繁变更
7)项目管理出现问题
其他因素:
1)软件开发工具本身存在缺陷
2)环境的影响
3)软件系统随时间推移越来越复杂
3.软件测试的分类
(1)按照开发阶段分:单元测试、集成测试、系统测试、验收测试、(回归测试)等
单元测试(UT):测试应用程序里边的类、函数、模块,是测试的执行的最小单元。
集成测试(IT):联调测试或模块与模块间的测试,测试函数间、模块间、类之间的一种测试。
系统测试(ST):就是从软件、硬件、环境等各个方面对产品进行整体、系统的测试。
验收测试(UAT):以用户为中心,用户参与设计测试用例,参与测试执行确定产品是否能够满足合同或用户所规定需求的测试。主要对主流程主业务进行相关验证,检查系统是否满足用户要求,而不需要对系统进行全面测试。软件验收测试的方法有两种:正式验收测试、非正式验收( Alpha测试、Beta测试)
回归测试:对之前已经测试过的功能模块进行再次测试叫回归测试,回归测试其实是穿插在系统测试和验收测试间的,并不是验收测试完了才可以做。
(2)按照是否关心软件内部结构、是否要查看代码分:
黑盒测试:不关注应用程序内部代码结构,代码逻辑,只测试应用程序外在表现,界面布局,功能实现的测试。(等价类、边界值、判定表、因果图、流程图、状态迁移图、正交试验法等方法)
白盒测试:主要关注应用程序内部代码是如何实现,代码逻辑如何实现的,而不管关注产品外在表现的测试。(语句覆盖、判定覆盖、条件覆盖、路径覆盖等方法)
灰盒测试:介于白盒测试和黑盒测试之间的测试。
(3)按照测试对象划分:
UI(界面)测试、兼容性测试、易用测试、安全测试、性能测试、安装卸载升级测试、文档测试、权限测试等。
兼容性测试:主要测试浏览器的兼容:IE,Firefox,Google chrome
易用性测试:主要测各个模块界面的控件,快捷键,布局,导航等
安全性测试:主要测试数据安全性,业务安全性,账号安全性
例如: 找回密码------手机号,验证码------修改密码—业务问题
(4)按照是否需要执行代码划分:动态、静态
(5)按照执行是否需要人工干预:手工测试和自动化测试
(6)按照测试地划分:本地话、国际话
4.软件测试模型
瀑布模型、V模型、W模型、H模型
5.软件生命周期
项目立项—需求分析—概要设计----详细设计—编码----单元测试—集成测试—系统测试—验收测试----维护—EOS(end of serverice)
6.软件测试流程
需求评审——测试计划——(测试计划评审)——设计测试方案——(测试方案评审)——设计测试用例——用例评审—————测试执行——回归测试——测试报告——上线