软件测试 初识

Posted 504 Gateway Time-out

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试 初识相关的知识,希望对你有一定的参考价值。

文章目录

软件测试

软件测试的定义

软件测试就是验证产品特性是否满足用户需求;

上面是软件测试的一个较为学术的定义,简单来说,软件测试就是对软件进行测试,发现软件的缺陷,也就是找bug。简单举一个网上购物的例子,在购物之前,我们需要测试一件衣服的外观、颜色、样式,需要测试衣服的价格,测试商品详情展示的衣服材质,而在收到商品之后,我们同样需要对衣服真实的材质做测试,如果有问题需要对商家的售后做测试,这些也许看起来是在正常不过的事,实际也是我们不断在测试的一个表现;

软件测试的特点

软件测试具有不可穷尽性;
软件测试贯穿于软件的整个生命周期;

软件测试绝不仅仅是在程序开发的某一个阶段需要进行的工作,而是存在于软件开发的整个过程,一直延伸到软件后期的升级、运行、维护等阶段;

与软件开发的区别

首先,软件测试与软件开发最根本的区别就是两者工作任务的关注点不同。对于软件开发人员而言,最主要的就是负责编写业务代码;而对于软件测试人员,则是主要负责测试软件质量。 对于两者工作的难易程度而言,开发工作所涉及的专业度更高,但广度更小;测试工作所涉及的专业度更低,但广度更大。

软件测试的基本概念

需求

在企业中,需求主要分为两类,即软件需求和用户需求:

  • 软件需求

软件需求主要是描述开发人员必须实现的软件功能;

  • 用户需求

用户需求主要就是最终产品的使用者提出的需求;

一般用户需求都较为简略和笼统,由于用户可能会提出各种各样的需求,这些需求不一定都是合理或可执行的,因此用户需求是需要进行分析和提取的,最终转化为软件需求;

软件需求是测试人员进行测试工作的基本依据

测试用例

测试用例是测试人员在执行测试之前需要进行的工作,测试用例的好坏很大程度上影响了产品的质量。

测试用例是为了实施测试而向被测试的系统提供的一组集合;

测试用例主要解决2个问题,即测什么和怎么测;一般包含几个要素:测试环境、操作步骤、测试数据、预期结果;

以某网站的搜索引擎为例,下面就是一个完整的测试用例的编写:

这样的测试用例编写方式无疑是繁杂的,因此企业更多使用脑图的形式编写测试用例,这里暂不做演示。

测试用例是为了尽可能提供测试的覆盖率,同时避免冗余测试影响测试效率,但不可能做到完全的测试也是不争的事实,我们只能尽可能地去避免漏测,最大程度地保证产品质量。

软件错误(Bug)

简单来说,当与预期结果不符时,就可以认为是一个bug,但软件错误更全面的定义主要有下面两个方面:

当且仅当软件规格说明书存在且正确时,若程序与规格说明书不符时认为是软件错误;
对于规格说明书没有指明的功能,若程序与用户的合理需求不符,认为是软件错误;

优秀的软件测试人员需要具备的素质

主要有综合能力以及专业能力;
综合能力:

  • 良好的沟通能力;
  • 快速学习能力;
  • 文字能力;
  • 开发能力;

专业能力:

  • 优秀的测试用例设计能力;
  • 掌握一定的测试技术(像自动化测试技术);

当然,除了以上这些,对于测试的兴趣,一定的探索性思维,必要的责任感和抗压能力都是必须的~

初识性能测试

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

  • 负载测试:确定在各种工作负载下系统的性能,目标是当负载逐渐增加时,测试系统各项性能指标的变化情况。
  • 压力测试:确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

都属于性能测试,两者可以结合进行。


 

性能测试的目的:

  验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,以优化软件。最后起到优化系统的目的

  • 评估系统的能力:测试中得到的负荷和响应时长数据可以被用于验证所计划的模型的能力,并帮助做出决策。
  • 识别体系中的弱点:受控的负荷可以被增加到一个极端的水平并突破它,从而修复体系的瓶颈或薄弱的地方。s
  • 系统调优:重复运行测试,验证调整系统的活动是否得到了预期的结果,从而改进性能。
  • 检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中隐含的问题及冲突。
  • 验证稳定性(Resilience)、可靠性(Reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法

性能测试常见的分类:

  • 负载测试
    • 通过测试系统在资源超负荷情况下的表现,来发现设计上的错误或验证系统的负载能力
    • 在这种测试下,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下性能行为,以及持续正常运行能力
  • 压力测试:
    • 对系统不断的施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
  • 容量测试:
    • 确定系统可处理同时在线的最大用户数(在先最大用户数:是指不断的在和服务端进行数据的狡猾,而不是停止不动不进行任何操作的用户)

性能测试的常见指标:

  对B/S架构的软件,关注Web服务器性能指标

  • Avg Rps:平均每秒钟的响应次数 = 总请求次数/秒数
  • Avg time to last byte per terstion(mster):平均每秒业务脚本的迭代次数
  • Successful Rounds:成功的请求
  • Falied Rounds:失败的请求
  • Successful Hits:成功的点击次数
  • Falied Hits:失败的点击次数
  • Hits Per Second:每秒点击次数
  • Successful Hits Per Second:每秒成功的点击次数
  • Falied Hits Per Second:每秒失败的点击次数
  • Attempted Connections:尝试连接数
  • Throughput:吞吐量

  对C/S架构的软件,由于软件后台通常为数据库,所以更注重数据库的测试指标

  • User Connections:用户连接数,也就是数据库的连接数
  • Number of Deadlocks:数据库死锁
  • Butter Cache Hit:数据库Cache的命中数

在实际性能测试中,需要观察的性能指标并不限于以上的,需要根据实际情况做出选择和权衡,有些指标如

  • CPU占用率
  • 内存占用率
  • 数据库连接池
  • 等等

 性能测试的基本流程

  1. 明确性能测试需求
  2. 制定性能测试方案
  3. 编写性能测试用例
  4. 执行性能测试用例
  5. 分析性能测试结果
  6. 生成性能测试报告

以上是关于软件测试 初识的主要内容,如果未能解决你的问题,请参考以下文章

对测试驱动开发的一些理解

对测试驱动开发的一些理解

初识性能测试工具JMeter

如何提高自动化测试覆盖率

初识gauge自动化测试框架

单元测试