15693100991

软件测试

文章作者:甘肃博伦 发布时间:2023-06-09 15:50:59 点击数:

一、测试含义:

在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。(去检查开发所做出来的功能是否符合最开始规定的需求或者设计,是否符合预期结果,符合就是ok,不符合就是有问题,弄清预期结果与实际结果之间的差别,做实际结果和预期结果的对比)

鉴定软件的正确性、完整性、安全性和质量的过程。

二 、测试的分类:

(一)按方法分:

1黑盒测试又叫功能测试、数据驱动测试或基于需求规格说明书的功能测试。该类测试注重于测试软件的功能性需求。通过操作功能,来判断有没有问题。

采用这种测试方法,测试工程师把测试对象看作一个黑盒子,完全不考虑程序内部的逻辑结构和内部特性,只关心软件的输入数据和输出结果,依据程序的《需求规格说明书》,检查程序的功能是否符合它的功能说明。

(二)按阶段分:

1. 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证,一般在这个阶段测试是指测试代码、函数、方法。 对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。单元测试方法包括: 控制流测试、数据流测试、排错测试、分域测试等。一般单元测试由开发来测试。

2. 集成测试:也叫组装测试,联合测试)是单元测试的逻辑扩展。它最简单的形式是:把两个已经测试过的单元组合成一个组件,测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。首先单独测试各个模块。模块经过单元测试后,逐个集成,直到所有模块都集成在一起,检查组合行为,验证需求是否正确实现。集成测试是在单元测试之后进行的测试。项目中的集成测试大多由开发自己完成,开发把这种测试叫作接口联调。独立的集成测试项目是指在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。它根据集成测试计划,一边将模块或其他软件单位组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确。测试来测试。

3. 系统测试:是对整个系统的测试,是对客户端、服务端(服务器软件,程序,运行环境,数据库)的整体的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方。这种测试可以发现系统分析和设计中的错误。系统测试阶段一般会测试功能,安全,性能,兼容性(Wed和App,不同的系统下是否度可以正常使用),易用性,稳定性,UI等等。测试来测试。

4. 验收测试:系统开发生命周期方法论的一个阶段,这时相关的用户就会进行测试或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。这是管理性和防御性控制。用户来测试。

(三)按方向分:

1.功能测试:比如打开一个网站,他可以画思维导图,那可以画思维导图就是这个软件的功能,功能测试就是测试软件提供的功能,是否满足所提出的需求。是系统测试中最基本的测试,它不管软件内部的实现逻辑,根据产品的功能进行验证,逐项测试,测试产品是否达到要求,主要根据产品的需求规格说明书和测试需求的列表,来验证产品的功能实现是否符合产品的需求规格。特别要注意的是一些隐含功能的需求。

2. 性能测试:性能是用来描述产品除功能外的所具有的速度,效率和能力的综合能力评价。而性能测试是对产品或是物品的性能进行定性或是定量的量测过程。也可以说是在给定的基准环境下,目标系统响应客户服务的最快速度或最好表现。性能测试的目的是为了检查系统指标能不能达到预期指标。举例比如在没有负重的情况下,你跑100米需要花多长时间?(功能测试是你可以做什么,而性能测试是你做这件事可以做多好?,软件运行的最大的指标)

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

2.2常见的性能测试有负载测试和压力测试,并发测试。

2.2.1负载测试用来确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。

2.2.2压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。

2.3性能测试的常用指标为:事务响应时间、TPS(每秒传输的事物处理个数,就是服务器每秒处理的事务数)、并发用户数 、吞吐量、点击率、资源利用率等。

2.4性能测试分为三个维度:

2.4.1负载测试:表示在目标系统正常服务的前提下,目标系统所承担的最大服务负荷数量(即最大并发数量),最终可分析系统性能瓶颈。(举例比如在负重50公斤,100公斤......等情况下,你跑100米需要花多长时间?)目的用于确定系统所能承载的最大用户数、最佳用户数;关注不同用户数下的系统响应时间及服务器的资源利用率。

2.4.2压力测试:在一定的软件、硬件及网络环境下,通过模拟大量的虚拟用户向服务器产生负载,是服务器的资源处于极限状态下长时间连续运行。(举例比如在负重最大极限下连续跑可以跑多久?)目的是测试服务器在高负载情况下是否能够稳定工作,找出系统最薄弱的环节。压力测试也称强度测试,也是性能测试的一种,是指在极限状态下,长时间或超大负荷地连续运行的测试,主要检测被测系统的性能、可靠性、稳定性等。

压力测试检的目的是检查系统在资源超负荷的情况下的抗压能力。压力测试的一个变种是一种被称为敏感测试的技术。在有些情况下,在有效数据界限之内的一个很小范围的数据可能会引起极端的甚至是错误的运行,或者引起性能的急剧下降。敏感测试用于发现可能会引发不稳定或者错误处理的数据组合。

压力测试应当在开发过程中尽早进行,因为它通常发现的主要是设计上的缺陷。压力测试的基本步骤如下:
(1) 进行简单的多任务测试。
(2) 在简单压力缺陷被修正后,增加系统的压力直到系统中断。
(3) 在每个版本循环中,重复进行压力测试

2.3并发测试:通过模拟多个用户并发访问同一个应用、同一个存储过程或数据记录以及其他并发操作。目的测试是否存在死锁、数据错误等故障。

3. 安全测试是:指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程,其主要目的是查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力,安全指标不同,测试策略也不同。

但安全是相对的,安全性测试并不能最终证明应用程序是安全的,而只能验证所设立策略的有效性,这些对策是基于威胁分析阶段所做的假设而选择的。例如,测试应用软件在防止非授权的内部或外部用户的访问或故意破坏等情况时的运作。

软件安全是软件领域中一个重要的子领域,系统安全性测试包括应用程序和操作系统两个方面的安全性。而系统安全性又包括两个方面的测试:一是软件漏洞,设计上的缺陷或程序问题;二是数据库的安全性,这也是系统安全性的核心。

3.1安全测试的常用方法有以下几种:

3.1.1静态代码检查

静态代码检查主要是通过代码走读的方式对源代码的安全性进行测试,常用的代码检查方法有数据流、控制流、信息流等,通过这些测试方法与安全规则库进行匹配,进而发现潜在的安全漏洞。静态代码检查方法主要是在编码阶段进行测试,尽可能早地发现安全性问题。

3.1.2动态渗透测试

动态渗透测试法主要是借助工具或手工来模拟黑客的输入,对应用程序进行安全性测试,进而发现系统中的安全性问题。动态渗透测试一般在系统测试阶段进行,但覆盖率较低,因为在测试过程中很难覆盖到所有的可能性,只能是尽量提供更多的测试数据来达到较高的覆盖率。

3.1.3扫描程序中的数据

系统的安全性强调,在程序运行过程中数据必须是安全的,不能遭到破坏,否则会导致缓冲区溢出的攻击。数据扫描主要是对内存进行测试,尽量发现诸如缓冲区溢出之类的漏洞,这也是静态代码检查和动态渗透测试很难测试到的。

3.1.4流量攻击/DDOS攻击:大数据、大流量来压垮网络设备和服务器;造成大量无法的请求来快速消耗服务器的资源

3.1.5 跨域攻击:点击不安全的网站链接,伪装成你的cookie(存储在本地的数据)而做出违反的行为。

3.1.6 SQL注入:针对程序员的漏洞,利用sql语句进行无账号密码登录

3.1.7脱库

3.1.8暴力破解:因为密码过于简单,通过大量的猜测的方式获取到用户的口令和密码

3.1.9渗入攻击:长期有计划有组织逐步渗透攻击网络,最终完全控制网络;

4. 兼容性测试;

4.1. WEB测试:同一个网站在不同的浏览器上的表现(是否度可以所有浏览器上打开,测试就是在不同的浏览器上打开来调试)谷歌、ie、360、qq、火狐、edge等(工作中最常用的是谷歌、火狐、edge);目的是检查产品在各个浏览器上是否显示正常、是否无错位,加载失败等等情况。记录bug的时候,是记录哪个版本的型号下遇到何种问题。一般是测试一个最新版本,一个最低版本。

4.2. App测试:分为ISO和Android、鸿蒙三种操作系统。就是在不同的手机上测试。但是手机的选择应该最大程度的覆盖更多的分辨率、系统、屏幕形状,如果没有条件,那就用用户群所用手机的市场占有率从高到低的来。

4.2.1. ISO:(手机一般就选择2-3或者是7-8台,可以借公司同事的手机)

苹果6-7的手机兼容性问题最多,因为版本比较低,开发都是用的最新的模拟器,低版本的兼容性会问题多一点,会出现闪退,会显示不正常,会错位,加载失败。公司也接着会测试苹果SE(会多问题);一般测试版本会测试苹果12、13.

4.2.2. Android:

有时候会对过低版本的用户放弃,所以不一定兼容过低版本,最低版本要看公司要求。安卓版本的适配:安卓6.0以上,安卓6.0、7.1、8.1、11.0、10.0(最多的用户用)。
一般手机有华为、小米、vivo、三星等等,一般选择市场占有率比较高的手机来测试,一般通过百度流量院来看手机市场占有率。
屏幕的分辨率:高配手机的分辨率和低配手机的分辨率
屏幕的形状:刘海屏、水滴屏、曲面屏、全面屏


4.3. 百度流量院

5. 易用性测试:这个测试提出后,开发可以选择改和不改,因为这个判断是测试的主观性。

6. UI测试:注意保持排版风格字体和整体的一致性

7. 手机APP专项测试:要背,APP测试都测试哪些,先说大类,再说这些测试都考虑从哪些方面来测试。

弱网测试:模拟app在不同的网络条件下的反应,2g、3g、4g、5g、wifi、飞行模式下是否会报错,加载不出来,加载慢导致报错。借助工具模拟不同的网速来做弱网测试。

8.接口测试:前端和后端的连接通过接口去连接。

9.稳定性测试:一个软件是否能够长时间运行,测试系统长期稳定的运行能力。前端和后端都要测试,前端分app+wed;长时间使用,网络会不会崩溃。后端运行7*24小时,没有问题就ok。前提是在功能完整正确情况下进行稳定性测试;条件:在一定的时间内,一定的压力下,比如说多少时间运行多久;验证点:功能稳定性(出错概率);结果减少系统或者软件崩溃闪退。

(四)按状态分:

1.静态测试:就是不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误的过程。静态测试包括代码检查、静态结构分析、代码质量度量等。静态测试既可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。经验表明,使用人工测试能够有效地发现 30%~70% 的逻辑设计和编码错误。在软件开发的早期阶段,由于可运行的代码尚未产生,不可能进行动态测试,而这些阶段的中间产品的质量直接关系到软件开发的成败,因此在这些阶段,静态测试尤为重要。

代码检查主要检查代码和设计的一致性,包括代码逻辑表达的正确性,代码结构的合理性等方面

2.动态测试:指的是实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以判断一个测试属于动态测试还是静态的,唯一的标准就是看是否运行程序。动态测试主要针对程序的内部功能,检测程序功能是否符合设计要求,通过选择适当的测试用例,实际运行所测程序,比较实际运行结果和预期结果。动态测试把被测代码放在相对真实的环境下运行,并且从多角度观察程序运行时能体现的功能、逻辑、行为、结构等,以发现其中的错误。

静态测试和动态测试的区别如下:

3.1测试部分的不同

3.1.1静态测试是指测试不运行的部分:只是检查和审阅,如规范测试、软件模型测试、文档测试等。动态测试是通常意义上的测试,也就是运行和使用软件。

3.2测试方式不同

3.2.1静态测试,通过评审文档、阅读代码等方式测试软件称为静态测试,通过运行程序测试软件称为动态测试。

3.3测试方法不同

3.3.1静态测试是指不用执行程序的测试,它主要采取方案—代码走查、技术评审、代码审查的方法对软件产品进行测试。动态测试主要通过构造测试实例、执行程序、分析程序的输出结果这三种方法来对软件进行测试。

(五)按其他分:

1. 回归测试:是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。也就是检查开发有没有修改完成你提出的所有bug。一个版本结束后,进行回归测试,就是把所有流程测试完,提完所有的bug提完,再给开发改,然后才是回归测试。不是出一个bug,开发改一个,然后回归测试。是等全部跑完后再给开发给,再回归。

2. 冒烟测试:测试软件具不具备可测试性,也叫测试前的测试,对软件基本功能进行确认验证的手段,并非对软件版本包的深入测试。冒烟测试也是针对软件版本包进行详细测试之前的预测试,执行冒烟测试的主要目的是快速验证软件基本功能是否有缺陷。如果冒烟测试的测试例不能通过,则不必做进一步的测试。比如你测试一款淘宝的软件,那冒烟测试,就起码有可以购物,付款。

3. α测试:内测,可以是验收测试的一种。

4. β测试:公测,可以是验收测试的一种。




 
 
联系我们
15693100991

地址:兰州市城关区421号华宇大厦B座航天科技创新港

 
 
Copyright © 2022 甘肃博伦测评信息技术服务有限责任公司 版权所有 陇ICP备2022001463号-1

甘公网安备 62010202003729号