分享

1.软件测试术语与简介

 15所 2021-01-12

1.1. 什么是软件测试

软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果和实际结果之间的差别.

1.2软件测试的目:

  1. 测试是为了发现程序中的错误而执行程序的过程。
  2. 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
  3. 成功的测试是发现了至今为止尚未发现的错误的测试。
  4. 测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性。
  5. 没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
  6. 根据测试目的的不同,还有回归测试、压力测试、性能测试等,分别为了检验修改或优化过程是否引发新的问题、软件所能达到处理能力和是否达到预期的处理能力等。

1.3 软件测试原则

  1. 测试人员应该尽早介入,要在需求阶段就开始介入,因为最严重的错误不外乎是系统不能满足用户的需求。
  2. 设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下还要制造极端状态和意外状态,如网络异常中断、电源断电等,即容错测试和容灾测试。
  3. 应该充分注意测试中的群集现象。
  4. 对错误结果要进行一个确认过程。安排其他人员尝试重现问题,并且做好定位于bug定级。
  5. 制定严格的测试计划。一定要制定测试计划,并且要有指导性。测试时间安排留好buff,不要希望在极短的时间内完成一个高水平的测试。
  6. 妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
  7. 是想以最少的人力,物力和时间找出软件中潜在的各种错误与缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患以及带来的商业风险。

注意:不要和软件测试的定义混淆

1.4. 软件测试发展历史

1.软件测试术语与简介

1.4.1. 1957年之前——调试为主(Debugging Oriented)

20世纪50年代,计算机刚诞生不久,只有科学家级别的人才会去编程,需求和程序本身也远远没有现在这么复杂多变,相当于开发人员一人承担需求分析,设计,开发,测试等所有工作,当然也不会有人去区分调试和测试。

1.4.2. 1957–1978——证明为主(Demonstration Oriented)

1957年,Charles Baker在他的一本书中对调试和测试进行了区分Debug和Testing: *调试(Debug):确保程序做了程序员想它做的事情 *测试(Testing):确保程序解决了它该解决的问题

1.4.3. 1979–1982——破坏为主(Destruction Oriented)

1979年,《软件测试的艺术》 (The Art of Software Testing)第一版问世,这本书是测试界的经典之作。书中给出了软件测试的经典定义: 测试是为发现错误而执行程序的过程。

1.4.4. 1983–1987——评估为主(Evaluation Oriented)

1983年,美国国家标准局(National Bureau of Standards)发布“Guideline for Lifecycle Validation, Verification and Testing of Computer Software”,也就是我们常说的VV&T。VV&T提出了测试界很有名的两个名词:验证(Verification)和确认(Validation) 人们提出了在软件生命周期中使用分析,评审,测试来评估产品的理论。软件测试工程在这个时期得到了快速的发展

1.4.5. 1988–至今——预防为主(Prevention Oriented)

预防为主是当下软件测试的主流思想之一。STEP(Systematic Test and Evaluation Process)是最早的一个以预防为主的生命周期模型,STEP认为测试与开发是并行的,整个测试的生命周期也是有计划,分析,设计,开发,执行和维护组成,也就是说,测试不是在编码完成后才开始介入,而是贯穿于整个软件生命周期。我们都知道,没有100%完美的软件,零缺陷是不可能的,所以我们要做的是:尽量早的介入,尽量早的发现这些明显的或隐藏的bug,发现得越早,修复起来的成本越低,产生的风险也越小。

1.5. 软件测试中专用名词解释

1.5.1. 测试用例

测试用例(Test Case),是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。 基本内容应当包含前置条件、测试步骤、预期结果,在测试用例执行后应当包含实际结果、测试结果、执行时间、执行人。有时候也需要加上数据准备、测试环境、测试脚本等等

1.5.2. bug

bug,直译成中文是臭虫的意思,很多人会把bug简单的理解为程序中个错误或异常。其实在软件测试中,对bug真正的定义应该是不符合需求的功能点

1.5.3. 冒烟测试

冒烟测试(smoking),这一术语来源于硬件行业,对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,

则该组件就通过了基本的测试。在软件测试中,通常是指产品到达可提测阶段后,对主流程或者基本业务的测试,通常冒烟测试点时间尽量在半天内完成,若冒烟测试不通过可以直接打回,拒绝进行第一轮测试。冒烟测试可以由开发同学完成, 也可以由测试同学完成。

1.5.4. 黑盒测试

黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试,在不考虑内部结构和内部特征、测试者只需要知道该程序输入和输出之间的关系或程序功能的情况下,依靠能够反映这一关系和程序功能需求规格的说明书,来确定测试用例和推断测试结果的正确性。软件的黑盒测试一般是用来确认软件功能的正确性和可操作性

1.5.5. 白盒测试

白盒又称结构测试、逻辑驱动测试或基于程序测试。它依赖于程序细节的严密检验,针对特定的条件和循环集设计测试用例,对软件的逻辑路径进行测试。在程序的不同点检验程序的状态,来判断真实情况十分和预期的状态相一致。软件的白盒测试一般用例分析程序的内部结构

1.5.6. 灰盒测试

灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅需要关注输出、输入的正确性,同时也需要关注程序内部的情况。灰盒测试不会像白盒那样详细和完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。

1.5.7. 单元测试

单元测试(unit test)是指对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,最小可测试单元通常是指函数或者类。

单元测试通常由开发完成,一般会伴随开发代码一起递交至代码库。单元测试属于最严格的软件测试手段,是最接近代码底层实现的验证手段,可以在软件开发的早期以最小的成本保证局部代码的质量。单元测试都是以自动化的方式执行,在大量回归测试的场景下更能带来较高收益,缺点是比较耗费开发人员时间。

1.5.8. 自动化测试

自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念,目前市面上比较多的是接口自动化测试和UI自动化测试。

1.5.9. 性能测试

通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试,

1.5.10 其他测试

安全测试

渗透测试

文档测试

安装测试

弱网测试 等

1.6. 软件测常用工具及平台

1.6.1. Charles/fidder 抓包代理工具

个人比较推荐使用Charles,官网地址 ,详细教程网上也有很多,比较推荐这个:推荐教程链接

值得一提的是,正版只要29.9美元,终生可用。

1.6.2. 数据库连接工具

常见的MySQL连接工具:nacicat for mysql

常见的Oracle连接工具:

pl/sql 需要了解简单的sql编写,数据库相关基本知识

1.6.3. 远程工具

常用的Linux连接工具:Xshell,,FinalShell,SecureCRT 需要了解Linux常用命令,QA人员通常会维护测试环境。

强烈推荐 FinalShell 地址:https://www./

1.6.4. postman和apipost等 接口测试

http接口测试工具,支持js编程,可以编写简单的脚本进行逻辑测试

apipost 地址:https://www./

soapui web service的功能/负载/符合性测试

1.6.5. jmeter、loadrunner

常用的性能测试工具 详情可见后续性能测试专栏文章

1.6.6. 禅道、Jira,confluence、TestRail、testlink

常见的项目、文档、测试用例管理平台工具

1.6.7. jenkins

持续集成平台,通常用于代码部署、自动化测试配置执行,里面包含了不少自动化测试框架的报告模板以及各种单元测试框架的兼容和拓展。

1.6.8. 自动化测试

Selenium WEB自动化

appium app自动化

Macaca 综合web和app自动化的框架

1.7测试流程简介

1.软件测试术语与简介

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多