性能测试知识及古老测试工具LR

目录

性能理论知识

LR基本知识点

1、LR工作原理:

2、LR脚本支持的语言有:

3、LR的四大组件

4、Vugen的选项:

5、事务的响应时间查看

6、性能测试目的

7、常见单词:

LR性能问题

1、请简述性能测试的过程。

2、请写出基准测试的两种方式。

LoadRunner 较深理解

1、协议:

2、开始录制

3、调字体-----字体:

4、注释单行:

5、常见函数

注解(事务/为什么添加检查点)

6、看请求发送之后的页面:

7、生成脚本之后,编译一下脚本;

8、日志

9、runtime setting:运行时设置;

10、recording options:录制选项设置;

11、tasks:任务:

12、controller里面的runtime

13、迭代优先级

14、参数化  Open Parameter

Update value on:该选项是用来控制参数获取、更新参数值的时机、条件

Select next row:该选项是用来控制参数获取、变更参数值的方式

参数化取值方式

LR基准测试基础---知识

1、 基本使用方法

2、Recording options:录制选项(详解)

HTML mode:HTML模式

URL mode:URL模式

Port Mapping

3、录制乱码

Support:该选项和LR中录制、生成脚本时的乱码有关。

乱码问题:乱码问题的产生,本质上就是编码不一致导致的。

4、runtime setting :运行时设置

5、log:日志

6、lr_think_time:思考时间:

7、Agent(代理程序):

8、添加集合点(三种方式): 

9、XXXXX

10、LR脚本增强操作主要有

LR基准测试

LR并发测试

LR第四大组件问题

LR深入性能问题

1、如何实现一半用户的并发?请写出并发测试的详细步骤;

2、参数化策略的常用组合有哪几种?请写出参数化的详细步骤;

3、LR迭代什么意思:

4、如何减少客户端对服务器的压力:

5、请写出文本检查点的函数,并说明函数的注意点;

6、手动关联的步骤;



性能理论知识

1、软件的性能,包含两个特性:包含两个特性:时间资源和空间资源

1)         时间资源是指:系统处理客户请求的响应时间;

2)         空间资源是指:系统资源消耗的情况,常见的系统资源主要包括:CPU、内存、网络、磁盘;

2、用户的感性时间和真正的响应时间;

感性时间:从客户端提交请求到系统开始返回时间;

真正的响应时间:从客户端提交请求,到系统将全部数据呈现出来的时间;                                   

3、响应时间:

网络消耗的时间+应用服务器处理的时间+数据库服务器处理的时间;

响应时间:做一个操作或是一系列消耗的时间; 

响应时间=网络消耗的时间+应用服务器处理的时间+数据库服务器处理的时间

1)用户体验时间:带有主观性,从请求发出,到收到数据开始,就认为这是响应时间

2) 真正的响应时间:从请求发送出去,到所有数据全部返回,这才是真正的响应时间

4、吞吐量:

单位时间内服务器处理的字节数(byte/sec)

5、吞吐率:

单位时间内服务器返回的字节数(吞吐量/测试时间);

吞吐率的值越大,系统的负载能力越强。

6、思考时间:

是指用户在进行操作时,每个请求之间的时间间隔;lr_thank_time();

7、TPS(transaction per second):

表示服务器每秒处理的事务数。

8、点击率:

每秒钟用户向服务器提交的HTTP数量

  1)点击率不是用户的单击次数

  2)点击率越大,对服务器的压力就越大

9、资源利用率:

指服务器系统不同硬件资源(CPU、内存、网络、磁盘)被使用的程度

10、性能计数器:

是描述服务器或者操作系统性能的一些数据指标;

1)在性能测试中常用资源利用率进行横向对比。

11、基准测试(单用户测试):

运行一种或者多种业务,将测试结果作为基线数据,为系统调优或者评测提供参考;

·目的:测试获取系统响应时间的基准值。

·操作:模拟一个用户多次请求服务器,取响应时间的平均值即可。

12、负载测试(最大处理能力):

负载测试:是通过对被测试系统不断加压,直到超出了预定的指标或者是部分资源已经达到了饱和程度,来测试系统的最大负载。

·目的:是测试系统的最大处理能力和系统的最佳性能表现。

·方式:通过模拟不同量级的负载用户数来进行测试。

13、压力测试(稳定性):

系统已经达到饱和程度,来测试系统处理业务能力以及系统是否会出错误;

压力测试:指系统到达饱和程度(CPU、磁盘、已经处于饱和程度)

·目的:是测试系统的稳定性,评估系统在极限负载情况下的稳定性如何。

·方式:极限不等于最大。时间一般建议是7×24小时。至少12-24小时。

14、容量测试(不同容量):

·目的:评估、预估系统在不同容量级别下的性能表现。 

15、配置测试

 ·目的:通过测试,获取系统的最低配置和推荐配置。

是通过调整系统软硬件环境,了解各种不同环境对系统性能的影响,从而找到最优质配置;

16、并发测试(用户同时发送)

   1)概念:同一时间与服务器进行数据交互的所有用户数量;

   2)两个要点:同一时刻(瞬时压力)、要与服务器有数据交换;

   3)误区:a、不是所有的用户都叫并发用户; b、不是所有在线的用户都是并发用户; 

·目的:测试系统是否存在资源争用、事务冲突、锁的升级等现象。

·方法:一般通过严格的并发来实现。

17、思考时间:                  

是指用户在进行操作时,每个请求之间的时间间隔(步骤之间的等待时间);lr_thank_time();

18、性能测试的方法主要方法包括:

基准测试/并发测试

负载测试/压力测试

配置测试/可靠性测试

19、可靠性测试:

是指当系统处于一定业务压力下,让系统持续运行一段时间,观察系统是否达到要求的稳定性;

LR基本知识点

1、LR工作原理:

    1)对与给定的被测系统(B/S、C/S),VUGen会根据所选择的协议,进行录制和捕捉用户操作,生成脚本,可以对脚本进行调试增强(事务、检查点、集合点、参数化、关联),并且可设置runtime setting(运行时设置),形成一个简单的场景;

    2)在controller中,可以联合LoadRunner模拟虚拟用户,创建设置运行监控场景,收集数据;

    3)生成测试报告和图表(.doc/execl/html),对测试结果进行分析(合并图表、设置目标、细分图、钻取);

2、LR脚本支持的语言有:

java、c、Visual Basic、vbscript

3、LR的四大组件

Vugen:Virtual User Generator,虚拟用户生成器是LR中用来录制、生成、调试脚本的组件。
            虚拟用户,在LR中,脚本就是虚拟用户。严格来说脚本只是虚拟用户的行为模板。
            在Vugen中,只能模拟一个“用户”(线程)的行为,不能模拟多个用户的行为。

Controller:控制器,是LR中用来设计、实现和执行场景的组件。
            场景:就是指很多用户执行脚本的场景。
            在Controller中,实现的是多用户的行为模式。

Analysis:分析器,是LR中用来收集、整理测试结果,并且出具初步的性能测试报告和图表的工具

              该工具只是提供了各种用于数据处理、分析的选项和功能,帮助用户去完成数据分析、定位瓶颈的工作。

Load Generator:负载生成器,是LR中用来实现“虚拟用户”,即线程/进程申请、调度的工具。

PS:一般来说,安装LR就会包含这四个核心组件。。然后Load Generator组件是可以独立安装,且可以安装在非windows环境下。负载机上可以只安装Load Generator组件。

4、Vugen的选项:

    在LR的Vugen中,选项整体是分为三类:

    ·Recording options:录制选项,控制的是脚本的录制、脚本的生成。

    ·Runtime settings:运行时选项,控制的是脚本实际运行时的一些选项。

    ·General options:常规选项,控制的是Vugen自身的一些运行设置。

5、事务的响应时间查看

        事务的响应时间在 analysis、controller  组件中,进行查看。

6、性能测试目的

        性能测试的目的是为了测试产品性能是否达标,监控时间资源和空间资源,分析性能瓶颈,提供调优方案,达到产品标准

7、常见单词:

1)Runtime setting:运行时设置

       Runlogic:设置迭代次数

       Pacing:设置迭代间隔

       Log:设置日志相关

       Think time:设置思考时间

2)edit recording options:编辑录制选择

       Recording:设置HTML的录制还是URL的录制

       Advanced:设置支持的字符集--UTF-8

       Correlation:设置关联规则

3)vusers_init:一般录制初始化过程(比如登录)

       action:一般录制关心的操作

       vusers_init:一般录制结束操作(比如退出)

       globals.h:声明函数

      PS:init和end与action:

        ①  Action里面可以设置迭代和集合点,Init和end不可以设置。

        ②  init和end可以设置插入事务和检查点

LR性能问题

1、请简述性能测试的过程。

制定测试计划---生成测试脚本----创建、设置、运行、监控、场景、收集数据-----分析测试结构

2、请写出基准测试的两种方式。

设置迭代次数、设置持续时间

LoadRunner 较深理解

1、协议:

1)single 单协议;(web  (HTTP/HHTML)、Ajax)

2)multiple:多协议;

3)recent:最近使用过的协议

2、开始录制

1)application type:interner(B/S)   win32(C/S)

2) program to record:用哪个浏览器去录制;

3) URL address:被测试系统的地址

4)Record into action :把脚本录制到那个action里面

        Vuser init :初始化脚本(一般会录制打开浏览器以及登录操作)

        Action:一般录制关心的动作(Action功能会强大一些,如迭代,集合点)

        Vuser_end:结束脚本,一般录制退出和关闭浏览器的操作       

Globals.h:头文件、声明函数

Ps:1)init、action、end只能从前往后选,不能到回去选;

        2)如果只是录制登录操作,那么其实关心的就是登入,可以把登入

        直接录制到action;

3、调字体-----字体:

        LR界面相关大小:直接  ctrl  + 鼠标光标滚动即可 

        LR脚本字体大小:tools----general Option ------- evnvironment----editor

4、注释单行:

        双斜杆   //XXXXXXXXXXXXXXXXXXXX

5、常见函数

        Web_URL();                           //发送页面请求的函数

  web_reg_find();                     //1)放在相应请求之前;

                                                  2)检查的文案在源码中查找;

  web_find();                            //1)放在相应请求之后;

                                                  2)检查的文案直接在页面中查找;

                                                  3)查找内容的左右相反;

                                                  4)运行时设置里面允许图像和文本检查点

  web_image_find();                //图像检查点函数

        lr_rendezvous(“buy”);            //集合点函数

        lr_output_message();          //输出函数

        lr_eval_string();                   //把lr的变量介绍给C使用,lr的变量不需要定义

        lr_start_transaction(“login”);  //开始事物login

        lr_end_transaction(“login”,LR_AUTO);  //结束事物 login

                其中LR_AUTO,自动判断事物的状态《pass、fail、stop》

                   ps:  1)以是否运行结束事务的函数来判断事务的状态

                             2)开始事务和结束事务是成对出现的;

        lr_think_time(150);           //思考时间(单位:秒)

                思考时间:表示有150s的时间没有做任何操作,没有与服务器进行任何数据交换;        

        web_submit_form();  //发送表单请求的函数;

注解(事务/为什么添加检查点)

PS:①LR_AUTO自动判断事务状态(pass、fail、stop)以是否运行结束事务函数来判断

  ②  为什么要插入检查点:因为事务状态是通过是否运行结束事务来判断,lr验证的是数据的交换,没有校验数据包的数据是否正确,所以要插入检查点。

6、看请求发送之后的页面:

        光标放在相应的请求函数,切换到tree视图,可以看到相应的页面(快照)

7、生成脚本之后,编译一下脚本;

编译脚本可以发现语法错误(无法发现逻辑错误),修改脚本之后,进行编译;

8、日志

        replay log:回放日志;

        recording log:录制时的日志;

        correlation results:关联结果;

        generation log:生成日志;

9、runtime setting:运行时设置;

        runtime setting:运行时设置;是用来控制脚本的运行相关的选项。
        PS:在Vugen和Controller中都可以对脚本的运行时设置选项进行设置。

10、recording options:录制选项设置;

       录制选项该选项是用来控制LR录制和生成脚本的模式,模式有两大类三小类

       两大类:HTML mode:HTML模式,又叫主请求模式

                     URL mode:URL模式,又叫http模式

       三小类:HTML下基于用户行为模式(由HTML模式拆分两个)

                     HTML下基于URLs模式(由HTML模式拆分两个)

                    URL mode:URL模式,又叫http模式(不变

11、tasks:任务:

        1)recording:开始录制的入口,录制概要(协议、action、事务);

        2)replay:再次回放;

        3)enhancements:脚本增强(事务、参数化、检查点)

        4)prepare for load:准备负载(迭代、并发用户数)

12、controller里面的runtime

     Setting优先于VUGen里面的runtime setting

13、迭代优先级

controller里面的持续时间(duration)优先于runtime setting 里面的迭代次数

14、参数化  Open Parameter

Update value on:该选项是用来控制参数获取、更新参数值的时机、条件

                Each Iteration:每次迭代,是指在每一次迭代开始之前,参数会去获取、更新参数值。在下一次迭代开始之前,不论参数是否被调用,调用一次还是多次,参数的值都不会发生变更

                Each Occurrence:每次出现,是指每一次参数被调用,参数就会去获取、更新参数值。调用一次,变更一次

                Once:仅一次,是指参数第一次被调用时,参数会获取一个参数值,在虚拟用户的生命周期中,参数的值不再发生变更

Select next row:该选项是用来控制参数获取、变更参数值的方式

                Sequential:顺序取值
                Random:随机取值
                Unique:唯一取值
                Same line as XXX:该选项仅当脚本中存在2个及2个以上的文件类型的参数时才会出现。作用:当参数B选择了Same line as 参数A,则表示参数B被调用时,会使用和参数A相同行号的值

参数化取值方式

A B C D E F G                H I J K L M N                O P Q                R S T                U V W X Y Z

医生        甲、乙、丙

病人        甲1、甲2、甲3、甲4、乙1、乙2、乙3、乙4、丙1、丙2、丙3、丙4

甲医生只能对甲X病人操作,不能对其他乙、丙病人操作;作业:以分块方式进行参数化LR

英文简称中文描述

        Vuser1

        Vuser2
Sequential + Each Iteration顺序取值 + 每次迭代        AA|BB        AA|BB        
Sequential + Each Occurrence顺序取值 + 每次出现        AB|CD        AB|CD
Sequential + Once顺序取值 + 仅一次        AA|AA        AA|AA
Random + Each Iteration随机取值 + 每次迭代        XX|YY       MM|NN
Random + Each Occurrence随机取值 + 每次出现    X1X2|X3X4   M1M2|M3M4
Random + Once随机取值 + 仅一次        XX|XX

      MM|MM

Same line as XXX同一行 XXX()        AA|BB        AA|BB        
Alocale X values for each VuserX个虚拟用户做为块      Aa1a2|Bb1b2

    Aa1a2|Bb1b2

LR基准测试基础---知识

1、 基本使用方法

        1)在controller里面测试:第二个组件才能收集数据

        2)基准测试:设置迭代次数(number of iterations)、设置持续时间(duration)

2、Recording options:录制选项(详解)

该选项是用来控制LR录制和生成脚本的模式

HTML mode:HTML模式

HTML mode:HTML模式又叫主请求模式。在该模式下,LR只会对主请求进行解析、生成脚本函数。

        特征:脚本中的请求函数会包含:mode=HTML
        优点:录制生成的脚本简单。
        缺点:可能会遗漏某些ajax类型的请求。

HTML模式又分为两种子类型:

①HTML下基于用户行为模式:该模式下,LR会通过上下文(Context)的方式来建立上下相邻的两个请求之间的依赖,是脚本层面的强制依赖。在该模式下,从第二个请求开始,每一个请求的执行都是建立在前一个请求的响应的基础上。
           优点:对于业务中本身就存在上下依赖的请求,不需要做关联处理。
           缺点:脚本的耦合度高,可编辑性几乎为0. 

②HTML下基于URLs模式:该模式下,LR生成的请求都是基于纯粹的URL请求的方式来生成,每一个请求之间都是独立的。
            缺点:对于业务中的有依赖关系的请求,必须要做关联处理。
            优点:脚本的耦合度低,可编辑性高。 

URL mode:URL模式

URL mode:URL模式又叫http模式。在该模式下,LR会对所有协议级别的请求(包括主请求和子请求)都进行解析、生成对应的脚本函数。

        特征:脚本中的请求函数会包含:mode=HTTP
        优点:不会遗漏任何协议级别的请求,比如说ajax类请求。
        缺点:录制生成的脚本臃肿,可读性较差。
        PS:在实际操作过程中,建议采用HTML下基于URLs模式为主,以URL模式为辅助。 

Port Mapping

Port Mapping:和代理录制、https等有关。Capture level:默认是socket级别。 

3、录制乱码

Support:该选项和LR中录制、生成脚本时的乱码有关。

        勾选Support,则LR在录制生成脚本时,会自动对服务器响应的utf-8编码的数据进行解码,转化为本地编码的脚本。
        不勾选Support,则LR在录制生成脚本时,不会自动对服务器响应的utf-8编码的数据进行解码,直接将UTF-8编码的数据存为本地编码的脚本,此时就会产生乱码。

乱码问题:乱码问题的产生,本质上就是编码不一致导致的。

        在LR中,乱码问题的总结如下:
        脚本中是否存在乱码,对于脚本本身的执行其实是没有影响的(设置正确的情况)。
        Support选项不是直接影响脚本的乱码,而是通过间接的方式影响。真正影响脚本中是否可以存在乱码的是运行时设置选项中的:Convert from/to UTF-8选项。
        一旦勾选Support,则生成的脚本会解析UTF-8数据,会将Convert选项设置为1(Yes),这就意味着脚本中可以直接使用本地编码的数据。
        一旦不勾选Support,则生成的脚本不会解析UTF-8数据,会将Convert选项设置为0(No),这就意味着脚本中不可以直接使用本地编码的数据。 

4、runtime setting :运行时设置

        1)run logic :设置迭代次数(只有 action会参与)vuser_init,vuser_end不参与迭代

        2) pacing:迭代间隔;as soon as:前一次迭代一结束,马上开始下一次迭代;

      the previous iteration ends:

     ①fixed:前一次迭代结束之后固定多长时间再开始下一次迭代;

②random:前一次迭代结束之后随机多长时间再开始下一次迭代;

At XX intervals:

           ①fixed:两次迭代之间间隔固定多长时间

②random:两次迭代之间间隔随机多长时间

           Ps)  1.注意intervals是前一次迭代开始就计时,而不是等前一次迭代结束;

        3)设置迭代间隔,可以减少单位时间客户端对服务端的压力;

5、log:日志

        only:只有出错时才发送日志

        always:总是发送日志

        日志信息的等级:

        standard:标准日志

        extended:扩展日志:

        parameter:参数替换

        data:从服务器返回的

        advanced:高级跟踪

6、lr_think_time:思考时间:

        忽略思考时间、回放思考时间

        as:按照录制时候的时间回放

        multiply:按照录制时间的倍数进行回放

        use random percentage:按照录制的随机百分比进行回放

        limit:限制思考时间最大为多长时间

        ps:1)limit可以和前面三项一起使用;

                2)设置思考时间,可以减少单位时间内对服务器的压力

7、Agent(代理程序):

        右下角有一个雷达的标志(LoadRunner agent process)

                1)  每一台负载机都需要安装agent,并且打开

                2)  可以接受来自总控制的命令

                3)  打开agent :程序----LoadRunner----advanced setting----lr  agent  process

8、添加集合点(三种方式): 

        集合点测试方法:lr_rendezvous(“XXX”); 

                A.录制时添加

                B.菜单栏insert-----rendezvous

                C.在相应位置----右键----insert----rendezvous

9、XXXXX

        all vusers:当所有的用户的百分比达到集合点的时候释放

        all running vusers :当所有运行中的虚拟用户的百分比到达集合点的时候释放

        XXX vusers :设置具体的虚拟用户数到达集合点的时候释放

        Timeout between vusers :虚拟用户之间的超过时间:30s;

10、LR脚本增强操作主要有

        参数化

        关联

        事务

        检查点

        思考时间

        集合点

LR基准测试

1)设置迭代次数步骤:runtime setting:

  ①runlogic:8(迭代次数

  ②pacing:随机2-3s(迭代间隔

  ③log:出错时发送标准日志

        ④lr_think_time:50%-150%

        加载方式: ①运行之前初始化 ②同时加载用户;③duration:运行到脚本结束就停止

2)设置持续时间步骤:runtime setting:

       ①runlogic:1

       ②pacing:随机2-3s

       ③log:出错时发送标准日志

       ④lr_think_time:50%-150%

        加载方式:①运行之前初始化   ②同时加载用户;③duration:设置持续3分钟    ④stop:同时结束(释放)虚拟用户

3)添加负载机(添加的负载机是已经ping通过的):design视图-----load generator 处add----IP和平台

4)连接添加的负载机:工具栏(菜单scenario)------load generator----连接;

借助其他的机器产生负载进行性能测试

LR并发测试

1.要有集合点        2.并发策略(controller中设置)

并发用户数的设置:VUGen里面是单用户,到controller里面才可以设置多用户;

基本步骤: 

1.  准备脚本(并且插入集合点)

2.  设置并发策略

3.  同时加载所有用户

4.  Runtime setting 中忽略思考,设置迭代为1

1)设置迭代次数步骤:runtime setting:

①runlogic:8(迭代次数

②pacing:随机2-3s(迭代间隔

③log:出错时发送标准日志

      ④lr_think_time:50%-150%

加载方式①运行之前初始化     ②同时加载用户;  ③duration:运行到脚本结束就停止

2)设置持续时间步骤:runtime setting:

        ①runlogic:1

        ②pacing:随机2-3s

        ③log:出错时发送标准日志

        ④lr_think_time:50%-150%

加载方式①运行之前初始化  ②同时加载用户;③duration:设置持续3分钟 ④stop:同时结束(释放)虚拟用户

LR第四大组件问题

Load generator 负载生成器         Mmdrv.exe  用来实现虚拟用户的进程

一个进程大概支持50个线程

1)先确定一个负载机可以支持多少个用户;(看一个进程占用多少资源)

2)确定需要多少个负载机

LR深入性能问题

1、如何实现一半用户的并发?请写出并发测试的详细步骤;

在并发策略里,设置第一项为50%或者第三项设置具体虚拟用户的一半

   步骤:

1) 准备脚本(脚本中插入集合点)

2) 设置并发策略controller

3) 加载方式中设置同时加载所有用户

4) 运行时设置里忽略思考时间,迭代间隔迭代1次

2、参数化策略的常用组合有哪几种?请写出参数化的详细步骤;

   参数取值方式:

        UEA:唯一+每次迭代更新+超出范围时放弃

        SE:按顺序+每次迭代更新

    步骤:

1) 找到需要参数化的常量

2) 参数替换常量

3) 准备参数池(数据和参数取值策略)

4) 设置迭代

3、LR迭代什么意思:

重复,action(action的第一行脚本到action的最后一行脚本)参与迭代;

4、如何减少客户端对服务器的压力:

        1)在脚本中添加思考时间,把思考时间延长;

        2)在运行时设置里面thank time和pacing设置调大一些;

        3)调整虚拟用户数量;

        4)加载用户的间隔延长;

5、请写出文本检查点的函数,并说明函数的注意点;

        Web_reg_find();  

                1)放在相应请求之前;

                2)检查的文案在源码中查找;

        Web_find();

                1)放在相应请求之后;

                2)检查的文案直接在页面中查找;

                3)查找内容的左右相反;

                4)运行时设置里面允许图像和文本检查点

6、手动关联的步骤;

        Web_reg_save_param();

                1) 找到动态数据

                2) 在生成日志中找到左右边界

                3) 找到生成动态数据的相应请求

                4) 在相应请求之前写上关联函数----关联函数:web_reg_save_param();

                5) 替换动态数据

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AMING20220827

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值