一、软件测试基础
二、测试级别
三、系统测试类型
四、软件测试方法
五、软件质量
六、系统测试流程
七、测试用例格式
八、用例设计方法
1.什么是软件测试?
软件测试定义:使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。或者:为了发现程序中的错误而执行程序的过程。
软件测试存在的意义:
①程序测试为了发现程序存在的代码或业务逻辑错误;
②软件测试为了检验产品是否符合用户需求(充分站在用户的角度);
③软件测试为了提高用户的体验。
2.软件测试的原则
1、测试应该尽早介入。
2、所有的测试都应追溯到用户需求。
3、程序员应该避免检查自己的程序。除了单元测试。因为程序员对于自己的作品,思维具有局限性。无法保证测试质量。交给第三方或者专业测试,运用各种测试技术,利用丰富的测试经验和对BUG的敏感,去提高软件的质量。
4、设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下还要制造极端状态和意外状态。
5、二八原则,测试发现的错误中80%很可能起源于20%的模块中。
6、对错误结果要进行一个确认过程(分清必现和偶然)。
7、制定严格的测试计划。
8、完全测试时不可能的,测试需要终止。
9、妥善保存测试过程中所有文档。
3.软件测试的分类
按测试阶段划分:单元测试(开发的自测行为)、集成测试(多个模块共同测试)、系统测试(完整的、全面的测试)、验收测试(正式验收测试、Alpha测试(开发和测试都不能参与,由用户进行测试,前期,非真实环境)、Bate测试(开发和测试都不能参与测试,由用户进行测试,后期,真实环境下测试))
按测试技术划分:白盒测试、黑盒测试(主流)、灰盒测试
按测试对象是否运行划分:动态测试、静态测试(文档检查、代码走查、界面检查)
按不同的测试手段划分:手工测试、自动化测试
按测试包含的内容划分:功能测试(等同于黑盒测试,点点点)、界面测试(不会专门做,做功能测试时会同时做这个)、安全测试、兼容性测试(ios、安卓)、易用性测试(不会专门做,做功能测试时会同时做这个)、性能测试、压力测试、负载测试、恢复测试(灾备,若出现奔溃,需要多久自我修复)
其他测试:冒烟测试(在真正测试之前,会先进行主干测试,若主干测试都无法通过,则不再进行测试)、回归测试(首先看bug是否真的修复,再次看bug修复后是否影响到与其有关的本来正常的功能)、探索性测试(测试思维)(随机测试)
4.软件生命周期(十分重要)
软件生命周期(SDLC,System Development Life Cycle)是软件开始研制到最终被废弃不用这整个过程叫做软件生命周期,整个生命周期包括问题定义及规划、需求分析、系统设计、软件编程、软件测试、软件维护等阶段。
一、问题定义及规划(参与人员:老板、产品经理(主导)、研发经理、项目经理、需求分析师)
主要确定软件的开发目的及其可行性。制定开发计划(软件需求说明书、原型图)。
二、需求分析/评审(原型图/软件需求说明书、主持—>产品经理 其他参与:研发 设计 测试)
在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析,明确客户的需求,输出需求规格说明书(原型图)。(关注一个问题:测试参与这个需求分析的目的是什么?产品用途,功能如何实现)
三、软件设计(属于开发的工作)
把需求分析得到的结果转换为软件结构和数据结构,形成系统架构。
概要设计:主要是架构的实现,指搭建架构、表述各模块功能、模块接口连接和数据传递的实现等项事务。(数据库、表等框架性的东西)
详细设计:对概要设计中表述(伪代码的级别)
四、软件编码(开发编码,与测试无关)
五、软件测试
在软件设计完成后要经过严密的测试,以及发现软件在整个设计过程中存在的问题并加以纠正。测试的方法主要有白盒测试和黑盒测试两种。
其中,开发:单元测试;开发or测试:集成测试、接口测试;测试人员:系统测试;客户or产品经理:验收测试(α测试、β测试)
单元测试:主要测试程序代码,为的是确保各单元模块被正确的编译,比如有具体到模块的测试,也有具体到类、函数的测试等。----一般是开发来完成。
集成测试:单元测试后,将各单元组合成完整的体系,测试软件单位之间的接口是否正确、数据能否正常传递。----比如说注册和充值这两个功能是否能够连通。
系统测试:把软件系统搭建起来,按照软件规格说明书所要求,测试软件其性能功能等是否和用户需求符合,在系统中运行是否存在漏洞等。-----根据测试用例,进行完整的系统测试。
六:运行维护阶段(版本上线,产品上线;版本升级;bug修复)
5.软件测试的工作流程:
接触人员:开发,产品经理,客服(用户反馈问题),实施/技术支持/现场实施,设计师;
测试工作流程:
①需求分析:1.阅读需求/理解需求 2.整理需求 3.有疑问的地方需要讨论,弄明白为止;
②软件测试计划:一个文档,测试负责人/小组长制定计划;
文档包含内容:
目的:完成测试,何时终止,达成什么样的目标;
参与人员:谁参与,成为测试小组;
任务划分:谁负责哪个功能模块的测试/用例的编写;
时间规划:什么时候写用例,什么时候测试,什么时候解释,什么时候上线;
出具的文档:用例bug表单 软件测试报告;
资源的申请/准备:申请一台服务器?我要做什么类型的测试?需要准备什么样的工具?
③测试设计阶段:写测试用例
评审(相互检查),修改:理解错误:改正;需求变更:修改,
④软件测试的执行阶段
1.测试前,进行冒烟测试,通过继续测试,不通过,打回
2.根据测试用例执行测试:发现bug提交bug管理系统;修复后,检验,再进行回归测试。
⑤评估阶段
测试完毕,出具测试报告:1.测试通过,上线; 2.测试不通过,打回,修改
6.软件生命周期模型
作为测试工程师,我们最关心的三件事:
1.测什么?(最关注的问题)2.怎么测?3.什么时候测?
测试的计划是跟开发的计划走的
学习目标:
1.什么是软件测试需求?
2.软件测试需求的必要性
3.如何对软件测试需求进行分析(重点)
功能、易用、界面、权限
4.需求分析对开发和测试的影响
3.软件测试流程
设计、执行、总结
4.常见面试笔试题
测试结束的标准是什么:系统测试缺陷报告跟踪完毕,系统测试报告通过审批。测试用例执行完毕、用例通过率>98%。不存在严重bug。
执行测试用例的时间:一般为3-6个月,起码3个月,但留给测试的可能只有7天。
软件测试用例的设计方法——四大金刚
1.等价类划分法
1.等价类划分法的概念
等价类划分法是一种典型的、重要的黑盒测试方法,是指某个输入域的子集合。在该子集合中,所有的输入数据对于揭露软件中的错误是等效的。
等价划分分为有效等价类和无效等价类,有效和无效是根据条件划分的。
2.错误推测法
输入错误的信息进行检测,看测试程序对错误情况的处理能力。
3.边界值分析法
1.定义:边界值分析法是对等价类划分法的一个补充,边界值一般都是从等价类的边缘值去寻找。边界值分析的基本思想:正好等于、刚刚大于、刚刚小于边界的值做为测试数据。
注意:0和负数都是一个特殊值,我们在考虑边界值的时候同时也要考虑特殊值。
4.场景法(功能做好了才用)(xmind)
整个流程的描述,例如ATM取款流程
7.什么是测试用例
测试用例(TestCast)是为项目需求而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序是否满足客户需求。
可以总结为:每个测试点的数据设计和步骤设计。
7.1测试用例的重要性
1.测试用例是软件测试的核心
软件测试的重要性是毋庸置疑的,测试用例是测试工作的指导,是软件测试质量稳定的保障。影响软件测试的因素很多,如软件本身的复杂程度,开发质量,测试方法和技术的使用。但有些因素是客观存在,不可避免的,如IT团队的流动、环境、情绪等。
2.评估测试结果的基准
测试用例的通过率以及错误率,是测试结束的一个重要依据,用来判断该软件测试结果是否通过,能否达到上线的标准。
3.保证测试的时候不遗漏测试功能点。可以在测试人员疲累的时候起到引导作用。
4.在编写测试用例过程,可以熟悉需求,对系统架构或者业务流程有一个整体的、深入地了解。
5.好的测试用例不仅方便自己和他人查看,而且能帮助设计的时候考虑的更周全,因此测试用例的写作和设计一样,很重要。指导性。
7.2测试用例的八大要素
1.用例编号:产品名-测试阶段-测试项-xxx
2.测试项目:对应一个功能模块(细分功能)
3.测试标题:直接对测试点进行细化得出,输入内容+结果,同一功能模块标题不能重复(一句话说清楚测试点是什么)
4.重要级别:高/中/低
5.预置条件:需要满足一些前提条件,否则用例无法执行(用例可写也可不写)
6.测试输入:需要加工的输入信息,根据具体情况来设计(跟步骤结合起来一定要具有指导性意义)
7.操作步骤:明确给出每个步骤的描述,执行人员可以根据该步骤完成执行工作。
8.预期结果:根据与其输出比对实际记过,来判断被测对象是否符合需求。(预期结果唯一)
9.实际结果:
7.3测试用例使用工具
excel和xmind(都要会用)
8.bug的生命周期(重点)
8.1 bug的定义
软件的Bug,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节、或与需求文档存在差异的功能实现等。
测试工程师的职责是:发现BUG,并提交给开发,让开发去修改。
8.2 bug的类型
要确定一个bug的类型,需要对项目(或产品)有比较深的理解。这个划分对于开发定位问题影响很小,但对问题类型的统计就比较重要了。
常见bug类型划分(禅道系统为例,可自定义):
代码错误
设计缺陷
界面优化
性能问题
配置相关
安装部署
安全相关
标准规范
测试脚本
其他
8.3bug的等级
1,2,3,4级,1级最严重的bug;3属于正常bug。
(1)致命错误:
1.常规操作引起的系统崩溃、死机、死循环,比如对话框输入信息造成程序崩溃;
2.造成数据泄露的安全性问题,比如恶意攻击造成的账户私密信息的泄露;
3.涉及金钱的方面,例如:用户余额为零,却能消费
(2)严重错误:
1.重要功能不能实现;(比如用户无法注册)
2.错误的波及面广,影响到其他重要功能正常实现:功能交互
3.非常规操作导致程序的崩溃、死机、死循环等;
4.外观难以接受的缺陷;
5.密码明文显示(界面+数据库)。
(3)一般错误:
不影响产品的运行、不会成为故障起因,但对产品外观和下道工序影响较大的缺陷。
1.次要功能不能正常实现;
2.操作界面错误(包括数据窗口内列名定义,含义不一致);
3.查询错误,数据错误显示;(张冠李戴)
4.简单的输入限制未放在前段进行控制;(格式限制)
5.删除操作未给出提示;
(4)可忽略错误
例如错别字,或测试人员觉得软件设计不美观等。
8.4bug的生命周期
测试(发现并提交bug至管理系统中)——>指派给对应开发人员
——>开发人员先确认是否是自己的bug,若是,确认;不是,打回测试;不是bug,不予解决,因为不是bug;或延期解决。设计如此;无法重现。——>对于打回的bug,测试再次确定需求,若的确是bug,则再次激活发给开发。——>对于修复后的bug,测试进行回归测试或验证测试,若已经解决,就直接关闭。若还未解决,再次打回给开发。
客服(客户反馈的问题)——>发给测试,若是bug,提交,若不是就告诉客服是客户的操作问题。
测试(需求的确定,需求的变更,和开发扯不清楚)——>产品经理
---------------------
缺陷状态说明
新建:测试中新建的软件缺陷,还没有提交给软件工程师。一般由测试负责人进行评估,如果属于缺陷,修改为“打开”状态;如果不属于缺陷,修改为“取消”状态。
打开:测试中新建的软件缺陷,已提交给相关软件工程师。
待讨论:存在争议,需要软件工程师、需求人员和测试工程师共同确认;该状态是临时状态,在进入最后一轮ST测试执行之前,必须进行处理。
已修复:软件工程师已修正缺陷,等待测试工程师进行验证。
已发布:软件工程师已提交修复版本,并且版本管理员已将修复版本发布到测试环境。
项目内暂不处理:由于各种原因,提交的缺陷需要在后续版本才能修改,或者不修改。项目内暂不处理的缺陷需要由需求人员、软件工程师和测试工程师最终确认。对准备修改的缺陷,在进入最后一轮ST测试执行之前,测试工程师就必须和需求人员、开发人员讨论确定是“转业务需求”还是“转内部需求”,在后续项目进行修复,或者在本项目最后一轮ST测试执行前修复。对一致认可但不准备修复的缺陷,或者不能重现的缺陷,可以将“项目内暂不处理”作为终态。
已否决:软件工程师认为不需要修改,或者按照设计就应该是这样的。对于非本项目或者非本人缺陷,由于设计变更或者版本变更之前的问题现在无法重现,不能否决。无理由否决的,测试工程师一律重新打开。
已分配:转发给其他人处理。也可以转给自己处理,转给自己处理时,表明软件工程师已接受此项缺陷。
重新打开:测试工程师对已修复的缺陷进行验证,发现缺陷仍旧存在。或者测试工程师认为已被否决的缺陷确实需要修改。
已关闭:缺陷已被修复,且回归测试验证成功。
非问题关闭:对于软件工程师否决的缺陷,如果测试工程师认为确实不属于缺陷,则将缺陷状态标记为“非问题关闭”。
转业务需求:该缺陷与业务相关,需要解决,但在本项目中不处理,由需求人员在后续版本中作为业务需求提出。
转内部需求:该缺陷主要是设计实现的问题,不涉及业务需求的变更,需要解决,但在本项目中不处理,由软件工程师在后续版本中作为内部改进需求提出。
取消:测试中新建的软件缺陷,由测试负责人进行评估,确认不属于缺陷,则将缺陷状态标记为“取消”。
====================================================================================================================================================================================================
缺陷严重度说明—非性能测试项目域
一、致命
该类缺陷如果发生会造成基本业务无法使用、或对其他业务造成严重影响、或对我行造成经济损失、法律纠纷、声誉影响等。
● 由于程序所引起的死机,非法退出或系统挂起。
● 死循环。
● 发生线程互锁、数据库死锁等严重资源争用情况。
● 数据转换错误,通讯程序不稳定或通讯程序错误。
● 主要功能缺失。
● 记账错误。
● 严重的数值错误,比如数据库或回单上的客户信息,余额,利息,积数,日期等。
二、严重
该类缺陷如果发生会造成部分业务功能无法使用、或对其他业务造成一定影响、部分功能实现造成较大的错误理解等。
● 影响业务进行的主要功能与需求不符。包括设计与需求不符,以及实现与设计不符。
● 非主要功能未实现。
● 程序引起的接口或数据通讯错误,导致数据缺失,信息传输错误等。
● 导致资金或是账务错误等关键字段的数值计算错误。
● 操作权限错误。
● 异常处理遗漏或错误。
● 存在严重性能问题。
● 显示或打印的关键信息格式与需求定义存在大的偏差。
● 关键的输入限制未进行控制。
三、一般
该类缺陷如果发生会对非主要功能造成影响、或者有较为快速方便的规避方式、有较小的错误理解等。
● 与设计文档不符的界面错误。
● 非主要功能实现不正确,但不影响业务进行。
● 非关键信息的计算错误,如页码的计算错误。
● 打印的非关键信息错误;由于内容超长导致的格式错误。
● 简单的输入限制未进行控制。
● 业务操作缺少交互式的确认提示信息。
● 错误提示信息错误。
● 系统处理速度较慢,可能存在性能风险。
四、较小
该类缺陷如果发生会使用户不方便或遇到麻烦,但它不影响执行工作功能或重要功能。
● 辅助说明描述不清楚。
● 显示格式不规范,界面有错别字。
● 长时间操作未给用户进度提示。
● 提示窗口文字未采用行业术语。
● 错误提示信息不清晰。
● 可输入区域和只读区域没有明显的区分标志。
● 界面布局不合理、用户体验效果不佳、操作界面与用户使用习惯不一致,但不影响系统正常使用。
● 建议。
五、建议及警告
针对系统功能实现方式、组织方式、界面布局、用户体验、易用性等方面提出的修改建议(此类缺陷不会给系统带来直接的负面影响或安全隐患)。
====================================================================================================================================================================================================
缺陷严重度说明—性能测试项目域
一、致命(P1)
该类缺陷如果发生会造成基本业务无法使用、或对其他业务造成严重影响、或对我行造成经济损失、法律纠纷、声誉影响等。
● 由于程序所引起的死机,非法退出或系统挂起。
● 死循环。
● 记账错误。
● 应用服务器或数据库服务器出现崩溃或不可用。
● 交易错误率>10%。
二、严重(P2)
该类缺陷如果发生会造成部分业务性能无法使用、或对其他业务造成一定影响、部分功能实现造成较大的错误理解等。
● 数据库出现严重锁等待、死锁。
● 严重线程阻塞。
● 5%< 交易错误率% <10%。
● TPS和响应时间严重不达标。
● 发现架构设计缺陷。
三、一般(P3)
该类缺陷如果发生会对性能造成一定影响、部分功能会出现一些错误。性能指标:1)错误率<10%;2)TPS和响应时间不达标;3)操作系统资源消耗过大。
● 0.5%< 交易错误率% <5%。
● TPS和响应时间不达标。
● 服务器资源消耗过大。
● 非功能测试案例不通过。
● 参数设置不合理。
四、较小(P4)
该类缺陷如果发生会不会影响到交易的性能,但客户体验上会相对比较差。
● 前端页面性能明显BUG。
五、建议及警告(P5)
已达到预期性能指标,但还可以提升性能的建议。
=====================================================================================================================================================================================================
缺陷类型说明
缺陷类型有三个一级类型分类,各个一级类型下有多个二级类型分类。提缺陷时,类型有二级类型时必须选择二级类型。
一级类型:01-功能性缺陷 二级类型:11-功能错误
● 实现与提供的需求不一致
● 使用的计算方法或计算公式错误
● 影响账务或可能导致法律纠纷的关键数据的计算错误,比如针对数据库和客户回单上账户余额、利息、积数、冻结金额、可用余额、额度等关键信息的计算错误
● 变量初始数据错误
● 系统数据初始化错误
● 数组越界或缓冲区溢出
● 数据结构或数据库表结构设计有问题
● 写入数据库表的内容错误,比如出现重复记账或表内账单边账
● 死循环
● 业务功能重复或缺失
● 业务功能实现与需求不符
● 流程控制不符合需求
● 流程实现不完整
一级类型:01-功能性缺陷 二级类型:12-用户界面错误
● 控件布局、格式不统一
● 界面控制错误
● 界面布局与界面规范不一致
● 打印或输出格式错误
一级类型:01-功能性缺陷 二级类型:13-通讯及接口错误
● 通讯接口不匹配
● 通讯接口数据转换错误
● 通讯程序不稳定
● 通讯程序错误
一级类型:01-功能性缺陷 二级类型:14-信息提示错误
● 提示信息重复
● 提示信息内容错误
● 提示信息内容模糊,不能准确判断错误原因
● 提示信息出现时机不对,或焦点位置错误
一级类型:01-功能性缺陷 二级类型:15-异常处理错误
● 程序未进行异常处理
● 异常处理不正确或者不合理
一级类型:02-非功能缺陷 二级类型:21-易用性错误
● 不符合常识或不符合操作习惯
● 操作使用不友好,不易操作等
一级类型:02-非功能缺陷 二级类型:22-性能错误
● 批量处理时间过长
● 联机业务响应时间过长导致资源争用,造成互锁或死锁问题,如线程同步问题或数据库锁等待
一级类型:02-非功能缺陷 二级类型:23-安全性错误
● 用户和权限控制错误
● 有SQL注入漏洞
● 有跨站点攻击漏洞
● 有其他安全性漏洞
一级类型:02-非功能缺陷 二级类型:24-兼容性错误
● 在不同操作系统、不同浏览器上的错误
● 与不同版本匹配出现的错误
一级类型:02-非功能缺陷 二级类型:25-安全性错误
● 数据错误
● 脚本错误
● 功能问题
● 硬件问题
● 环境问题
● 数据库问题
● 网络问题
一级类型:03-文档类缺陷 二级类型:31-评审类缺陷
● 各类评审活动发现的缺陷
一级类型:03-文档类缺陷 二级类型:32-其他文档错误
● 各类评审活动发现的缺陷
====================================================================================================================================================================================================
缺陷归属说明
项目内:表示该缺陷是由于该项目新增或者修改功能而导致的缺陷;
项目外:表示该缺陷不是由于该项目新增或者修改功能而导致的缺陷,是由于其他产品引起或该产品一直遗留的缺陷。若不在本项目解决,必须挂系统产品,状态设为项目暂不处理。如果项目外缺陷项目内修复,这缺陷归属需重新选择为项目内。
行外系统:表示该缺陷是由于行外系统导致的,但是如果该项目涉及到行外系统的再维护和开发,不属于此范畴。
如果认定为行外缺陷,则系统产品栏位需选择事先定义好的虚拟行外产品。
来源:oschina
链接:https://my.oschina.net/u/4401557/blog/3904624