软件的定义:
软件是计算机程序、程序所用的数据以及有关文档资料的集合
软件的分类
1:系统软件:生成,准备或执行其他程序所需要的一组文件与程序。如操作系统Windows,数据库oracle,驱动程序,java语言系统编译环境
2:应用软件:计算机为了解决某些具体问题而购买,开发,研制的各种程序或软件包。如APP,QQ,微信
软件测试的对象:
测试相关的程序,以及与程序用到的数据和有关文档资料
应用软件的两种架构形式:
B/S架构:
Browser-server,客户无需安装客户端,使用浏览器即可访问服务
优点:每次更新服务器端即可,无需更新浏览器,用户主动性较高
缺点:过分依赖网络,没有网络时无法使用服务
C/S架构:
Client-server,需要安装客户端才能使用
缺点:每次更新,都需要更新服务端与客户端
优点:可以缓存部分数据到本地,缓解服务器端压力.某些功能在没网时候也可以正常使用
q:淘宝属于什么架构?
a:淘宝web端属于B/S架构,App端属于C/S架构。
软件测试定义:
使用人工和自动手段来运行和测试某个系统的过程,目的在于检测它是否满足规格需求,检验预期结果和实际结果之间差别
软件测试目的:
1):发现软件存在的代码或者业务逻辑错误
2):检验产品是否满足用户需求
3):提高用户体验
软件测试分类:
<1>按测试阶段划分:单元测试,集成测试,系统测试,验收测试
- 单元测试(UT):主要测试程序代码,为的是确保个单元模块被正确的编译,比如具体到某模块的测试,也有具体到类、函数、方法的测试等。通常由开发完成
- 集成测试(IT):单元测试后,将各个单元合成完整的体系,测试软件单位之间的接口是否正确,数据能否正常传递。比如说注册和充值这两个功能是否连通.比如接口测试。测试/开发完成
- 系统测试(ST):把软件系统搭建起来后,按照软件需求规格说明书中的要求,测试软件性能功能等是否满足用户需求。(根据测试用例,进行完整的系统测试)测试完成
- 验收测试(UAT):主要就是用户在拿到软件的时候,在使用现场,会根据前边所提到的需求,以及规格说明书来做相应测试,确定软件达到预期效果(用户对软件进行验收)测试完成
备注:UAT测试分为正式验收测试,非正式验收测试(Alpha测试,Beta测试)
正式验收测试:部分用户,对该产品进行一个非常详细的测试,且有具体的测试流程
Alpha测试:用户在模拟正式环境(测试环境下进行测试)
Beta测试:用户在生产环境进行测试
<2>按测试技术划分:白盒测试、黑盒测试、灰盒测试
1.白盒测试(结构测试/逻辑驱动测试)-单元测试
把测试对象看做一个打开的盒子,掌握内部代码逻辑
2.黑盒测试(功能测试/数据驱动测试) -功能测试
不关心内部代码逻辑实现,比对数据输入后,比对输出结果与预期结果差距
3.灰盒测试-接口测试
介于白盒黑盒之间,了解部分逻辑,不如白盒了解内部代码逻辑详细完整,但比黑盒更关注内部程序逻辑
<3>按被测试对象是否运行划分:静态测试、动态测试
1.静态测试
测试不运行是的部分,根据文档如产品说明书,对软件进行检查审阅
2.动态测试
运行软件来检验软件的动态行为和结果正确性
<4>按不同测试手段互粉:手工测试、自动化测试(功能自动化、性能自动化)
1.手工测试:
利用测试人员手动逐条输入测试数据,比对观察结果
2.自动化测试:
利用自动化工具代替测试人员输入测试数据,执行测试用例
<5>按测试内容划分:功能,界面,兼容性,安全,性能,易用性
1.功能测试:
保证软件功能的正常
2.界面测试:
检验软件的UI界面显示正常
3.安全测试:
模拟非授权内部或外部人员,尝试各种方式对被测软件发起入侵(sql注入攻击,跨站脚本攻击,DDOS(分布式拒绝服务攻击)),检测系统是否存在安全漏洞
4.兼容性测试:
模拟不同设备不同浏览器不同系统不同版本等条件下,软件的兼容性包含硬件与软件
5.易用性测试:
功能可以正常使用,模拟用户操作体验,看操作是否符合用户操作习惯呢
6.性能测试(负载测试,压力测试):
性能测试:模拟正常,峰值,异常条件下测试系统的性能指标
压力测试:并发不变,查看持续一段时间后服务器状态
负载测试:增大并发,查看服务器状态
q:测试旧版本在不强制升级情况时依然能正常使用属于什么测试?
a:功能测试.功能测试中包含强制升级测试与非强制升级测试,非强制升级测试时需要测试旧版本功能依旧可以正常使用,因此应为功能测试
<6>其他测试:冒烟测试,回归测试,探索性测试/自由测试
冒烟测试:
测试软件基础功能是否可以正常使用
回归测试:
开发将bug修复后,验证缺陷是否被修复,保证修复的缺陷不会重现。同时测试所有可能影响的功能点,验证修复未对其他相关功能产生影响。推荐使用自动化跑批处理所有回归测试用例
探索性测试:
发挥测试人员主观能动性,对可能存在缺陷的功能点设计执行测试用例
作业Q&A:
Q1:什么是软件测试?软件测试目的是什么?
A1:软件测试指使用自动或手动手段执行和测试软件的过程
软件测试目的:
1:发现软件中存在的代码或业务逻辑错误
2:检验软件是否符合用户需求
3:提高用户体验
Q2:软件测试分类有哪些?
A2: 1:按测试技术划分:白盒测试、黑盒测试、灰盒测试
2:按被测试对象是否运行划分:静态测试、动态测试
3:按不同测试手段互粉:手工测试、自动化测试(功能自动化、性能自动化)
4:按测试内容划分:功能,界面,兼容性,安全,性能,易用性
5:其他测试:冒烟测试,回归测试,探索性测试/自由测试
Q3:什么是黑盒测试?
A3:不关心内部代码逻辑实现,比对数据输入后输出结果与预期结果差距的测试