软件缺陷管理*
1:软件缺陷的定义
软件缺陷就是开发时出现的Bug,软件无法正常运行:
1:软件未达到产品说明书标明的功能
2:软件出现了产品说明书上标明不会出现的错误
3:软件功能超出产品说明书标明的范围
4:软件未达到产品说明书上没有指出来的功能,如密码是明文
5:软件难以理解,不易使用,运行速度慢或从测试人员的角度看最终用户认为不好,如一个通讯App里面找不到聊天界面
导致软件缺陷的原因*
1:需求不明确和经常变更,软件需求不清晰或者开发人员对需求的理解有偏差,导致软件设计偏离用户的需求目标。还有就是在开发中客服频繁更新需求也会影响软件的缺陷。
2:软件结构复杂
3:编码问题
4:项目期限短
5:使用新技术手段,可能因为开发人员不熟悉新的技术
软件缺陷分类*
1:测试种类:界面类,功能类,性能类,安全类,兼容性类
2:缺陷严重程度:严重,一般,次要,轻微
3:缺陷优先级:立即解决,高优先级,正常排队,低优先级
4:缺陷发生阶段:需求阶段缺陷,架构阶段缺陷,设计阶段缺陷,编码阶段缺陷,测试阶段缺陷
常见软件缺陷管理工具
禅道,Jira
软件测试模型*****
V模型顾名思义V字型,左边下降是开发阶段的,右边上升是测试阶段的。
V模型的优点在于它非常明确标明了测试过程中存在的不同级别,清楚的描述了这些测 试阶段个开发阶段对应的关系
W模型相对于V模型比较科学,W模型是基于V模型,但是W模型它是开发和测试同时进行的,这样就尽早的可以发现问题去解决问题
优秀的软件测试工程师的基本素质
1:思维缜密,端正的测试态度,良好心里素质。
2. 参与需求讨论,制订测试计划,确保测试能顺利执行并完成;
3. 负责项目的功能性测试、用户体验测试、兼容性测试以及性能测试 ;
4. 负责测试用例的编写;编写测试报告和对测试结果分析;
5. 与开发人员、产品经理沟通和协作,推动整个项目的顺利进行;
6. 负责软件开发团队项目进度管理工作;
7. 熟悉Linux常用命令,熟悉常用数据库,熟练使用基本的SQL语句;
8. 熟练使用Loadrunner,Jmeter等至少一种性能测试工具。
软件测试的内容
程序测试包括:逻辑功能,界面,性能,易用性,兼容性,安装等,还有文档测试,排版,字体大小。
软件测试环境
测试环境=硬件+软件+网络
硬件环境:PC还是笔记本
软件环境:不同的操作系统Windows10,8,7,Mac,Linux和不同浏览器
网络:局域网还是互联网
软件的测试流程
软件测试的原则
基本原则:
1:测试显示软件存在缺陷
测试只是能证明软件存在缺陷,但证明不了软件中不存在缺陷,测试只是为了降低软件缺陷的可能性,即便没有找到缺陷也证明不了这个软件就是完美的没有缺陷的。
2:穷尽测试是不可能的
软件的规模越来越大,复杂的程度也越来越高,测试不可能做到完全测试,在测试的阶段,测试人员可以根据风险和优先级来进行集中和高强度测试,来确保软件的质量。
3:测试尽早介入
为什么说测试要尽早的进入,1:测试尽早进入能够确保软件的质量。2:在需求阶段介入的话可在开发前发现缺陷提出缺陷,这样可以降低公司成本,越早发现修复成本越小
4:缺陷集群性(2/8原则)
缺陷集群性表明小部分模块包含大部分缺陷,软件测试中存在Pareto原则,就是80%的缺陷发现在20%的模块中,一个功能模块发现的缺陷越高,那存在未发现的缺陷就越高,与已发现的缺陷和未发现的缺陷成正比
5:杀虫剂悖论
举个例子比如杀虫剂,如果我们一直用一种杀虫剂的话,那么有的虫子生命力比较顽强的话体内可能就会形成一个免疫系统,在我们软件测试中也是,如果我们一直用一种测试方式去进行测试的话可能就不会发现别的Bug。
解决方案:
1:测试用例应当定期修订和评审
2:增加新的或者用不同的测试用例帮助发现更多的缺陷
3:测试人员不能一直依赖当下的技术,应当去提升测试的方法提高测试效率
6:测试活动依赖于测试内容
根据业务的不同,软件测试内部也分为不同的行业,比如游戏行业、电商行业、金融行业。不同的 行业,测试活动的开展都有所不同,比如测试技术、测试工具的选择,测试流程都不尽相同,所以 软件测试的活动开展依赖于所测试的内容。
7:没有错误是好是谬论
有可能99%没有bug的软件也是不能使用的。如果对错误的需求进行了彻底的测试,这种情况就发 生了。软件测试不仅是找出缺陷,同时也需要确认软件是否满足需求。如果开发出来的产品不满足 用户的需求,即便找到和修复了缺陷也作用不大。
8:程序员不能自测之后就上线
9:严格执行测试计划,排除测试的随意性
10:应当对每一个测试结果做全面的检查
11:妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便
12:设计测试用例时,应当包括合理的输入数据和不合理的输入数据
13:测试用例应由测试数据和与之对应的预期输出结果这两部分组成
软件测试分类
软件测试分为四个分类:按阶段划分,按是否运行程序划分,按是否查看源代码划分,其他
1:按阶段划分:单元测试,集成测试,系统测试,验收测试。
单元测试:对一个模块,一个函数和一个类来进行正确性检验的方法
集成测试:单元测试后,把单独的模块按照设计的要求进行一个组合,进行一个集中的测试
系统测试:集成测试后,把硬件,软件看作一个整体,对系统的功能以及性能进行总体的测试
验收测试:系统测试后主要是以用户测试为主,或者测试人员参加检验产品的质量问题
2:黑盒测试,白盒测试,灰盒测试
黑盒测试:就是把我们的测试的软件看作一个黑色的盒子,我们不关心黑子里面的结构是什么样的,我们只关心,我们输入的数据和输出的结果。
白盒测试:白盒测试它是按照程序内部的逻辑结构和编码结构设计测试的
灰盒测试:灰盒测试它是一种基于程序运行时的外部表现同时又结合程序内部结构来设计测试的
3:功能测试
功能测试:界面测试,冒烟测试,回归测试,业务逻辑测试,易用性测试。
功能测试:根据产品操作描述和需求文档,测试一个产品的特性和可操作行为是否满足用户需求的 测试方法
界面测试:测试用户界面的功能模块的布局是否符合客户使用习惯,界面操作便捷性、导航简单易 懂性的测试
冒烟测试:验证系统的核心功能是否能够正常运行的测试方法
回归测试:指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错 误的测试方法
业务逻辑测试:在基本的功能点都已合格的基础上,准备多种测试数据,来驱动各种约束条件下业 务流程,确定最终输出的结果是否符合预期的测试
易用性测试:指用户使用软件时是否感觉方便的测试
4:性能测试
1:性能测试:通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标 进行校验的测试方法
2:压力测试:通过逐步增加系统负载,测试系统性能的变化,并确定在什么条件下系统性能处于失效 状态
3:负载测试:通过逐步增加系统负载,测试系统性能的变化,在满足性能指标的情况下,系统所能承 受的最大负载量的测试
4:并发测试:是一个负载测试和压力测试的过程,即逐渐增加并发用户数负载直到系统的瓶颈,通过 分析资源监控指标等来确定系统并发性能
5:兼容性测试
冒烟测试、随机测试、安全性测试、探索性测试、回归测试、Alpha测试、Beta测试
1:随机测试:随机测试主要是根据测试者的经验无需测试用例对软件进行功能和性能抽查的测试方法
2:安全性测试:通过不同的测试方法,检验程序、网络、数据库安全性的测试方法
3:探索性测试:碰到问题时能随机应变,强调测试人员的主观能动性明确整体的测试计划的测试方法
4:Alpha测试:俗称内测,α测试。内部环境下的测试;开发人员或测试人员在现场
5:Beta测试:俗称外测、公测,β测试。生产环境下的测试;开发人员和测试人员都不在现场