《服务器系统的性能测试》由会员分享,可在线阅读,更多相关《服务器系统的性能测试(12页珍藏版)》请在金锄头文库上搜索。
1、服务器系统的性能测试软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性 能是否符合开发之前所提出的一些要求。软件测试的目的,第一是确认软件的质 量,其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方 式来做了这个事件。第二是提供信息,比如提供给开发人员或程序经理的反馈信 息,为风险评估所准备的信息。第三软件测试不仅是在测试软件产品的本身,而 且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这 说明此软件开发过程很可能是有缺陷的。本文就海量服务器的性能做用户登录的 压力测试,设计此测试程序只是一个简单的多线程和网络程序,不用涉及线程同 步和高级
2、的网络模型就能达到测试目的。在测试程序实现过程中用到了 WinSock API 和多线程的有关知识及 SQL Server 数据库,文中介绍了一般的测试流程、 简单常用的测试方法和网络聊天程序的服务器工作模式。重点是测试大量用户同 时登录服务器时服务器所能承受的压力状况,该思想可用于大量基于 TCP/IP 或 UDP 协议的网络服务器。E(0,t) = A扫expexp式中的代表频率。关键词:测试流程、性能测试、WinSock API、服务器Abstract:The software testing is the important component of software developi
3、ng, 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 wha
4、t 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 softw
5、are 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 multi
6、threading 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-th
7、read 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
8、 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, server第一章 引 言编程大师说:“任何一个程序,无论它多么小,总存在着错误。”初学者不相 信大师的话,他问:“如果一个程序小得只执行一个简单的功能,那会怎样?” “这样的一个程序没有意义,”大师说,“但如果这样的程序存在的话,操
9、作系统 最后将失效,产生一个错误。”但初学者不满足,他问:“如果操作系统不失效, 那么会怎样?”“没有不失效的操作系统,”大师说,“但如果这样的操作系统存 在的话,硬件最后将失效,产生一个错误。”初学者仍不满足,再问:“如果硬件 不失效,那么会怎样?”大师长叹一声道:“没有不失效的硬件。但如果这样的 硬件存在的话,用户就会想让那个程序做一件不同的事,这件事也是一个错误。” 没有错误的程序世间难求。James 1999错误是一种严重的程序缺陷。测试的目的是为了发现尽可能多的缺陷,并期 望通过改错来把缺陷统统消灭,以期提高软件的质量医生可以把他的错误埋葬在 地下了事,但程序员不能。我们必须要学会测
10、试与改错,并且把测试与改错工作 做好。软件测试在中国目前的软件行业属于比较薄弱的一环,前些年,国内企业对产 品的测试工作都不太重视,很少有人实施过海量服务器的性能测试工作。对于海 量用户的大型服务器系统,在数百万或更高访问量的情况下,对服务器的稳定性、 可靠性等方面有极高的要求,因此我们在开发这种类型的服务器系统上需要进行 严格甚至苛刻的性能测试,以保证服务器能够承受极大用户量的同时访问。本课 题就目前广联公司的eWork系统进行这种海量服务器的性能测试。第二章 测试简介2.1 测试方法简介2.1.1 测试方法分类有一次文学考试,问高尔基是哪国人。一考生乐极而吟:“尔基啊尔基,你 若不姓高,我
11、怎知你是中国人。”这是一种瞎猜法。如果这种方法用于软件测试, 人累死也测不出什么结果来。软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性 能是否符合开发之前所提出的一些要求。软件测试的目的,第一是确认软件的质 量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是 确认软件以正确的方式来做了这个事件(Do it right)。第二是提供信息,比如提 供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。第三软件测试 不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品 开发完成之后发现了很多问题,这说明此软件开发过程
12、很可能是有缺陷的。因此 软件测试的第三个目的是保证整个软件开发过程是高质量的。不论是对软件的模块还是整个系统,总有共同的内容要测试,如正确性测试, 容错性测试,性能与效率测试,易用性测试,文档测试等。“白盒测试”是指开 发人员从程序内部对上述内容进行测试,而“黑盒测试”是指独立的测试人员从 程序外部对上述内容进行测试。正确性测试又称功能测试,它检查软件的功能是否符合规格说明。由于正确 性是软件最重要的质量因素,所以其测试也最重要。基本的方法是构造一些合理 输入,检查是否得到期望的输出。这是一种枚举方法。倘若枚举空间是无限的, 那可惨了,还不如回家种土豆有盼头。测试人员一定要设法减少枚举的次数,
13、否 则没好日子过。关键在于寻找等价区间,因为在等价区间中,只需用任意值测试 一次即可。容错性测试是检查软件在异常条件下的行为。容错性好的软件能确保系统不 发生无法意料的事故。易用性测试没有一个量化的指标,主观性较强。调查表明,当用户不理解软 件中的某个特性时,大多数人首先会向同事、朋友请教。要是再不起作用,就向 产品支持部门打电话。只有30%的用户会查阅用户手册。 Cusumano 1995文档测试主要检查文档的正确性、完备性和可理解性。好多人甚至不知道文档是软件的一个组成部分。正确性是指不要把软件的功能和操作写错,也不允许 文档内容前后矛盾。2.1.2 黑盒测试与白盒测试黑盒测试顾名思义就是
14、将被测系统看成一个黑盒,从外界取得输入,然后再 输出。整个测试基于需求文档,看是否能满足需求文档中的所有要求。黑盒测试 要求测试者在测试时不能使用与被测系统内部结构相关的知识或经验,它适用于 对系统的功能进行测试。黑盒测试的优点有:1) 比较简单,不需要了解程序内部的代码及实现;2) 与软件的内部实现无关;3) 从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问 题;4) 基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;5) 在做软件自动化测试时较为方便。 黑盒测试的缺点有:1) 不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量 30%;2) 自动化测试的复用性较低
15、。白盒测试是指在测试时能够了解被测对象的结构,可以查阅被测代码内容的 测试工作。它需要知道程序内部的设计结构及具体的代码实现,并以此为基础来 设计测试用例。如下例程序代码:HRESULT Play( char* pszFileName )if ( NULL = pszFileName )return;if ( STATE_OPENED = currentState )PlayTheFile();return;读了代码之后可以知道,先要检查一个字符串是否为空,然后再根据播放器 当前的状态来执行相应的动作。可以这样设计一些测试用例:比如字符串(文件) 为空的话会出现什么情况;如果此时播放器的状态是
16、文件刚打开,会是什么情况; 如果文件已经在播放,再调用这个函数会是什么情况。也就是说,根据播放器内 部状态的不同,可以设计很多不同的测试用例。这些是在纯粹做黑盒测试时不一 定能做到的事情。白盒测试的直接好处就是知道所设计的测试用例在代码级上哪些地方被忽 略掉,它的优点是帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现 代码中隐藏的问题。白盒测试的缺点有:1)程序运行会有很多不同的路径,不可能测试所有的运行路径;2)测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确 与否,可能会漏掉一些功能需求;3)系统庞大时,测试开销会非常大。2.2 性能测试2.2.1 性能测试的概念本课题主要研究 eWork 系统服务器承受能力来研究这种性能测试方案的可 行性。性能测试是在交替进行负荷和强迫测试时常用的术语。性能测试关注的是系 统的整体,