




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
服务器系统的性能测试服务器系统的性能测试摘 要: 软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事件。第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。本文就海量服务器的性能做用户登录的压力测试,设计此测试程序只是一个简单的多线程和网络程序,不用涉及线程同步和高级的网络模型就能达到测试目的。在测试程序实现过程中用到了WinSock API 和多线程的有关知识及SQL Server 数据库,文中介绍了一般的测试流程、简单常用的测试方法和网络聊天程序的服务器工作模式。重点是测试大量用户同时登录服务器时服务器所能承受的压力状况,该思想可用于大量基于TCP/IP或UDP协议的网络服务器。式中的 代表频率。关键词:测试流程、性能测试、WinSock API、服务器Abstract:The software testing is the important component of software developing, is used to confirm whether a procedure quality or performance conform to some requests proposed before the development. The purpose of the software testing: first, confirming the quality of software. On the one hand , software has done which you expected ;second, confirming software has done what you wanted by the correct way. Second ,The second is to provide the information .For example , feedback information for risk assessment. to the development personnel or procedure manager. The third ,software testing is to test not only the software product itself, but also the process of the software development .If there are many problems after software development,the process of software development is likely to be defective. We makes the pressure testing about the magnanimous server performance when the users register on this article ,and design this testing programme to be a simple multithreading and the network procedure. It can achieve the test goal and does not need to involve line regulation synchronization and the high-level network model . In the test process,we used WinSock API and the knowledge about multi-thread and the SQL server database.Used WinSock API and the multi-thread related knowledge and the SQL server database in the test order realization process. In the article we introduced the general testing flow, the simple and commonly testing method and the working pattern of network chat procedure server. The key point is to test the pressure condition when a lot of users simultaneously register the server, we can use this thought in network servers based on TCP/IP or the UDP agreement. Keywords: flow of testing, ability testing, WinSock API, serverII第一章 引 言编程大师说:“任何一个程序,无论它多么小,总存在着错误。”初学者不相信大师的话,他问:“如果一个程序小得只执行一个简单的功能,那会怎样?”“这样的一个程序没有意义,”大师说,“但如果这样的程序存在的话,操作系统最后将失效,产生一个错误。”但初学者不满足,他问:“如果操作系统不失效,那么会怎样?”“没有不失效的操作系统,”大师说,“但如果这样的操作系统存在的话,硬件最后将失效,产生一个错误。”初学者仍不满足,再问:“如果硬件不失效,那么会怎样?”大师长叹一声道:“没有不失效的硬件。但如果这样的硬件存在的话,用户就会想让那个程序做一件不同的事,这件事也是一个错误。”没有错误的程序世间难求。James 1999错误是一种严重的程序缺陷。测试的目的是为了发现尽可能多的缺陷,并期望通过改错来把缺陷统统消灭,以期提高软件的质量医生可以把他的错误埋葬在地下了事,但程序员不能。我们必须要学会测试与改错,并且把测试与改错工作做好。软件测试在中国目前的软件行业属于比较薄弱的一环,前些年,国内企业对产品的测试工作都不太重视,很少有人实施过海量服务器的性能测试工作。对于海量用户的大型服务器系统,在数百万或更高访问量的情况下,对服务器的稳定性、可靠性等方面有极高的要求,因此我们在开发这种类型的服务器系统上需要进行严格甚至苛刻的性能测试,以保证服务器能够承受极大用户量的同时访问。本课题就目前广联公司的eWork系统进行这种海量服务器的性能测试。第二章 测试简介2.1 测试方法简介 2.1.1 测试方法分类有一次文学考试,问高尔基是哪国人。一考生乐极而吟:“尔基啊尔基,你若不姓高,我怎知你是中国人。”这是一种瞎猜法。如果这种方法用于软件测试,人累死也测不出什么结果来。软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。不论是对软件的模块还是整个系统,总有共同的内容要测试,如正确性测试,容错性测试,性能与效率测试,易用性测试,文档测试等。“白盒测试”是指开发人员从程序内部对上述内容进行测试,而“黑盒测试”是指独立的测试人员从程序外部对上述内容进行测试。正确性测试又称功能测试,它检查软件的功能是否符合规格说明。由于正确性是软件最重要的质量因素,所以其测试也最重要。基本的方法是构造一些合理输入,检查是否得到期望的输出。这是一种枚举方法。倘若枚举空间是无限的,那可惨了,还不如回家种土豆有盼头。测试人员一定要设法减少枚举的次数,否则没好日子过。关键在于寻找等价区间,因为在等价区间中,只需用任意值测试一次即可。容错性测试是检查软件在异常条件下的行为。容错性好的软件能确保系统不发生无法意料的事故。易用性测试没有一个量化的指标,主观性较强。调查表明,当用户不理解软件中的某个特性时,大多数人首先会向同事、朋友请教。要是再不起作用,就向产品支持部门打电话。只有30%的用户会查阅用户手册。Cusumano 1995文档测试主要检查文档的正确性、完备性和可理解性。好多人甚至不知道文档是软件的一个组成部分。正确性是指不要把软件的功能和操作写错,也不允许文档内容前后矛盾。2.1.2黑盒测试与白盒测试黑盒测试顾名思义就是将被测系统看成一个黑盒,从外界取得输入,然后再输出。整个测试基于需求文档,看是否能满足需求文档中的所有要求。黑盒测试要求测试者在测试时不能使用与被测系统内部结构相关的知识或经验,它适用于对系统的功能进行测试。黑盒测试的优点有:1)比较简单,不需要了解程序内部的代码及实现;2)与软件的内部实现无关;3)从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;5)在做软件自动化测试时较为方便。黑盒测试的缺点有:1)不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量30%;2)自动化测试的复用性较低。白盒测试是指在测试时能够了解被测对象的结构,可以查阅被测代码内容的测试工作。它需要知道程序内部的设计结构及具体的代码实现,并以此为基础来设计测试用例。如下例程序代码:HRESULT Play( char* pszFileName )if ( NULL = pszFileName ) return;if ( STATE_OPENED = currentState ) PlayTheFile();return;读了代码之后可以知道,先要检查一个字符串是否为空,然后再根据播放器当前的状态来执行相应的动作。可以这样设计一些测试用例:比如字符串(文件)为空的话会出现什么情况;如果此时播放器的状态是文件刚打开,会是什么情况;如果文件已经在播放,再调用这个函数会是什么情况。也就是说,根据播放器内部状态的不同,可以设计很多不同的测试用例。这些是在纯粹做黑盒测试时不一定能做到的事情。白盒测试的直接好处就是知道所设计的测试用例在代码级上哪些地方被忽略掉,它的优点是帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。白盒测试的缺点有:1)程序运行会有很多不同的路径,不可能测试所有的运行路径;2)测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;3)系统庞大时,测试开销会非常大。2.2 性能测试2.2.1性能测试的概念本课题主要研究eWork系统服务器承受能力来研究这种性能测试方案的可行性。性能测试是在交替进行负荷和强迫测试时常用的术语。性能测试关注的是系统的整体,它和通常所说的强度、压力/负载测试测试有密切关系。所以压力和强度测试应该于性能测试一同进行。 举例说明:针对一个网站进行测试,模拟10到50个用户就是在进行常规性能测试,用户增加到1000乃至上万就变成了压力/负载测试。如果同时对系统进行大量的数据查询操作,就包含了强度测试。压力测试是对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。例如测试一个 Web 站点在大量的负荷下,何时系统的响应会退化或失败。 压力测试注重的是外界不断施压,强度测试注重的是极限或者异常情况下系统的测试。2.2.2 性能与效率测试性能与效率测试主要是测试软件的运行速度和对资源的利用率。有时人们关心测试的“绝对值”,如数据送输速率是每秒多少比特。有时人们关心测试的“相对值”,如某个软件比另一个软件快多少倍。在获取测试的“绝对值”时,我们要充分考虑并记录运行环境对测试的影响。例如计算机主频,总线结构和外部设备都可能影响软件的运行速度;若与多个计算机共享资源,软件运行可能慢得像蜗牛爬行。在获取测试的“相对值”时,我们要确保被测试的几个软件运行于完全一致的环境中。硬件环境的一致性比较容易做到(用同一台计算机即可)。但软件环境的因素较多,除了操作系统,程序设计语言和编译系统对软件的性能也会产生较大的影响。如果是比较几个算法的性能,就要求编程语言和编译器也完全一致。性能与效率测试中很重要的一项是极限测试,因为很多软件系统会在极限测试中崩溃。例如,连续不停地向服务器发请求,测试服务器是否会陷入死锁状态不能自拔;给程序输入特别大的数据,看看它是否吃得消。2.3 压力测试2.3.1压力测试的流程压力测试的目的就是要通过搭建与实际使用环境相类似的测试环境, 用测试程序在同一时间内、或某一段时间内, 向系统发送预期数量的交易请求, 测试系统在不同压力情况下的效率状况, 以及系统可以承受的压力情况, 然后做针对性的测试与分析. 找到影响系统性能的瓶颈, 并根据该数据评估系统在实际使用环境下的效率情况, 作为评价系统性能、以及判断是否需要对应用系统进行优化处理或结构调整的依据, 然后对系统资源进行优化, 提高响应时间与吞吐量是压力测试的最终目的。 压力测试流程:(如图2.1) 图2.1压力测试流程2.3.2编写压力测试计划编写内容全面的、高质量的压力测试计划书是取得压力测试成功的关键。 好的计划书能使压力测试具有全面性、针对性、有效性。为了完成测试计划书, 一定要与用户和开发人员交流, 了解掌握用户需求, 并把他贯彻于测试之中. 通过对需求的了解、对数据库应用系统的分析, 确定压力测试对象, 做到有的放矢; 同时, 这些工作也是测试结果的分析的基础.编写计划书分为以下三个阶段:分析应用系统分析数据库应用系统的两个主要任务: 第一, 搞清系统对各个资源的分布与使用情况,它将帮我们确定可能系统性能的瓶颈;第二, 搞清用户事务的分布, 确定压力测试的针对点。 我们定义事务是用来表示用户要求服务器连续完成的操作任务。因为大多数系统都是网络系统,而且网络常常也是降低响应时间的主要原因, 所以我们通过资源示意图来分析系统的资源。为了更详细的说明资源的性能, 我们要求对资源示意图中的每个资源的属性进行列表说明。例如, 对于路由器, 说明它运行的系统, 它的网络处理能力, 响应时间等; 对于通信媒介, 它的性能, 容量等; 对于主机, 说明它的CPU 性能, 内存大小, I/O 外设性能, 运行的操作系统, 数据库系统, 应用软件系统, 还有运行应用软件系统的系统配置文件等;对于客户端, 它的CPU 性能, 内存大小, 操作系统版本, 应用软件系统客户端运行软件, 与主机通信机制, 及整个系统客户端的个数。我们用事务分布图来分析实际用户的事务操作时间分布。 用X 轴表示时间, 用Y 轴表示各个事务, (x, y) 表示在X 时刻, Y 事务操作的用户个数。 我们举例如下(如图1.2)。 图2.2事务分布图得到系统事务分布图后, 可以大致确定压力测试点, 压力测试一定要模拟用户事务操作最繁忙的时刻来进行. 对于上图中在12 点到2 点有210 个用户登录, 15 个用户在完成记帐操作, 180 个用户做创建记录操作, 30 个用户做查询操作, 90 个用户做数据更新操作. 与别的时刻相比这一段时间内户的事务比较繁忙, 我们应模拟这一时刻进行压力测试。 根据实际情况, 也可以选几个点进行压力测试。2)定义压力测试目标在压力测试计划书中要定义我们测试的对象, 并对每一个测试对象给出清晰说明,也要定义测试结束的目标。为控制测试的有效性以及完成程度, 必须定义准则和策略, 以判断何时结束测试阶段。准则必须是客观的, 可量化的, 而不能是经验或感觉。3)评审修改压力测试计划当压力测试计划书完成后, 应对其进行评审。 压力测试计划书的评审人员应包括有经验的用户, 软件需求书的提交人员, 系统设计人员, 系统开发人员, 软件测试人员。然后根据评审意见修订并完成测试压力计划书。有效的用例评审通常由下面两种形式组成: 测试部门外部评审主要是由开发部、项目实施部、甚至销售人员参加的评审,目的主要是查找测试工程师编写的用例是否缺少内容。一般采用非正式评审的形式进行,因为很难把开发人员组织在一起,通常他们开发进度通常很大,他们能够抽出时间看您的文档已经是“很给面子了”。当然不统一进行会耽误评审的进度,所以在实际工作中如果时间紧迫可以提前启动测试,待评审完成后进行用例的修改工作。通常测试工作进行一段时间评审就会结束,这个时候测试执行人员可以在工作中对测试用例的内容进行动态的调整,再次执行已经执行过的并且进行修改的部分用例。(如果能够采用正式评审效果肯定更好。) 测试部门内部评审部门内部同行对测试策略的评审,中心是测试策略和用例编制思路是否正确,以次来保证测试用例的有效性。可以组织正式的评审,由用例的设计人员进行讲解,然后大家共同评审;也可以把文档发给部门的同事进行评审。内部评审有些象开发人员在单元测试中交叉测试。 其中的外部评审最重要,因为开发人员很容易发现您的用例遗漏了什么内容没有编制进去,同时还可以发现错误的用例因为您可能对需求理解存在偏差。用例外部评审可以理解为开发人员在查找您的“程序”的缺陷。 通常情况下先执行内部评审,然后执行外部评审。很多时候,内部评审会被忽略,建议要进行内部评审。这样至少有两个好处:集思广益和提高测试小组输出文档的质量。2.3.3用多线程模拟多用户(设置测试数据)压力测试的执行通常是通过工具执行脚本语言, 具有灵活性, 可修改性, 是发展的主流方向, 它的思想是通过多进程运行相同或不同的测试脚本, 来模拟多个用户执行相同或不同的任务, 实现压力测试。 压力测试软件采用解释测试脚本语言实现的, 脚本中包含测试工具中使用的指令和数据, 并包含有控制信息。压力测试脚本采取数据驱动方式。为了让所有的进程顺利执行, 必须对测试数据进行参数化。参数化的方法如下: 1) 找到需要参数化的域, 可以通过比较测试脚本, 找到需要参数化的域。比如, 我们比较执行同一事务的两个可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业秘密保护与企业竞争力提升
- 2025年放射性物质运输与储存安全协议
- 如何防范数据安全漏洞
- 人防工程施工中的劳动保障与工人健康管理
- 人防工程施工中的环境影响评估与控制
- 文化艺术与社会发展的互动关系
- 2025年秋季学期江苏省南京市七年级下学期期末数学试卷(含逻辑推理2025年应用题)
- T-WHCIA 1003-2023 全过程工程咨询服务管理标准
- 师风师德演讲培训81
- 牦牛产业链中冷链物流的创新模式
- 劳动教育智慧树知到期末考试答案章节答案2024年上海杉达学院
- 2023年南平市高校毕业生服务社区计划招募考试真题
- HG-T 4062-2023 波形挡边输送带
- 西安市灞桥区2024年公开招聘事业单位工作人员历年公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 广东省课程思政示范高职院校申报书
- 提水试验过程及数据处理
- 24春国家开放大学《公共关系学》形考任务1-4参考答案
- 精神障碍者民事行为能力评定指南
- 游泳池安全保障制度和措施范本
- 2024届高考语文复习诗歌教考融合之《登高》(含解析)
- 中南地区工程建设标准设计建筑图集 13ZJ301 建筑无障碍设施
评论
0/150
提交评论