初识软件测试_(转)

第一章 – 理解软件测试

1. 软件测试的概念

  • 广义概念:指软件生存周期中所有的检查、评审和确认工作,其中包括了对分析、设计阶段,以及完成开发后维护阶段的各类文档、代码的审查和确认
  • 狭义概念:识别软件缺陷的过程,即实际结果与预期结果的不一致

2. 软件测试的目的

  • 测试的目的就是发现软件中的各种缺陷
  • 测试只能证明软件存在缺陷,不能证明软件不存在缺陷
  • 测试可以使软件中缺陷降低到一定程度,而不是彻底消灭 。
  • 以较少的用例、时间和人力找出软件中的各种错误和缺陷,以确保软件的质量 。

3. 软件测试的意义

  • 解放程序员和售后服务人员。
  • 软件测试可以降低软件质量风险,使程序员能够更专心于解决程序的算法和效率。
  • 同时经过严格检验的完整产品也减轻了售后服务人员的工作量。

4. 测试工作流程

(1)产品人员设计完原型和文档后,召开需求评审会,参会人员有开发,测试,产品。需求评审后之后,会产生一个完善之后的原型和需求文档。 
(2)测试组负责人需要依据需求文档,项目周期、项目特点、工具、人员安排制定测试计划。 
(3)测试人员就开始写测试用例(需要有冒烟测试用例和普通的测试用例),在写用例过程中会产生一些疑问,要及时和产品人员确认清楚,并要求他们回归需求文档。(开发就开始概要设计和编码)。 
(4)测试人员完成用例后,组织测试用例评审。参与人员有开发,测试,产品。 
(5)等待开发提交测试版本,提交后优先执行冒烟测试。冒烟测试的结果,需要邮件周知相关人,开发,测试,产品,其中重要的是开发领导,测试领导和产品。冒烟不通过等待开发重新提交版本,冒烟通过了进入执行用例进行测试阶段。 
(6)测试阶段会发现一些问题,比如需求定义不明确,业务逻辑有冲突,要和相关人员沟通并定义清晰,得到结论后必须要求产品人员更新文档。 
(7)每个人负责的模块测试结束后,小组内部要进行交叉测试(此时会进行一些性能测试)。 
(8)测试通过后提交产品验收。产品验收期间协助产品验收。 
(9)产品验收完毕后,项目部署仿真环境。此时需要线上的账号,所以一般也是产品和业务人员验收为主,各个公司情况不同,有些会给测试人员分配账号,进行基本流程的测试(细节视公司情况而定)。 
(10)仿真环境ok了,部署线上。 
(11)有些公司从测试环境提交验收的时间点开始,会要求写一些操作手册之类的文档,一些测试的报告,比如bug统计,bug的覆盖。

5. 测试基本工作

   计划(Program)

   用例(Case)

  • 测试用例,是为了实施测试而面向被测试的系统提供的一组集合,包含标题,模块,环境,操作平台,前置条件,操作步骤,输入数据,预期结果,附件,备注等。
    注意: 每一条测试用例都只有唯一的一条编号,一个功能点可能对n条测试用例
  • 参考网址:https://blog.csdn.net/weixin_43664254/article/details/89244714

测试用例解决的问题:

  • 不知道是否较全面的测试了所有功能
  • 测试的覆盖率无法衡量(测试覆盖率=测试用例的条数/软件的功能个数)
  • 对新版本的重复测试很难实施(新版本可以在旧版本基础上增加测试用例)
  • 存在大量冗余测试影响测试效率(将旧版本的测试用例个数进行删减)

   缺陷(Bugs)

   bug的定义: 当软件需求说明存在并且正确,程序与规格说明之间不匹配的地方,当程序没有实现最终用户合理预期的功能要求时,就是软件错误

   解决方法:
      a.第一时间找到问题解决问题
      b.版本的回滚

   总结(Summary )

第二章 – 理解软件开发

   1.什么是需求

  满足用户需求期望或正式规定文档所具备的条件和权能,包含用户需求和软件需求。
  需求是开发和测试的依据,需求不一定完全正确也需要进行验证。

   2.什么是事件流

  一个事件的操作流程

   3.什么是配置管理

  • 是通过技术或行政手段堆软件产品及其开发过程和声明周期进行控制、规范的一系列措施。
  • 目标:记录软件产品的演化过程,确保软件开发者在软件生命周期中各个阶段都能得到精确的产品配置。

4.软件生命周期(SDLC)的六个阶段

   1)、问题的定义及规划

  此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。

   2)、需求分析

  在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。“唯一不变的是变化本身。”,同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。

   3)、软件设计

  此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。

   4)、程序编码

  此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。

   5)、软件测试

  在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。
测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。

   6)、运行维护

  软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。

   5. 软件生命周期模型

  • 从概念提出的那一刻开始,软件产品就进入了软件生命周期。在经历需求、分析、设计、实现、部署后,软件将被使用并进入维护阶段,直到最后由于缺少维护费用而逐渐消亡。这样的一个过程,称为"生命周期模型"(Life Cycle Model)。
  • 典型的几种生命周期模型包括瀑布模型、快速原型模型、迭代模型。
    瀑布模型的特点(文档是主体),很多的问题在最后才会暴露出来。迭代模型比瀑布模型问题暴露的要早;快速原型法比瀑布模型直观。

第三章 – 测试策略

  单元测试

  • 完成对最小的软件设计单元—模块的验证工作
  • 目标是确保模块被正确地编码
  • 使用过程设计描述作为指南,对重要的控制路径进行测试以发现模块内的错误
  • 通常情况下是面向白盒的
  • 对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早地发现和解决不易显现的错误
  • 单元测试的内容 接口测试 ;内部数据结构;全局数据结构 ;边界覆盖;语句覆盖;错误路径

  集成测试

  • 通过测试发现与模块接口有关的问题
  • 目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构
  • 应当避免一次性的集成(除非软件规模很小),而采用增量集成
  • 集成测试主要内容
    • API
    • API/参数组合

  系统测试

  • 根据软件需求规范的要求进行系统测试,确认系统满足需求的要求
  • 系统测试人员相当于用户代言人
  • 在需求分析阶段要确定软件的可测性,保证有效完成系统测试工作
  • 系统测试主要内容
    • 所有功能需求得到满足  所有性能需求得到满足
    • 其他需求(例如安全性、容错性、兼容性等)得到满足

  用户验收/确认测试

  Alpha测试

  • 是由用户在开发者的场所来进行的,Alpha测试是在一个受控的环境中进行的

  Beta测试

  • 由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者

  压力测试VS性能测试

  •   性能测试的目的不是去找bugs,而是排除系统的瓶颈,以及为以后的回归测试建立一个基准。而性能测试的操作,实际上就是一个非常小心受控的测量分析过程。在理想的情况下,被测软件在这个时候已经是足够稳定了

  •   性能测试是为了检查系统的反映,运行速度等性能指标,他的前提是要求在一定负载下,如检查一个网站在100人同时在线的情况下的性能指标,每个用户是否都还可以正常的完成操作等。 概括就是:在不同负载下(负载一定)时,通过一些系统参数(如反应时间等)检查系统的运行情况;

  •   压力测试是为了发现系统能支持的最大负载,他的前提是要求系统性能处在可以接受的范围内,比如经常规定的叶面3秒钟内响应;概括就是:在性能可以接受的前提下,测试系统可以支持的最大负载。

  •   举例说明:针对一个网站进行测试,模拟10到50个用户就是在进行常规性能测试,用户增加到1000乃至上万就变成了压力/负载测试。如果同时对系统进行大量的数据查询操作,就包含了强度测试。

第四章 – 主流测试工具

   性能压力测试

名称优点缺点操作难度收费
loadrunner功能强大支持录制脚本商业版,收费。简单收费
jmeter功能强大支持录制脚本学习成本高中等免费
soapUI功能强大支持录制脚本学习成本高困难收费
Selenium+TestNG不能生成测试报告学习成本高困难免费
HTTPLoad功能简单,只能简单压力测试学习成本简单免费

   功能测试

名称优点缺点收费客户端录制支持语言
katalon功能强大,操作简单新软件,用户不多,教程少免费YesJS
Selenium功能强大,操作繁琐无客户端,安装繁琐免费Yes多语言
QTP功能强大,操作简单需要收费收费YesVBS

   接口测试

名称优点学习成本收费客户端录制
Jmeter~~~免费Yes
soapUI~~~收费Yes
postMan~~~免费Yes
Curl~~~免费No

   安全测试

名称优点缺点收费客户端
APPScan针对WEB应用进行自动安全扫描学习成本第收费

   测试管理工具

名称优点缺点收费客户端
禅道功能多样,使用与整个项目管理全部内容需要收费~Yes
BugZilla只能用来管理缺陷,生成测试报告安装繁琐免费No

备注:目前就能想到这些,后续会介绍软件如何使用!

本文参考其他博客地址:

作者:释梦燃
原文:https://blog.csdn.net/ShiMengRan107/article/details/70226131
作者:enjoymyselflzz
原文:https://blog.csdn.net/enjoymyselflzz/article/details/80951055
作者:Liu_KH
原文:https://blog.csdn.net/Liu_KH/article/details/78599196
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值