- 浏览: 913393 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (537)
- Java SE (114)
- Struts (18)
- Hibernate (25)
- Spring (3)
- Page_Tech (41)
- Others (87)
- Database (29)
- Server (24)
- OpenSource_Tools (15)
- IDE_Tool (22)
- Algorithm (28)
- Interview (22)
- Test (28)
- Hardware (1)
- Mainframe (25)
- Web application (4)
- Linux (3)
- PHP (17)
- Android (1)
- Perl (6)
- ubuntu (1)
- Java EE (9)
- Web Analysis (5)
- Node.js (2)
- javascript (2)
最新评论
-
一键注册:
request.getRequestURL()和request.getRequestURI() -
SuperCustomer:
...
SED的暂存空间和模式空间 -
juyo_ch:
讲得挺好理解的,学习了
java 死锁及解决 -
chinaalex:
最后一题答案正确,但是分析有误.按照如下过程,上一行为瓶,下一 ...
zz智力题 -
liaowuxukong:
多谢博主啦,弱弱的了解了一点。
C++/Java 实现多态的方法(C++)
1.WebService简介
WebService是一种革命性的分布式计算技术,本质上就是网络上可用的API,可以直接在网络环境调用的方法。
WebService常用的框架有axis、xfire、cxf等。
WebService发布后,其服务是封装在一个wsdl(Web Services Description Language,Web服务描述语言)文件中,客户端发请求主要是向发布好的wsdl地址以SOAP方式发请求,调用过程如下:
? 服务端:
n 生成服务描述文件,以供客户端获取。
n 接收客户端发来的SOAP请求消息,解析其中的方法调用和参数格式。
n 根据wsdl和wsml的描述,调用相应的COM对象来完成指定功能,并把返回值放入SOAP回应消息返回给用户。
? 客户端:
n 取得服务端的服务描述文件,解析该文件从而获得服务端的服务信息以及调用方式。
n 指定调用方法和参数,生成恰当的SOAP请求消息,发往服务端。
n 等待服务端返回的SOAP回应消息,解析得到返回值。
2.WebService测试说明
WebService的测试主要围绕功能测试、性能测试和安全性测试展开,下面主要描述WebService三大测试的要点。
2.1 WebService功能测试
测试目的:测试系统所实现WebService接口的功能。
进入条件:开发人员提供已实现功能的程序包,和待测试webservice的方法名、参数以及实现的功能描述。
测试要点:不同的参数组合,应按设计要求返回相应的信息。
2.2 WebService性能测试
测试目的:测试系统所实现WebService接口的性能。进入条件:WebService接口的功能测试已完毕。
测试要点:测试并发调用WebService接口,观察其性能表现,主要是在不同的并发量、持续运行时间和数据库不同容量下,事务的响应时间、总事务数、事务的成功率、点击率等,同时监控硬件资源的消耗情况。
2.3 WebService安全性测试
测试目的:测试系统所实现WebService接口的安全性。
进入条件:WebService接口的功能测试已完毕。
测试要点:测试WebService接口的调用是否有用户名、密码验证,恶意调用是否会导致系统崩溃等。
3.WebService功能测试
目前掌握的测试工具soapUI可以进行WebService的功能测试,下面以测试存储服务的PIXManager接口详细介绍使用soapUI进行WebService功能测试的操作步骤。
3.1 新建工程
1、单击‘File’->‘ New soapUI Project’,如下图:
2、在弹出的对话框中输入待测试的ws信息,然后点击 [OK] 到下一步
Project Name:PIXManager
Initial WSDL/WADL:http://192.168.2.51:8181/WEB-INF/services/PIXManager?wsdl
Create Requests:选中
Create TestSuite:选中
Relative Paths:选中
3、保存project
4、生成初始的测试用例
选择One TestCase for each Operation:每个接口创建一个用例
选择Create new empty requests:创建一个空的请求
Operations:选择待测试的方法
选择Generates a default LoadTest for each created TeseCase:每个用例生成一个负责测试(为后面性能测试做准备)
5、生成TestSuite
这里可以根据习惯更改TestSuite的名称,如TestSuite:PIXManager。
6、在soapUI的左侧生成如下目录
此时新建project已完成!
3.2 发送请求
1、创建项目的时候我们选择了Create sample requests for all operations,所以每个接口方法都会自动创建一个请求,如下图:
2、双击它就可以打开编辑面板,左边是请求内容,右边是响应内容。
3、在Form页面输入参数,单击 按钮执行,右侧查看结果。
输入的xml内容如下:
<?xml version="1.0" encoding="GB2312"?> <V_PATIENTREGC99999999 xsi:noNamespaceSchemaLocation="PATIENTREGC99999999.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <MEDICALSERVICE_NO>01</MEDICALSERVICE_NO> <NAME>小花</NAME> <BIRTH_DATE>1988-02-01T00:00:00</BIRTH_DATE> <GENDER_CD>1</GENDER_CD> <GENDER_VALUE>男性</GENDER_VALUE> <MARITAL_ST_CD>10</MARITAL_ST_CD> <MARITAL_ST_VALUE>未婚</MARITAL_ST_VALUE> <ID_NO_CD>01</ID_NO_CD> <ID_NO_VALUE>居民身份证</ID_NO_VALUE> <ID_NO>12586</ID_NO> <MEDICARE_CD>01</MEDICARE_CD> <MEDICARE_VALUE>社会基本医疗保险</MEDICARE_VALUE> <MEDICAL_INSURANCE_NO>Y001</MEDICAL_INSURANCE_NO> <AR_CD>111</AR_CD> <AD_CD>01</AD_CD> <AD_VALUE>户籍住址</AD_VALUE> <PROVINCE_NAME>上海</PROVINCE_NAME> <CITY_NAME>上海</CITY_NAME> <AREA_NAME>浦东区</AREA_NAME> <STREET_ID>霞飞路</STREET_ID> <VILLAGE_NAME>街</VILLAGE_NAME> <HOUSE_NO>门牌号</HOUSE_NO> <TEL_TYPE_CD>01</TEL_TYPE_CD> <TEL_TYPE_VALUE>本人电话</TEL_TYPE_VALUE> <TEL_NO>1232312</TEL_NO> <REGISTER_DATE>2010-09-27T14:31:00</REGISTER_DATE> <RECORDER_NAME>小芳</RECORDER_NAME> <REGISTER_PERSON_CODE>01</REGISTER_PERSON_CODE> <REGISTER_ORG_CODE>01</REGISTER_ORG_CODE> <REGISTER_ORG_NAME>中科</REGISTER_ORG_NAME> <SEND_TIME>2010-09-27T14:32:00</SEND_TIME> <SEND_ORG_CODE>798921772</SEND_ORG_CODE> <SEND_SYSTEM>222222222222</SEND_SYSTEM> </V_PATIENTREGC99999999> |
4.WebService性能测试
目前掌握的是两个测试工具soapUI和LoadRunner,其中soapUI可以进行WebService的功能和性能测试,而LoadRunner主要是性能测试。
下面分别介绍两个工具进行WebService性能测试的步骤。
4.1 采用soapUI测试步骤
基于前面soapUI功能测试的步骤,若已成功,可将脚本参数化后用于性能测试,具体步骤如下:
4.1.1 数据生成器
1、右键单击Test Steps,‘Add Step’->‘DataGen’,如下图:
2、输入步骤名称
Type:选择‘Number’型,
3) 设置为‘Randomize instead of step’
4.1.2 参数化
打开待参数化的请求,找到需参数化的内容,选中并右键单击,如下图:。
选择‘Get Data’->‘Step 1:[DataGen]’->‘property [MEDICALSERVICE_NO]’
原来的数据被替换为:${DataGen#MEDICALSERVICE_NO}
4.1.3 场景执行和监控
1、打开‘TestSuite:PIXManager’->‘registerPatientInterface’->‘Load Tests’->‘registerPatientInterface’
2、设置并发线程,单击 执行测试
4.1.4 结果分析
4.2 采用LoadRunner测试步骤
4.2.1 脚本准备
1.选择协议
web_service_call( "StepName=registerPatientInterface_101", "SOAPMethod=PIXManager_Service|PIXManager_ServicePort|registerPatientInterface", "ResponseParam=response", "Service=PIXManager_Service", "ExpectedResponse=SoapResult", "Snapshot=t1294907356.inf", BEGIN_ARGUMENTS, "msgID=", "sendMsgOrgID=", "sendMsgPosID=", "eventDateTime=", "eventDateTimeSpecified=", "xml=", END_ARGUMENTS, BEGIN_RESULT, "return=Param_return", END_RESULT, LAST); |
4、输入参数
1)输入msgID、sendMsgOrgID、sendMsgPosID、eventDateTime、eventDateTimeSpecified;
"msgID=11111", "sendMsgOrgID=111111", "sendMsgPosID=111111", "eventDateTime=2011-01-12 10:10:10", "eventDateTimeSpecified=true", |
2)输入Xml;
"xml=<?xml version="1.0" encoding="GB2312"?> " "<V_PATIENTREGC99999999 xsi:noNamespaceSchemaLocation="PATIENTREGC99999999.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">" " <MEDICALSERVICE_NO>01</MEDICALSERVICE_NO>" " <NAME>小花</NAME>" " <BIRTH_DATE>1988-02-01T00:00:00</BIRTH_DATE>" " <GENDER_CD>1</GENDER_CD>" " <GENDER_VALUE>男性</GENDER_VALUE>" " <MARITAL_ST_CD>10</MARITAL_ST_CD>" " <MARITAL_ST_VALUE>未婚</MARITAL_ST_VALUE>" " <ID_NO_CD>01</ID_NO_CD>" " <ID_NO_VALUE>居民身份证</ID_NO_VALUE>" " <ID_NO>13504568756</ID_NO>" " <MEDICARE_CD>01</MEDICARE_CD>" " <MEDICARE_VALUE>社会基本医疗保险</MEDICARE_VALUE>" " <MEDICAL_INSURANCE_NO>Y001</MEDICAL_INSURANCE_NO>" " <AR_CD>111</AR_CD>" " <AD_CD>01</AD_CD>" " <AD_VALUE>户籍住址</AD_VALUE>" " <PROVINCE_NAME>上海</PROVINCE_NAME>" " <CITY_NAME>上海</CITY_NAME>" " <AREA_NAME>浦东区</AREA_NAME>" " <STREET_ID>霞飞路</STREET_ID>" " <VILLAGE_NAME>街</VILLAGE_NAME>" " <HOUSE_NO>门牌号</HOUSE_NO>" " <TEL_TYPE_CD>01</TEL_TYPE_CD>" " <TEL_TYPE_VALUE>本人电话</TEL_TYPE_VALUE>" " <TEL_NO>1232312</TEL_NO>" " <REGISTER_DATE>2010-09-27T14:31:00</REGISTER_DATE>" " <RECORDER_NAME>小芳</RECORDER_NAME>" " <REGISTER_PERSON_CODE>01</REGISTER_PERSON_CODE>" " <REGISTER_ORG_CODE>01</REGISTER_ORG_CODE>" " <REGISTER_ORG_NAME>中科</REGISTER_ORG_NAME>" " <SEND_TIME>2010-09-27T14:32:00</SEND_TIME>" " <SEND_ORG_CODE>798921772</SEND_ORG_CODE>" " <SEND_SYSTEM>222222222222</SEND_SYSTEM>" " </V_PATIENTREGC99999999>", |
5、脚本增强
1)参数化;
2)增加事务并打印返回结果;
lr_start_transaction("registerPatientInterface"); |
if (strstr(lr_eval_string("{Param_return}"),"C99999999$")==NULL) {
if (strstr(lr_eval_string("{Param_return}"),"empty!")==NULL) {
lr_end_transaction("registerPatientInterface", LR_STOP); lr_output_message(lr_eval_string("出错了!返回的信息如下:{Param_return}")); }
else{
lr_end_transaction("registerPatientInterface", LR_FAIL); lr_output_message(lr_eval_string("请求成功,保存失败!返回的信息如下:{Param_return}")); }
}
else{
lr_end_transaction("registerPatientInterface", LR_PASS); lr_output_message(lr_eval_string("请求成功,保存成功!返回的信息如下:{Param_return}"));
} |
3)调试;
在run-time settings中设置增强日志类型,以便看到更详细的信息。
调试完成后调整为:Send messages only when an error occurs
4)去掉默认的事务划分;
4.2.2 场景执行和监控
1、脚本调试成功后,点击‘Tools’->‘Create Controller Scenario’,如下图:
4.2.3 结果分析
4.WebService安全性测试
暂无
发表评论
-
Bugzilla 中文手册
2012-08-21 10:22 18950Bugzilla 是一个开源的缺陷跟踪系统(Bug ... -
测试Servlet(转)
2012-06-10 18:31 977servlet的测试一般来说需 ... -
Rational Functional 测试命令接口
2012-05-17 13:26 889Functional Test Command-Line ... -
【原】JUNIT 源码分析之TestSuite
2012-04-25 21:59 1521Junit是如何使用适配器模式的呢?概念上可以理解,但 ... -
分享selenium+testng+reprotng+ant配置
2012-04-19 16:12 3534一、Configure1. 安装testNG插件到eclips ... -
[YUAN] JUNIT 源码分析总结
2012-04-11 15:21 1005今天看了下Junit3的源码,记录下一些心得。 J ... -
【zz】Ant + Junit 实现自动化测试
2012-04-10 14:01 1987在软件开发过程中,我 ... -
关键字驱动测试的原理和概念
2012-04-09 13:45 1709原理及特点 1. ... -
LoadRunner安装及破解
2012-03-19 15:13 10841、去HP的官方网 ... -
Web测试的一些思路
2012-03-19 15:10 837WEB测试分为6个部分: ●功能测试 ● ... -
测中策 - Web自动化测试的策略
2012-03-13 17:01 930大不可量,深不可测&quo ... -
软件测试的思路
2012-02-26 21:08 869任何东西的测试与软 ... -
TC interview
2012-02-21 11:34 10011. 自我介绍 2. 工作内容,完成过的具体项目及职责 3 ... -
RFT中文操作指南(下)
2011-04-02 15:05 1325练习 1.6:回归测试 在 ... -
RFT中文操作指南(上)
2011-04-02 15:03 1037练习 1.1:设置 Functional Test IB ... -
理解自动化测试
2011-04-02 11:06 1680“自动化测试”有时也叫“测试自动化”,由两部分组成,“自动化” ... -
一个纸杯子的测试用例
2010-10-26 11:52 1202一个纸杯,我们能想出多少个测试用例呢?想必很多人 ... -
测试一个搜索框
2010-10-26 11:51 1615摸索中,还很不成熟,但愿能抛砖引玉吧,我做的搜索测试是来抓取百 ... -
测试用例编写的“侯式标准”
2010-10-26 11:51 1463作为软件测试人员 ... -
编写测试用例方法心得体会
2010-10-26 11:47 1364在我的个人邮箱和MSN上,通常同行都问我类似下面这样的问题: ...
相关推荐
- 编译并运行 Web Dynpro 应用,根据视图设计与用户交互,输入必要的参数(如出发地和目的地),然后调用 execute_bapi_flight_getlist 方法获取航班列表数据。 - 数据会自动绑定到视图中的元素,展示给用户。 ...
如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务...
- 测试服务:使用Axis2提供的测试客户端或者通过SOAP UI等工具,测试发布的Web服务。 - 错误处理:了解常见的错误和异常,以及如何进行调试和修复。 - 安全性:研究如何添加安全机制,如WS-Security,保护Web服务...
5. **整合Service和DAO**:同样,在Service类中注入DAO,使得业务逻辑层可以调用数据访问层的方法。 6. **配置Struts-Hibernate**:在Struts的Action类中,通过Spring提供的SessionFactory,创建Session并进行...
Spring MVC作为Spring框架的一部分,提供了构建Web应用程序的强大功能,包括模型-视图-控制器(MVC)设计模式的实现,使得业务逻辑与展示逻辑分离,提高了代码的可维护性和可扩展性。 #### 二、关键技术解析 ##### 1...
3. **注解支持**:Spring3.0大幅增强了对注解的支持,如@Service、@Repository、@Controller等,使得开发者可以减少XML配置,增强代码的可读性。 4. **AOP增强**:在Spring3.0中,AOP的使用更加方便,可以通过注解...
- 测试与运行:完成上述配置后,进行单元测试和整体功能测试,确保SSM集成无误。 5. **最佳实践**:在SSM框架下,为了提高开发效率和代码质量,可以遵循以下最佳实践: - 使用注解简化配置:Spring和SpringMVC都...
Servlet本质上就是一个Java编写的类,实现了特定的生命周期方法,如`init()`、`service()`和`destroy()`等。Servlet容器负责创建、初始化、调度和销毁Servlet实例。在本项目中,开发者选择使用原生Servlet而不是基于...
- Spring 2.5在DI方面进一步优化,支持了注解驱动的依赖注入,使得开发者可以通过在类的字段或方法上添加注解如`@Autowired`,`@Qualifier`等,让Spring自动装配bean,减少了XML配置的繁琐。 2. **AOP(面向切面...
8. **MVC注解**:Spring MVC支持诸如@Controller、@RequestMapping、@Service、@Repository等注解,这些注解使得代码更加简洁,降低了XML配置的需求。 9. **Spring Boot**:虽然不是3.2版本的内容,但值得一提的是...
SSM框架是Java Web开发中常用的一种组合,由Spring MVC、Spring和Mybatis三个组件构成,用于构建高效、灵活的Web应用。这个基于SSM的客户关系管理系统(CRM)毕业设计,利用了Maven进行项目构建,确保了依赖管理的便捷...
10. **CDI(Contexts and Dependency Injection)**:CDI是JavaEE中的依赖注入框架,使得对象之间的关系更加松耦合,便于测试和管理。 11. **RESTful Web Services**:JavaEE支持创建RESTful服务,使用HTTP协议提供...
2. **ISP**:ISP的全称是互联网服务提供商(Internet Service Provider),它为个人和组织提供接入互联网的服务。 3. **中国互联网历史**:钱天白在1990年1月28日代表中国注册了我国的顶级域名CN,标志着中国拥有了...
1. **源代码**:包括Struts的Action类、Service层业务逻辑、DAO(Data Access Object)访问数据库的代码,以及JSP页面等。 2. **配置文件**:Struts的配置文件(struts-config.xml),应用的web.xml,数据库连接配置...
`vim /etc/inittab`, `id:3`, `id:5`, `shift + zz`, `reboot`, `shutdown`, `service network restart`, `vim /etc/sysconfig/network-scripts/ifcfg-eth0`, `chmod 777 filename`, `ll`, `ll -a`, `man + 命令...
如何进行有效的资源加载(如预加载、懒加载),如何利用Web Worker进行后台计算,以及如何利用Service Worker实现离线存储,这些都是需要了解并能实际应用的技巧。 最后,不要忽视了Web安全方面的知识。了解XSS、...
2. `eclipse-jee-juno-SR1-win32-x86_64.zip`:这是Eclipse Java EE版本的Juno Service Release 1的64位Windows版本。Eclipse有多个版本,其中Java EE版专为Web和企业级Java应用开发设计,包含了额外的插件和支持。 ...
6. **服务(Service)**:服务是可重用的功能块,可以用来封装业务逻辑、数据访问或其他跨组件共享的功能。Angular提供了一种方便的方式来创建和注入服务,确保它们在整个应用中可用。 7. **指令(Directives)**:...
- **启动服务**:配置完成后,启动Web服务并测试应用是否正常运行。 ### 二、ThinkPHP框架的后端开发与配置 #### 2.1 ThinkPHP简介 ThinkPHP是一款基于PHP语言的开源Web应用框架,采用MVC架构设计,具有高效、灵活...