ASP controller接收post请求参数其他页面的参数?

web应用程序的配置信息(如最常用的设置新建一个web应用程序后,默认情况下会在根目录自动创建一个默认的web应用程序的配置信息(如最常用的设置新建一个web应用程序后,默认情况下会在根目录自动创建一个默认的web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果需要修改子目录的配置设置,则可以在该子目录下新建一个web.config文件,其可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。
105.在一实施例中,所述性能测试单元304包括:
106.参数解析单元,用于对node.js命令行选项的对应参数进行解析;
107.网关设置单元,用于根据解析的参数将api网关设置为后端入口点;
108.协议转换单元,用于通过所述后端入口点将所述测试命令的协议格式转换为与后端相匹配的协议格式,并在转换完成后发送至后端。
109.本实施例中,将api网关定义为后端入口点。在网关服务中,可以指定从客户端路由到特定服务的路由请求。甚至可以通过路由处理版本或更改后端接口,而公开的接口可
以保持不变。还可以在api网关中定义与多个服务配合的新端点。api网关方法可以帮助分解整体应用程序,在大多数情况下,作为后端,重构系统并不是一个好主意,而且也是不可能的,因为需要在过渡期间为业务提供功能。在这种情况下,本实施例将代理或api网关置于整体应用程序之前,将新功能作为后端实现,并将新端点路由到新服务,同时通过原有的路由服务旧端点。这样以后也可以通过将原有功能转变为新服务来分解整体。
110.本实施例通过渐进式设计,可以从整体架构平稳过渡到后端。由于在实际应用过程中可能需要支持具有不同数据序列化格式要求的客户端。例如后端使用json,但是接收到页面测试请求只能使用xmlapi。在这种情况下,可以在api网关中将json转换为xml,而不是在所有后端中去实现。虽然后端架构允许多语言协议传输从而获得不同技术的好处,但是大多数客户端仅支持一种协议。在这种情况下,便可以通过上述步骤实现协议格式转换。
111.在一实施例中,所述参数解析单元包括:
112.参数收集单元,用于通过process.argv属性收集进程启动时传入的命令行参数;
113.参数遍历单元,用于对所述命令行参数进行遍历,并通过预先获取的命令行参数风格对遍历的每一参数字符串风格进行划分;
114.解析判断单元,用于根据风格划分结果确定是否对参数字符串继续进行解析处理;
115.参数分割单元,用于针对继续进行解析处理的参数字符串,采用unicode码点值分割得到对应的参数名和参数值;
116.参数赋值单元,用于根据所述参数值对对应的命令行参数进行至少一次赋值,以完成参数解析。
117.本实施例中,在node.js中,可以通过process.argv属性收集进程被启动时传入的命令行参数,由于node.js在处理命令行参数时,只是简单地通过空格来分割字符串,而对于这样的命令行参数,无法很方便地获取到每个命令行参数对应的值,所以需要再进行一次解析操作。在解析命令行参数之前,需要了解一些常见的命令行参数风格,例如:
118.unix风格:参数以「-」(连字符)开头;
120.bsd风格:参数以空格分割;
121.其中,unix参数风格具有一个特殊的注意事项:「-」后面紧邻的每一个字母都表示一个参数名」。
122.对命令行参数进行遍历,以判断是否存在单个「
」的场景,并对存在后续单个「
」的场景的参数字符串不再进行解析处理。同样的,如果参数字符串不以「-」开头,同样也不需要进行解析处理,参数的形式以unix和gnu风格为主。
123.参数的表现形式主要分为以下几种:
125."-abc=10":参数名为a,参数值为true;参数名为b,参数值为true;参数名为c,参数值为10;
128.利用unicode码点值找出连字符和等号的下标值,从而根据下标分割出参数名和
参数值。然后在处理参数值时,针对其赋值操作,需要考虑到多次赋值的情况,在完成赋值后,也就相当于完成相应的参数解析。
129.在一实施例中,如图4所示,所述性能测试单元304还包括:
130.命令拆分单元401,用于根据所述页面测试请求,将所述测试命令拆分为至少一个子测试命令;
131.命令封装单元402,用于基于是否包含等待元素对所有的子测试命令进行划分,并通过封装函数将划分后的子测试命令封装为第一子测试命令集合和第二子测试命令集合;
132.拆分测试单元403,用于利用所述第一子测试命令集合和第二子测试命令集合对前端页面分别进行性能测试;
133.目录设置单元404,用于将前端页面拆分为多个页面区域,并根据多个页面区域设置页面目录;
134.目录测试单元405,用于根据所述页面测试请求,在所述页面目录中选择目标目录进行性能测试。
135.本实施例中,一方面考虑到sitespeed测试工具在测量性能较慢的页面时存在误差,经常会在页面没有结束加载的情况下由于误判页面dom(文档对象模型)结构已没有变化而提前结束测量导致测试结果不准确。因此本实施例将sitespeed测试工具中的原生方法开始测量及等待元素进行封装(measure click selector ready),使得以上场景会在等到某个标志着加载完成的元素出现时测量才结束,以更准确的判断方式解决了此问题。除此之外,还可以通过封装sitespeed测试工具中的两个或多个原生方法,以提高测试效果。例如,当元素准备好时点击(click when selector ready),数组中任一元素准备好时(wait one of selectors 136.另一方面,还由于sitespeed测试工具在输入执行命令时需要输入繁复的内容,故本实施例基于被测页面目录化的优势,除了可以测量全量页面,还可仅选择一个目录进行测量,也可选择多个目录同时测量,增加了执行测试的灵活性,为更多的测试场景提供便利,相对传统模式新增了可配置化执行命令以降低执行成本和灵活性。
137.在一实施例中,所述报告输出单元305包括:
138.报错包装单元,用于在所述性能测试结果中获取报错捕获,并对所述报错捕获进行包装;
139.连续测试单元,用于通过循环判断的方式实现连续测试,并通过日志记录包装的所述报错捕获。
140.本实施例中,由于sitespeed测试工具中的脚本在测量多个页面时会出现由于某个元素定位错误导致程序停止或者报告出错无法查阅的问题,因此未来防止报错中断测量,本实施例对于报错的捕获进行包装,并通过循环判断的方式使其上下文即使测量过程中出现错误,也不会中断测量。以及通过日志记录下错误内容,在最终输出报告时将错误打印出来方便排查,解决了传统模式执行效率低、整体脚本容易中断测试等问题。
141.在具体实施例中,当测试脚本启动后,测试脚本自动对待测页面循环重启,并获取循环重启次数,同时判断当前测试次数是否小于预置次数。若当前测试次数大于或者等于
预置次数时,则测试脚本自动统计crc报错计数。
142.在一实施例中,所述报告输出单元305还包括:
143.应用启动单元,用于响应于页面测试请求,启动视频录制应用;
144.测试录制单元,用于通过所述视频录制应用对页面测试进行全程录制,得到对应的测试视频;
145.视频解析单元,用于对所述测试视频进行解析,以确定页面测试过程中的测试起始帧和测试结束帧;
146.时间记录单元,用于记录所述测试起始帧和测试结束帧的本地时间,并获取所述测试起始帧和测试结束帧之间的测试时长;
147.拼接命名单元,用于在所述测试视频中获取独立页面,并根据目录结构对各独立页面进行拼接命名;
148.报告归类单元,用于基于所述测试时长输出测试报告,并根据所述的本地时间对所述测试报告进行归类。
149.现有的前端测试工具所生成的测试报告较为固定,并且当执行不同的js脚本时,只会显示执行时的时间,导致报告的易用性较差。本实施例通过测试时间对测试报告以进行归类,例如每一天的测试报告以“本地时间+运行页面目录”的形式命名,大大减少了查询测试报告所消耗的时间,也更便于存储测试报告内容。并且,测试报告中的每个独立页面也会根据目录结构进行拼接命名,与目录结构形成统一,更便于寻找查看。本实施例有效的从整体测试项目全量场景下前端整体性能指标,以及保留从操作开始到页面加载过程的视觉逐帧录制的视频,对测试报告输出效果具有显著提高。
150.在具体实施例中,在启动视频录制应用之前,还包括:识别测试页面的关联页面;解析所述关联页面,确定所述关联页面内各个页面控件关联的测试链接;将测试链接与测试页面的目标链接匹配的所述页面控件识别为目标控件;若所述关联页面为非起始页面,则将所述关联页面识别为所述测试页面,并返回执行所述识别所述测试页面的关联页面的操作;若所述关联页面为起始页面,则基于所有所述关联页面以及所述目标控件,确定所述测试页面的访问路径,并基于所述访问路径生成所述测试脚本。
151.在另一具体实施例中,在对所述测试视频进行解析过程中,分别获取关联页面的参考图像和测试页面的测试图像;提取测试视频中各个视频图像帧,并识别与参考图像相匹配的至少一个第一候选帧,并将帧编号最大的第一候选帧识别为所述测试起始帧。同样的,识别与所述测试图像相匹配的至少一个第二候选帧,并将帧编号最小的所述第二候选帧识别为所述测试结束帧。
152.另外,在获取测试时长时,识别所述测试起始帧的第一帧编号以及所述测试结束帧的第二帧编号,并根据所述第一帧编号以及所述第二帧编号确定间隔帧数;然后获取所述视频录制应用的录制帧率,并基于所述间隔帧数以及所述录制帧率,计算所述测试时长。
153.进一步的,在生成测试报告时,还可以对测试页面中的页面插件以及页面图像进行识别,并根据所述页面插件的插件类型,查询各个所述页面插件对应的标准加载时长;然后根据所有所述标准加载时长以及所述页面图像的图像个数,计算所述测试页面的最大加载时长;若所述测试时长大于所述最大加载时长,则输出测试失败的所述测试报告。
154.在一实施例中,所述报告输出单元305还包括:
155.逻辑设置单元,用于对所述测试报告设置自定义逻辑;
156.自定义单元,用于接收用户发送的自定义指令,并根据所述自定义指令对所述测试报告中的内容进行自定义。
157.本实施例中,针对前端测试工具生成报告的原始json数据源进行分析和组装,按照用户定义的指标给出符合用户预期的新的报告形式,更加节省时间以及提高用户体验。本实施例通过预先编写测试报告sdk(软件开发工具包),从而在测试报告sdk中可以编写自定义逻辑以对测试报告中的内容进行自定义。进一步的,还可以通过编写回调逻辑对自定义的内容进行回调,并定义测试编写规范。如此,可以在实际测试过程,测试脚本可以将测试报告sdk中的回调逻辑作为参数,并基于回调逻辑获取测试报告sdk中自定义逻辑定义的内容,在执行结束测试后,就可以得到具有自定义内容的测试报告。由于测试报告中的内容可完全进行自定义,因此,可以使得测试报告中的内容更加表意,容易理解且内容可以更加丰富,从而满足实际需求。
158.在具体实施例中,所述自定义逻辑包括自定义注解代码、断言类和日志收集逻辑中的至少一种。其中,所述自定义注解代码用于定义表征被测软件模块是否具备指定功能的注解信息,所述断言类用于定义表征所述测试用例测试通过的断言信息,所述日志收集逻辑用于定义所述测试用例执行前后的日志信息;所述自定义逻辑用于定义所述测试报告中的内容包括所述注解信息、所述断言信息和所述日志信息中的至少一种。
159.进一步的,所述自定义注解代码基于自定义注解类espoutputinfo编写得到,所述espoutputinfo中包括name字段,所述name字段用于在所述被测软件模块包含的类和测试用例方法上定义所述注解信息。
160.在所述测试框架和所述自定义逻辑中均包括断言类的情况下,在对页面进行性能测试之前,将断言类替换为所述自定义逻辑中包括的断言类,以便在替换后的断言类中传入断言信息,该断言信息在断言类中可以以key-value的形式缓存,其中,key表示方法名,value表示断言信息。
161.进一步的,所述测试报告sdk中还编写有持久化数据逻辑;
162.其中,在基于所述回调逻辑获取所述自定义逻辑定义的内容后,所述方法还包括:基于所述持久化数据逻辑,以xml的形式对获取到的内容进行存储。
163.所述测试报告sdk中还编写有数据渲染逻辑;其中,基于获取到的内容生成测试报告,包括:基于所述数据渲染逻辑对所述获取到的内容进行渲染,生成html标签内容,以及基于所述html标签内容生成可视化的测试报告。
164.本发明实施例还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
165.本发明实施例还提供了一种计算机设备,可以包括存储器和处理器,存储器中存有计算机程序,处理器调用存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然计算机设备还可以包括各种网络接口,电源等组件。
166.说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而
言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
167.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

在运行vue时,您经常会遇到组件之间的数据传递问题,并通过params和query参与。 但是,页面更新后数据会丢失,找不到数据。 今天总结一下,解决了这个问题。 在以下几种情况下传递了值:

首先,在路由路径中,该组件必须传递参数,然后定义参数以用于传递组件。 params更新页面数据时会丢失。

//这里的值采用在:中输入参数的写法。 用户为参数。 请务必注意用/分隔

在你的组件中,通过单击并传递参数,targetUser传递的参数

然后,在使用的组件被接受并通过beforeRouteEnter进入路由之前执行的函数

路由有两种方法: params和query。 params通过传递值更新页面将消失,但查询不会消失。 区别在于在url地址中显示query传递的参数。 如下所示

在你的组件中,执行什么样的方法? 触发什么事件,传递参数

npm安装vuex,防止页面刷新数据丢失

validform一行代码完成所有验证 在使用的时候想更改提示效果为右侧提示却一直不能成功 tiptype可以为1.2 和 自定义函数.2 表示右侧提示. 注意:tiptype为 2 时,各表单元素对 ...

《Java编程思想》第一二章

前段时间一直通过网络教程学习Java基础,把面向对象部分学完之后本来打算继续深入学习,但是感觉自己操之过急了,基础根本不够扎实,所以入手了一本,希望先把基础打好,再深入 ...

1.官网地址 官网传送门 2.属性及使用示例 2.1调用 html:

初级安全入门—— WEBshell与文件上传漏洞

概念介绍 WebShell网页木马文件 最常见利用文件上传漏洞的方法就是上传网站木马(WebShell)文件,根据开发语言的不同又分为ASP木马.PHP木马.JSP木马等,该木马利用了脚本语言中的系统 ...

我要回帖

更多关于 controller接收post请求参数 的文章

 

随机推荐