软件测试的定义及目的:
(1)软件测试为了发现程序中存在的代码或业务逻辑错误
(2)软件测试为了检验产品是否符合用户需求
(3)软件测试为了提高用户的体验
需要站在用户(而不是开发)的角度考虑问题,以提高用户的体验。
问题1:你觉得软件测试最重要的是什么?
软件测试最重要的还是要保证用户的体验.
问题2:你觉得软件测试存在的意义是什么?
提高质量、缩短生命周期、保证用户体验
软件测试的原则:
- 测试应该尽早介入, 所有的测试都应该追溯到用户需求。
- 程序员应该避免检查自己的程序,除了单元测试。因为程序员对自己的作品,他们的思维具有局限性,无法保证测试质量。应该交给第三方或者专业的测试,运用各种测试技术,利用丰富的测试经验和对BUG的敏感,去提高软件质量。
- 设计测试用例时应考虑合法的输入和不合法的输入以及各种边界条件,特使情况下还要制造极端状态和意外状态。
- 二八原则,测试发现的错误中80%很可能起源于20%的模块中。
- 对错误结果要进行一个确认的过程(不要一发现错误就提交Bug,这样自己是特别不负责任的,自己要多操作几遍,确认按照这个操作步骤能够100%复现,并且自己试着定位一下这个bug出现的原因,但是就算没有100%复现也需要提交,说明此bug并不是100%能复现出来,让开发心里也有个数就行了)。
- 制定严格的测试计划
- 完全测试是不可能的,测试需要终止。测试中可能有些合理的bug不影响用户使用和用户体验的,可以保留在下一个版本再改。
- 妥善保管测试过程中的所有文档。
软件测试的分类
按测试阶段划分:
单元测试:一般是开发做的,属于开发的一种自测行为。
集成测试:将单独的模块集成为一个大模块、完成模块与模块之间的调 用、单元与单元之间的调用。也可以说是开发与开发之间的联调。
系统测试:完整的、整体的测试,而不是做单个功能模块的测试。
验收测试(正式验收测试,Alpha测试、Beta测试)
Beta测试:就想游戏得到内测、大型公测一样,注册的账号在正式上线后依然可以使用。
Alpha测试是前期的一种用户的测试,公司内部组织员工以及部分用户,模拟实际操作环境下进行验收测试(内测)。
Beta测试一种后期用户测试,此时系统已经通过了内部测试,大部分错误已经改正,即将正式发行。在一个或多个真实环境下发布版本,进行测试(公测)。
Alpha测试和Beta测试的相同点是:开发和测试都不能参与,必须是由用户来进行测试。
不同点:1.Alpha是属于前期的、Beta是属于后期的 2.Alpha是在开发环境运行的、Beta是在正式环境运行的
测试技术划分
白盒测试(了解代码内部逻辑)、黑盒测试(等同于功能测试)、灰盒测试
被测试对象是否运行划分
动态测试(功能测试,需要运行App,对这个App进行点点点的测试)
静态测试(代码的走查,就是不用执行这个程序,直接对开发的代码进行审查,对文档、对界面进行的审查)
按不同的测试手段划分
手工测试、自动化测试
按测试包含的内容划分
功能测试、界面测试、安全测试、兼容性测试、易用性测试、性能测试、压力测试、负载测试、恢复测试
其他测试
冒烟测试、回归测试、探索性测试(测试思维)
性能测试和负载测试、压力测试分别代表什么意思?
参考:https://blog.csdn.net/LANNY8588/article/details/89677367
从测试方法与工具来说,三者都是一样的,压力测试、负载测试都是属于性能测试的子集。
性能测试——定义:模拟用户负载来测试系统在负载情况下,系统的响应时间、吞吐量等(这里的负载指的是用户并发数),所以他的目的是为了获取系统的指标。
负载测试——定义:在一定的软硬件环境上,通过不断地加大负载来确定在满足性能指标情况下所能承受的最大用户数。所以他的目的是为了获取最大用户数。一般不超过80%cpu,正常情况工作下最大用户数数据。
压力测试:也叫强度测试——定义:在一定的软硬件环境下,通过高负载的手段来是服务器资源属于极限状态,测试该系统在极限状态长时间运行是否稳定。包括系统指标、服务性能指标。
综上所述:
一般情况下我们所说的性能测试就是在服务器指标不超过80%下的测试来获取性能指标,负载测试是测试的一个方法,通过不断调试并发数获取性能的瓶颈。比如80个并发,这个叫80用户负载测试。通过80——>180这样的并发数变化过程,就叫做性能测试。也就是说,性能测试是通过不断的负载测试来实现的。
压力测试就是高负载的情况下进行的,目的不是为了获取性能指标,而是想要了解系统是否稳定。这时候服务器的指标一般不超过90%。压力测试通过长时间的运行较性能测试更能容易发现内存泄漏的问题。
简单来说,负载测试是一个方法,性能测试是一个过程。压力测试是一个高压力下的性能测试。