51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7097|回复: 20
打印 上一主题 下一主题

企业级web负载均衡完美架构

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-8-23 23:42:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
相信很多朋友对企业级的负载均衡高可用实例非常感兴趣,此篇文章根据成熟的线上环境而写,旨在帮助大家迅速架构一个企业级的负载均衡高可用的web环境。
此系统架构仅映射内网VIP的80及443端口于外网的Juniper防火墙下,其它端口均关闭,内网所有机器均关闭iptables及ipfw防火墙;外网DNS指向即通过Juniper映射出来的外网地址。



第一部分:Nginx+Keepalived的说明及环境说明

喜欢看我博客或文章的小伙都知道,我一直主力推崇Nginx+Keepalived作web的负载均衡高可用架构,并积极将其用于项目方案中;Nginx负载均衡作服务器遇到的故障一般有①服务器网线松动等网络故障;②服务器硬件故障从而crash;③nginx服务死掉;遇到前二者情况,keeaplived是能起到HA的作用的;然而遇到③种情况就没有办法了,但可以通过shell监控解决这问题,从而实现真正意义上的负载均衡高可用。此篇的最新更新时间为2010年6月25号,下面将其安装步骤详细说明下:

环境:

centos5.3(64位)、nginx-0.7.51、keepalived-1.1.15
主nginx负载均衡器:192.168.0.154
辅nginx负载均衡器:192.168.9.155
vip:192.168.0.188
第二部分:分别安装Nginx负载均衡器及相关配置脚本

先安装Nginx负载均衡器,nginx负载的配置就用一般的模板来配置了

#添加运行nginx的用户和组www  groupadd www   useradd -g www www   wget ftp://ftp.csx.cam.ac.uk/pub/soft ... cre/pcre-7.8.tar.gz  tar zxvf pcre-7.8.tar.gz  cd pcre-7.8/  ./configure  make && make install  wget http://sysoev.ru/nginx/nginx-0.7.51.tar.gz  tar zxvf nginx-0.7.51.tar.gz  cd nginx-0.7.51/  ./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module  make && make install
配置nginx负载均衡器的配置文件vim /usr/local/nginx/conf/nginx.conf,此篇文章仅仅只是我的某项目的配置文档,纯80转发;如果对nginx配置有https要求的可参考张宴的相关文章。

user   www www;  worker_processes 8;   error_log   /usr/local/webserver/nginx/logs/nginx_error.log   crit;pid         /usr/local/webserver/nginx/logs/nginx.pid;    worker_rlimit_nofile 65535;   events   {     use epoll;     worker_connections 65535;  }   http   {     include        mime.types;     default_type   application/octet-stream;              server_names_hash_bucket_size 128;     client_header_buffer_size 32k;     large_client_header_buffers 4 32k;     client_max_body_size 8m;              sendfile on;     tcp_nopush      on;      keepalive_timeout 60;      tcp_nodelay on;      fastcgi_connect_timeout 300;     fastcgi_send_timeout 300;     fastcgi_read_timeout 300;     fastcgi_buffer_size 64k;     fastcgi_buffers 4 64k;     fastcgi_busy_buffers_size 128k;     fastcgi_temp_file_write_size 128k;      gzip on;     gzip_min_length   1k;     gzip_buffers      4 16k;     gzip_http_version 1.0;     gzip_comp_level 2;     gzip_types        text/plain application/x-javascript text/css application/xml;     gzip_vary on;       server     {       listen        80;       server_name   www.cn7788.com;       index index.php index.htm;                                         location ~ .*\.(php|php5)?$       {                fastcgi_pass   127.0.0.1:9000;         fastcgi_index index.php;         include fcgi.conf;       }              location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$       {         expires       30d;       }        location ~ .*\.(js|css)?$       {         expires       1h;       }              location /nginx/ {         stub_status on;         access_log off;               log_format   weblogs   '$remote_addr - $remote_user [$time_local] $request '                      '"$status" $body_bytes_sent "$http_referer" '                      '"$http_user_agent" "$http_x_forwarded_for"';       access_log   /data/logs/weblogs.log   weblogs;       }      }  }

小节:

第一部分和第二部分讲的是如何通过安装Nginx来达到负载均衡后端web的目的,Nginx能实现自动切换后端有故障的web服务器,但Nginx与Nginx之间的高HA是如何实现的呢?

第三部分:安装Keepalived,让其分别作web及Nginx的HA

安装keepalived,并将其做成服务模式,方便以后调试。

wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz  #tar zxvf keepalived-1.1.15.tar.gz  #cd keepalived-1.1.15  #./configure --prefix=/usr/local/keepalived  #make   #make install  #cp /usr/local/keepalived/sbin/keepalived /usr/sbin/  #cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/  #cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/  #mkdir /etc/keepalived  #cd /etc/keepalived/   vim keepalived.conf  ! Configuration File for keepalived  global_defs {      notification_email {      yuhongchun027@163.com           }      notification_email_from keepalived@chtopnet.com      smtp_server 127.0.0.1      smtp_connect_timeout 30      router_id LVS_DEVEL  }  vrrp_instance VI_1 {       state MASTER       interface eth0       virtual_router_id 51       mcast_src_ip 192.168.0.155    <==主nginx的IP地址       priority 100       advert_int 1       authentication {           auth_type PASS           auth_pass chtopnet       }       virtual_ipaddress {           192.168.0.188                      <==vip地址       }  }  #service keepalived start
我们来看一下日志:

[root@ltos ~]# tail /var/log/messages  Oct 6 03:25:03 ltos avahi-daemon[2306]: Registering new address record for 192.168.0.188 on eth0.  Oct 6 03:25:03 ltos avahi-daemon[2306]: Registering new address record for 192.168.0.154 on eth0.  Oct 6 03:25:03 ltos avahi-daemon[2306]: Registering HINFO record with values 'I686'/'LINUX'.  Oct 6 03:25:23 ltos avahi-daemon[2306]: Withdrawing address record for fe80::20c:29ff:feb9:eeab on eth0.  Oct 6 03:25:23 ltos avahi-daemon[2306]: Withdrawing address record for 192.168.0.154 on eth0.  Oct 6 03:25:23 ltos avahi-daemon[2306]: Host name conflict, retrying with <ltos-31>
很显然vrrp已经启动,我们还可以通过命令来检查

[root@ltos html]# ip addr  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00       inet 127.0.0.1/8 scope host lo       inet6 ::1/128 scope host           valid_lft forever preferred_lft forever  2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000       link/ether 00:0c:29:ba:9b:e7 brd ff:ff:ff:ff:ff:ff       inet 192.168.0.154/24 brd 192.168.0.255 scope global eth0       inet 192.168.0.188/32 scope global eth0       inet6 fe80::20c:29ff:feba:9be7/64 scope link           valid_lft forever preferred_lft forever  3: sit0: <NOARP> mtu 1480 qdisc noop        link/sit 0.0.0.0 brd 0.0.0.0
说明vip已经启动,这样主服务器就配置好了,辅机的配置大致一样,除了配置文件有少部分的变化,下面贴出辅机的配置文件:

! Configuration File for keepalived  global_defs {      notification_email {      yuhongchun027@163.com           }      notification_email_from keepalived@chtopnet.com      smtp_server 127.0.0.1      smtp_connect_timeout 30      router_id LVS_DEVEL  }  vrrp_instance VI_1 {       state BACKUP       interface eth0       virtual_router_id 51       mcast_src_ip 192.168.0.154              <==辅nginx的IP的地址       priority 100       advert_int 1       authentication {           auth_type PASS           auth_pass chtopnet       }       virtual_ipaddress {           192.168.0.188       }  }
第四部分:针对Keepalived的不足,用Nginx_pid.sh来监控nginx进程,实现真正意义上的负载均衡高可用。

针对Nginx+Keepalived,编写nginx监控脚本nginx_pid.sh,此脚本思路其实也很简单,即放置在后台一直监控nginx进程;如进程消失,尝试重启nginx,如是失败则立即停掉本机的keepalived服务,让另一台负载均衡器接手,此脚本直接从生产环境下载:

vim /root/nginx_pid.sh   #!/bin/bash  while   :  do   nginxpid=`ps -C nginx --no-header | wc -l`   if [ $nginxpid -eq 0 ];then     /usr/local/nginx/sbin/nginx     sleep 5      if [ $nginxpid -eq 0 ];then      /etc/init.d/keepalived stop      fi   fi   sleep 5   done
然后置于后台运行 sh /root/nginx_pid.sh &,这种写法是错误的,这样你用root用户logout后,此进程会消失;正确写法为nohu /bin/bash /root/nginx_pid.sh &,附带下注释:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出root帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up),哈哈,差点老马失蹄了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

21#
发表于 2010-9-6 16:34:26 | 只看该作者

回复 7# 的帖子

感谢。。。
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2010-9-1 10:22:45 | 只看该作者
苍天有泪啊。楼主是绝对的测试人才。能考虑到这么多方面。佩服佩服!!!
回复 支持 反对

使用道具 举报

  • TA的每日心情
    擦汗
    2015-5-25 17:24
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    19#
    发表于 2010-8-31 17:33:29 | 只看该作者
    哥们,你拼了?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2010-8-24 09:52:54 | 只看该作者
    谢谢亲爱的楼主同志
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
     楼主| 发表于 2010-8-24 00:14:19 | 只看该作者

    重复测试?

    怎样测试文件里的不必要的测试内容?
    有没有什么好的测试方法?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
     楼主| 发表于 2010-8-24 00:12:45 | 只看该作者

    搜索测试

    搜索测试它的测试点是什么?
    如果去做搜索这类的公司一般考什么问题?
    谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
     楼主| 发表于 2010-8-24 00:10:33 | 只看该作者

    软件架构师

    软件架构师需要考什么证书比较权威
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2010-8-24 00:08:53 | 只看该作者

    邮件测试

    无论是什么邮箱,怎样测试才能测试它的是垃圾邮件
    有没有好的测试方法
    测试点是什么
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
     楼主| 发表于 2010-8-24 00:06:58 | 只看该作者

    网站测试注意哪些测试点?

    网站测试应该主意哪些测试点
    有没有比较权威的测试工具和相关的书籍
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2010-8-24 00:04:54 | 只看该作者

    bug跟踪器,现在最新的是什么软件,收费吗?

    谁知道bug跟踪器,现在最新的是什么软件,收费吗
    在哪里下载,是绿色版的吗?
    谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
     楼主| 发表于 2010-8-24 00:03:08 | 只看该作者

    性能测试工程师怎么培养?

    如果想转性能测试工程师,那所具备的条件是什么
    平常工作改主意写什么
    谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2010-8-24 00:00:51 | 只看该作者

    未来的软件测试,他的未来是什么?

    软件测试他的未来是什么行业
    他在哪里还有待提升
    谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2010-8-23 23:58:56 | 只看该作者

    如果想去金融,保险行业的测试,他的面试题和测试点是什么?

    如果想去金融,保险行业的测试,他的面试题和测试用例,以及经常考的测试问题?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2010-8-23 23:57:05 | 只看该作者

    手机测试的中的短信测试点是什么?

    谁哪里有手机的测试点和测试用例
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2010-8-23 23:55:28 | 只看该作者

    网站视频测试点!

    1.视频大小
    2.加载速度
    3.清晰度
    4.是否支持下载,下载后是否支持大多说的播放器
    5.是否支持拖动进度条
    6.相关的视频是否有提示用户功能
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2010-8-23 23:52:10 | 只看该作者

    聊天室测试

    对于一般的聊天室测试,主要从以下几点出发:
       1.功能测试:可以按照需求将功能覆盖。
       2.压力测试:可以自己写脚本或者使用一些工具如:LR,QTP等录制简单的脚本,然后模拟大数据量的压力测试。
       3.安全性测试:主要针对一些充值等接口的测试,确保在一般情况下,能够调用充值接口成功即可。
       4.视频音频等测试:1.主要模拟一些网络情况 如:网络带宽,丢包率,延时等可以借助一些工具如:Shunra VE
                      2.从网络状况来判断程序在实现视频音频等解码情况。
    做聊天室测试时,应该注意的问题:
       1.在做功能测试时,首先把握以下几点:1.权限以及与这个权限相对应的图标
                                           2.房间工资
                                           3.道具送礼(一对多,一对一,多对多,多对一)
                                           4.基本的聊天功能(文字,图片,视频,音频等)
       2.压力测试应该注意内存溢出、泄露等情况,当然也要集合整个系统。
       3.还有的其它方面欢迎后来者补上
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2010-8-23 23:51:05 | 只看该作者

    RTM表一般什么企业使用?

    什么企业可以介入RTM表
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2010-8-23 23:46:49 | 只看该作者

    16个经典面试问题回答思路 - Hry23大杂烩 - JAVA WEB MUSIC GIS

    面试技巧:16个经典面试问题回答思路


    问题一:“请你自我介绍一下”

    思路:

    1、这是面试的必考题目。

    2、介绍内容要与个人简历相一致。

    3、表述方式上尽量口语化。

    4、要切中要害,不谈无关、无用的内容。

    5、条理要清晰,层次要分明。

    6、事先最好以文字的形式写好背熟。



    问题二:“谈谈你的家庭情况”

    思路:

    1、 况对于了解应聘者的性格、观念、心态等有一定的作用,这是招聘单位问该问题的主要原因。

    2、 简单地罗列家庭人口。

    3、 宜强调温馨和睦的家庭氛围。

    4、 宜强调父母对自己查看更多教育的内容教育的重视。

    5、 宜强调各位家庭成员的良好状况。

    6、 宜强调家庭成员对自己工作的支持。

    7、 宜强调自己对家庭的责任感。



    问题三:“你有什么业余爱好?”

    思路:

    1、 业余爱好能在一定程度上反映应聘者的性格、观念、心态,这是招聘单位问该问题的主要原因。

    2、 最好不要说自己没有业余爱好。

    3、 不要说自己有那些庸俗的、令人感觉不好的爱好。

    4、 最好不要说自己仅限于读书、听音乐、上网,否则可能令面试官怀疑应聘者性格孤僻。 5、 最好能有一些户外的业余爱好来“点缀”你的形象。



    问题四:“你最崇拜谁?”

    思路:

    1、 最崇拜的人能在一定程度上反映应聘者的性格、观念、心态,这是面试官问该问题的主要原因。

    2、 不宜说自己谁都不崇拜。

    3、 不宜说崇拜自己。

    4、 不宜说崇拜一个虚幻的、或是不知名的人。

    5、 不宜说崇拜一个明显具有负面形象的人。

    6、 所崇拜的人人最好与自己所应聘的工作能“搭”上关系。

    7、 最好说出自己所崇拜的人的哪些品质、哪些思想感染着自己、鼓舞着自己。 



    问题五:“你的座右铭是什么?”

    思路:

    1、座右铭能在一定程度上反映应聘者的性格、观念、心态,这是面试官问这个问题的主要原因。

    2、不宜说那些医引起不好联想的座右铭。

    3、不宜说那些太抽象的座右铭。

    4、不宜说太长的座右铭。

    5、座右铭最好能反映出自己某种优秀品质。

    6、 参考答案——“只为成功找方法,不为失败找借口”



    问题六:“谈谈你的缺点”

    思路:

    1、 不宜说自己没缺点。

    2、 不宜把那些明显的优点说成缺点。

    3、 不宜说出严重影响所应聘工作的缺点。

    4、 不宜说出令人不放心、不舒服的缺点。

    5、 可以说出一些对于所应聘工作“无关紧要”的缺点,甚至是一些表面上看是缺点,从工作的角度看却是优点的缺点。



    问题七:“谈一谈你的一次失败经历”

    思路:

    1、 不宜说自己没有失败的经历。

    2、 不宜把那些明显的成功说成是失败。

    3、 不宜说出严重影响所应聘工作的失败经历,

    4、 所谈经历的结果应是失败的。

    5、 宜说明失败之前自己曾信心白倍、尽心尽力。

    6、 说明仅仅是由于外在客观原因导致失败。

    7、 失败后自己很快振作起来,以更加饱满的热情面对以后的工作。



    问题八:“你为什么选择我们公司?”

    思路:

    1、 面试官试图从中了解你的动机、愿望以及对此项工作的态度。

    2、 建议从行业、企业和岗位这三个角度来回答。

    3、 参考答案——“我十分看好贵公司所在的行业,我认为贵公司十分重视人才,而且这项工作很适合我,相信自己一定能做好。”



    问题九:“对这项工作,你有哪些可预见的困难?”

    思路:

    1、 不宜直接说出具体的困难,否则可能令对方怀疑应聘者不行。

    2、 可以尝试迂回战术,说出应聘者对困难所持有的态度——“工作中出现一些困难是正常的,也是难免的,但是只要有坚忍不拔的毅力、良好的合作精神以及事前周密而充分的准备,任何困难都是可以克服的。”



    问题十:“如果我录用你,你将怎样开展工作”

    思路:

    1、 如果应聘者对于应聘的职位缺乏足够的了解,最好不要直接说出自己开展工作的具体办法,

    2、 可以尝试采用迂回战术来回答,如“首先听取领导的指示和要求,然后就有关情况进行了解和熟悉,接下来制定一份近期的工作计划并报领导批准,最后根据计划开展工作。”



    问题十一:“与上级意见不一是,你将怎么办"

    思路:

    1、 一般可以这样回答“我会给上级以必要的解释和提醒,在这种情况下,我会服从上级的意见。”

    2、 如果面试你的是总经理,而你所应聘的职位另有一位经理,且这位经理当时不在场,可以这样回答:“对于非原则性问题,我会服从上级的意见,对于涉及公司利益的重大问题,我希望能向更高层领导反映。”



    问题十二:“我们为什么要录用你?”

    思路:

    1、 应聘者最好站在招聘单位的角度来回答。

    2、 招聘单位一般会录用这样的应聘者:基本符合条件、对这份共组感兴趣、有足够的信心。

    3、 如“我符合贵公司的招聘条件,凭我目前掌握的技能、高度的责任感和良好的饿适应能力及学习能力 ,完全能胜任这份工作。我十分希望能为贵 公司服务,如果贵公司给我这个机会,我一定能成为贵公司的栋梁!”



    问题十三:“你能为我们做什么?”

    思路:

    1、 基本原则上“投其所好”。
    2、 回答这个问题前应聘者最好能“先发制人”,了解招聘单位期待这个职位所能发挥的作用。

    3、 应聘者可以根据自己的了解,结合自己在专业领域的优势来回答这个问题。



    问题十四:“你是应届,缺乏经验,如何能胜任这项工作?”

    思路:

    1、 如果招聘单位对应届毕业生的应聘者提出这个问题,说明招聘单位并不真正在乎“经验”,关键看应聘者怎样回答。

    2、 对这个问题的回答最好要体现出应聘者的诚恳、机智、果敢及敬业。

    3、 如“作为应届毕业生,在工作经验方面的确会有所欠缺,因此在读书期间我一直利用各种机会在这个行业里做兼职。我也发现,实际工作远比书本知识丰富、复杂。但我有较强的责任心、适应能力和学习能力,而且比较勤奋,所以在兼职中均能圆满完成各项工作,从中获取的经验也令我受益非浅。请贵公司放心,学校所学及兼职的工作经验使我一定能胜任这个职位。”



    问题十五:“你希望与什么样的上级共事?”

    思路:

    1、 通过应聘者对上级的“希望”可以判断出应聘者对自我要求的意识,这既上一个陷阱,又上一次机会。

    2、 最好回避对上级具体的希望,多谈对自己的要求。

    3、 如“做为刚步入社会新人,我应该多要求自己尽快熟悉环境、适应环境,而不应该对环境提出什么要求,只要能发挥我的专长就可以了。”



    问题十六:“您在前一家公司的离职原因是什么?”

    思路:

    1、 最重要的是:应聘者要使找招聘单位相信,应聘者在过往的单位的“离职原因”在此家招聘单位里不存在。

    2、 避免把“离职原因”说得太详细、太具体。

    3、 不能掺杂主观的负面感受,如“太幸苦”、“人际关系复杂”、“管理太混乱”、“公司不重视人才”、“公司排斥我们某某的员工”等。

    4、 但也不能躲闪、回避,如“想换换环境”、“个人原因”等。

    5、 不能涉及自己负面的人格特征,如不诚实、懒惰、缺乏责任感、不随和等。

    6、 尽量使解释的理由为应聘者个人形象添彩。

    7、 如“我离职是因为这家公司倒闭。我在公司工作了三年多,有较深的感情。从去年始,由于市场形势突变,公司的局面急转直下。到眼下这一步我觉得很遗憾,但还要面对显示,重新寻找能发挥我能力的舞台。” 同一个面试问题并非只有一个答案,而同一个答案并不是在任何面试场合都有效,关键在于应聘者掌握了规律后,对面试的具体情况进行把握,有意识地揣摩面试官提出问题的心理背景,然后投其所好。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2010-8-23 23:45:39 | 只看该作者

    Web测试的经典总结

    基于Web的系统测试在基于Web的系统开发中,如果缺乏严格的过程,我们在开发、发布、实施和维护Web的过程中,可能就会碰到一些严重的问题,
    失败的可能性很大。而且,随着基于Web的系统变得越来越复杂,一个项目的失败将可能导致很多问题。当这种情况发生时,我们对Web和Internet
    的信心可能会无法挽救地动摇,从而引起Web危机。并且,Web危机可能会比软件开发人员所面对的软件危机更加严重、更加广泛。

      在Web工程过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作。基于Web的系统测试与传统的软件测试不同,它不但需要检查
    和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。然而,
    Internet和Web媒体的不可预见性使测试基于Web的系统变得困难。因此,我们必须为测试和评估复杂的基于Web的系统研究新的方法和技术。
    一般软件的发布周期以月或以年计算,而Web应用的发布周期以天计算甚至以小时计算。

      Web测试人员必须处理更短的发布周期,测试人员和测试管理人员面临着从测试传统的C/S结构和框架环境到测试快速改变的Web应用系统的转变。

      一、 功能测试
      1、链接测试 链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面。首
    先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证Web应用系统上没有孤立的页面,所谓孤立页
    面是指没有链接指向该页面,只有知道正确的URL地址才能访问。 链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完
    成,也就是说,在整个Web应用系统的所有页面开发完成之后进行链接测试。

      2、表单测试 当用户给Web应用系统管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。在这种情况下,我们必须测试提交操
    作的完整性,以校验提交给服务器的信息的正确性。例如:用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。如果使用了默认值,还
    要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。

      3、Cookies测试 Cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cookies访问了某一个应用系统时,
    Web服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。 如果
    Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保
    存,刷新对Cookies有什么影响等。

      4、设计语言测试 Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人
    员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言,例如Java、JavaScript、 ActiveX、
    VBScript或Perl等也要进行验证。

      5、数据库测试 在Web应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在
    Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。 在使用了数据库的Web应用系统中,一般情况下,可能发生两种错
    误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起
    的,针对这两种情况,可分别进行测试。

      二、 性能测试

      1、连接速度测试

      用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅
    仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。 另外,有些页面有超时的限制,如果响应速
    度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。

      2、负载测试

      负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户
    数量,也可以是在线数据处理的数量。例如:Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?Web应用系统能否处理大量
    用户对同一个页面的请求?

      3、压力测试

      负载测试应该安排在Web系统发布以后,在实际的网络环境中进行测试。因为一个企业内部员工,特别是项目组人员总是有限的,而一个Web系统能同时
    处理的请求数量将远远超出这个限度,所以,只有放在Internet上,接受负载测试,其结果才是正确可信的。 进行压力测试是指实际破坏一个Web应
    用系统,测试系统的反映。压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃。黑客常常提供错误的数据
    负载,直到Web应用系统崩溃,接着当系统重新启动时获得存取权。 压力测试的区域包括表单、登陆和其他信息传输页面等。
      三、 可用性测试

      1、导航测试 导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过
    考虑下列问题,可以决定一个Web应用系统是否易于导航:导航是否直观?Web系统的主要部分是否可通过主页存取?Web系统是否需要站点地图、搜索引
    擎或其他的导航帮助? 在一个页面上放太多的信息往往起到与预期相反的效果。Web应用系统的用户趋向于目的驱动,很快地扫描一个Web应用系统,看是
    否有满足自己需要的信息,如果没有,就会很快地离开。很少有用户愿意花时间去熟悉Web应用系统的结构,因此,Web应用系统导航帮助要尽可能地准
    确。 导航的另一个重要方面是Web应用系统的页面结构、导航、菜单、连接的风格是否一致。确保用户凭直觉就知道Web应用系统里面是否还有内容,内容
    在什么地方。 Web应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。

      2、图形测试 在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个Web应用系统的图形可以包括图片、
    动画、边框、颜色、字体、背景、按钮等。

      图形测试的内容有:
      (1)要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。Web应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事
    情,一般都链接到某个具体的页面。
      (2)验证所有页面字体的风格是否一致。
      (3)背景颜色应该与字体颜色和前景颜色相搭配。
      (4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩。

      3、内容测试

      内容测试用来检验Web应用系统提供信息的正确性、准确性和相关性。 信息的正确性是指信息是可靠的还是误传的。例如,在商品价格列表中,错误的价
    格可能引起财政问题甚至导致法律纠纷;信息的准确性是指是否有语法或拼写错误。这种测试通常使用一些文字处理软件来进行,例如使用Microsoft
    Word的"拼音与语法检查"功能;信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口,也就是一般Web站点中的所谓"相关
    文章列表"。

      4、整体界面测试

      整体界面是指整个Web应用系统的页面结构设计,是给用户的一个整体感。例如:当用户浏览Web应用系统时是否感到舒适,是否凭直觉就知道要找的信
    息在什么地方?整个Web应用系统的设计风格是否一致? 对整体界面的测试过程,其实是一个对最终用户进行调查的过程。一般Web应用系统采取在主页上
    做一个调查问卷的形式,来得到最终用户的反馈信息。 对所有的可用性测试来说,都需要有外部人员(与Web应用系统开发没有联系或联系很少的人员)的参
    与,最好是最终用户的参与。

      四、 客户端兼容性测试

      1、平台测试

      市场上有很多不同的操作系统类型,最常见的有Windows、Unix、Macintosh、Linux等。Web应用系统的最终用户究竟使用哪一
    种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失
    败。 因此,在Web系统发布之前,需要在各种操作系统下对Web系统进行兼容性测试。

      2、浏览器测试

      浏览器是Web客户端最核心的构件,来自不同厂商的浏览器对Java,、JavaScript、 ActiveX、 plug-ins或不同的
    HTML规格有不同的支持。例如,ActiveX是Microsoft的产品,是为Internet Explorer而设计的,JavaScript
    是Netscape的产品,Java是Sun的产品等等。另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安
    全性和Java的设置也不一样。 测试浏览器兼容性的一个方法是创建一个兼容性矩阵。在这个矩阵中,测试不同厂商、不同版本的浏览器对某些构件和设置的
    适应性。

      五、 安全性测试

      Web应用系统的安全性测试区域主要有:

      (1)现在的Web应用系统基本采用先注册,后登陆的方式。因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限
    制,是否可以不登陆而直接浏览某个页面等。

      (2)Web应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。

      (3)为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。

      (4)当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。

      (5)服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。

      六、总结

      本文从功能、性能、可用性、客户端兼容性、安全性等方面讨论了基于Web的系统测试方法。 基于Web的系统测试与传统的软件测试既有相同之处,也
    有不同的地方,对软件测试提出了新的挑战。基于Web的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显
    示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-26 11:20 , Processed in 0.080032 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表