1、软件测试概念
在规定条件下对软件系统进行审核、运行、评估,检验软件系统是否满足规定需求或者找出预期结果与实际结果之间的差别。为软件产品的质量和评价提供依据。
2、软件测试流程
软件测试流程是围绕软件开发生命周期(从可行性研究到需求分析、软件设计、编码、测试软件发布维护的全部过程)而展开的,从软件的开始到软件的结束
①了解和熟悉需求,对需求进行分析
②根据需求文档编写测试计划、测试用例、测试方案等
③准备测试环境、测试所需数据、技术等
④开发人员编码完成并提交测试,进行冒烟测试,验证软件主要功能是否正常,确认是否可以进入正式测试工作
⑤正式测试,根据已编写测试用例及测试经验进行测试,并记录缺陷以及跟踪缺陷
⑥测试完成后及时整理测试报告,以及补充完善测试用例文档等
⑦软件上线之后,跟踪线上问题并回归验证、以及进行常规回归测试等
3、软件测试分类
3.1 测试阶段分类:
单元测试、集成测试、系统测试、验收测试(包括正式验收测试、Alpha测试、Beta测试)
①单元测试:完成对最小的软件设计单元模块的验证工作。对迭代风格和规则、程序设计和结构、业务逻辑等进行静态测试。
②集成测试:通过测试的单元模块组装成子系统,然后再进行的测试,主要测试内容是接口。集成测试大部分是接口测试和交互测试。(自顶向下,自底向上)
③系统测试:将整个软件系统全部集成好之后作为一个整体进行的测试。主要包括的测试方向:
功能测试:对产品的各功能进行验证,以检查是否满足需求的要求。
性能测试:通过自动化测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
安全测试:检查系统对非法入侵的防范能力。
兼容测试:测试系统在不同的软硬件环境下是否能够正常的运行。
④验收测试:
Alpha测试:用户在开发环境下进行的测试,Alpha测试是在一个受控的环境中进行的。
Beta测试:由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者。
3.2 测试方法分类:
黑盒测试、白盒测试、灰盒测试
①黑盒测试:又称为功能测试或数据驱动测试,是针对软件的功能需求/实现进行测试,通过测试来检测每个功能是否符合需求,不考虑程序内部的逻辑结构。常用方法等价类划分、边界值分析、因果图、错误推测、场景法。
案例:黑盒测试用例设计方法一 (qq.com) 黑盒测试用例设计方法二 (qq.com)
②白盒测试:又称为结构测试或逻辑驱动测试,必须知道软件内部工作过程,通过测试来检测软件内部是否按照需求、设计正常运行,常见测试方法:逻辑覆盖(语句覆盖、分支覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖)、循环覆盖(简单循环、嵌套循环、串接循环)。
③灰盒测试:灰盒测试介于黑盒测试和白盒测试之间
3.3 被测对象是否运行的角度分类:
静态测试、动态测试
3.4 其他测试分类:
功能测试、安全测试、性能测试、负载测试、回归测试、冒烟测试、界面测试、兼容性测试、易用性测试、压力测试、恢复测试、探索性测试
①回归测试:对软件进行修改之后进行的测试,目的是检验对软件进行的修改是否正确。一是所做的修改达到了预定的目的,也就是确认测试,二是还要保证不影响软件的其他功能的正确性。
②冒烟测试:在软件中,“冒烟测试”是指测试版本的主要功能,如果能通过测试,才继续进行接下来的其它全功能测试。
对一个新版本进行大规模测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。目的是确认软件基本功能正常,可以进行后续的正式测试工作。
4、常见的开发模型
①瀑布模型
强调产品定义,各步骤是分离的,前一阶段完成后才能开始后一阶段。
缺点:无法回宿,测试在最后运行,惧怕需求变更。
②螺旋模型
一开始不必详细定义所有细节。从小开始,定义重要功能,努力实现这些功能,接受客户反馈,然后进入下一阶段。重复上述过程,直至得到最终产品。
缺点:需要经常风险分析。
③敏捷开发★★★
以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,在具备可视化、可集成和可运行使用的特征。
1) 敏捷开发过程:
①产品经理收集需求,形成产品代办列表
②项目团队参与迭代计划会,形成迭代任务
③开发团队进行具体地开发任务,每日站会
④开发团队进行成果演示(迭代评审会),产品经理,市场、高层,项目经理参与
⑤评审通过,产品上线。评审不通过,再对产品做修改
⑥开发团队与项目经理进行迭代回顾会,分析好的地方和需要改进的点
2)scrum开发中的四个会议:
·迭代计划会:需要做什么,怎么做,什么时间完成
·每日站会:昨天做了什么,有什么风险,今天计划做什么
·迭代评审会:大家评审迭代的产出,然后对待办事项做相应调整
·迭代回顾会:讨论哪里完成好,哪里需要改进
3)scrum中的三种角色:
·产品经理(Product Owner):产品负责人,明确整个产品的需求和定义。
·项目经理(Scrum Master):敏捷专家或者敏捷大师,确保Team按照Scrum的方式运行。
·开发团队(Dev Team):研发人员,包括开发、测试、UI等。
4)敏捷的四个价值观:
·个体与交互胜过过程和工具
·可用的软件胜过完备的文档
·客户协议胜过合同谈判
·响应变化胜过遵循计划
5、软件测试过程模型
①V模型
软件开发瀑布模型的变种,把测试过程作为在需求分析、概要设计、详细分析及编码之后的一个阶段,从左到右,描述了基本的开发过程和测试行为。
②W模型/双V模型
测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,还有需求、设计等开发输出的文档。有利于尽早地发现问题。
③H模型
将测试活动从开发流程完全独立出来,使测试形成一个完全独立地流程,只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行了。
6、测试用例
测试用例(Test Case)是对特定软件的具体功能模块的测试描述,由一组测试输入、执行条件以及预期结果等组成,以便测试某个程序路径或核实是否满足某个特定需求。
测试用例的主要包括以下内容:
用例编号、测试标题、重要级别、预置条件、测试输入、操作步骤、预期结果、实际结果、是否通过
7、缺陷管理
(3条消息) 软件测试之缺陷管理_liumeianywhere的博客-CSDN博客_缺陷管理的目的
8、测试计划的编写
软件测试 -- 编写测试计划 - shizhi57 - 博客园 (cnblogs.com)
9、web测试
10、app测试