web测试小结

一.用户界面测试

如果有设计稿,当然按照设计稿进行测试;没有设计稿,就参考原型;如果都没有,就按照web大众排版设计要求测试了,当然,还是产品看过为准。

以下简单总结一下测试的点。

1.导航测试

很少有用户愿意花时间去熟悉web应用系统的结构,因此,web应用系统导航帮助要尽可能地准确。

测试点:导航形式:按钮,对话框,列表,窗口等,是否直观,样式是否正确,风格是否一致。

导航链接:页面的链接等

导航文案

2. 图形(多媒体)测试

Web应用中,主流的一些多媒体内容包括图片、GIF动画、Flash、Silverlight等

测试点:

图形的尺寸、大小、质量:一般采用JPG、GIF、PNG格式,并且在不影响图片质量的情况下能使图片的大小减小到 30k 以下

图形排版、正确性:图片或动画排列有序并且目的明确

图形链接:链接有效,并且链接的属性正确(比如是新建窗口打开还是在当前页面打开)

背景颜色:应该与字体颜色和前景颜色相搭配

文字环绕:位置等

GIF动画:是否设置了正确的循环模式,其颜色是否显示正常等

测试工具:

浏览器的自带调试工具,就很有用。主要还是人工。

3. 内容测试

用来检验Web应用系统提供信息的正确性、准确性和相关性。

测试点:

文案:文字表达是否恰当,是否有错字等

字体、大小、颜色、对齐方式、风格

页面元素排版:导航、表单、图形、控件等位置、大小排版

Web页面结构、导航、菜单、超级链接的风格是否一致,比如指向超级链接,点击超级链接,访问后的超级链接是否都进行了处理

背景颜色、元素颜色等

段落

链接的形式、位置、是否易于理解等

4. 容器测试

DIV和表格在页面布局上的基本作用都是作为一种容器。

测试点:

一方面是作为控件,需要检测其是否设置正确,每一栏的宽度是否足够宽,表格里的文字是否都有折行,是否有因为某一格的内容太多,而将整行的内容拉长等;

另一方面,表格作为较早的网页布局方式,目前依然有很多的Web页使用该方式实现Web页设计,此时则需要考虑浏览器窗口尺寸变化、Web页内容动态增加或者删除对Web界面的影响。

5. 系统界面测试

系统风格、设计排版等。主要是不相关人员的反馈了。

二、功能测试

1. 链接测试

1.1 测试点:

是否添加链接

链接页面是否存在

链接页面与需求是否一致:页面的正确性、打开方式 等

一般,该链接测试在集成测试阶段(页面均开发完成)的时候进行

1.2 测试工具:

Xenu Link Sleuth 免费 绿色免安装软件

HTML Link Validator 共享(30天试用)

1.3 延伸代码:

测试工具在实际应用时,其实是挺受限的。有时候,需要自己写点小代码去验证,主要用于系统回归。

比如:

code1:

//        封装判断web链接返回状态是否为2开头的

public static void ReadUrl(String surl){

try {

URL url = new URL(surl);

URLConnection rulConnection   = url.openConnection();

HttpURLConnection httpUrlConnection  =  (HttpURLConnection) rulConnection;

httpUrlConnection.setConnectTimeout(300000);

httpUrlConnection.setReadTimeout(300000);

httpUrlConnection.connect();

String code = new Integer(httpUrlConnection.getResponseCode()).toString();

String message = httpUrlConnection.getResponseMessage();

//                  System.out.println("getResponseCode code ="+ code);

//                  System.out.println("getResponseMessage message ="+ message);

if(!code.startsWith("2")){

throw new Exception(surl+"ResponseCode is not begin with 2,code="+code);

}

//                   打印链接返回状态码

//                   System.out.println(getDateTime()+"连接"+surl+"正常");

}catch(Exception ex){

//                   System.out.println(surl+ex.getMessage());

}

}

//     封装模拟发起post请求一

public static String sendPost(String strUrl, String content, String charset)  {

URL httpurl = null;

HttpURLConnection httpConn = null;

String returnStr = "";

PrintWriter outs = null;

try {

httpurl = new URL(strUrl);

httpConn = (HttpURLConnection) httpurl.openConnection();

httpConn.setRequestMethod( "POST"); // 默认是post

// 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在 http正文内,因此需要设为true, 默认情况下是false;

httpConn.setDoOutput( true);

// 设置是否从httpUrlConnection读入,默认情况下是true;

httpConn.setDoInput( true);

httpConn.setRequestProperty( "Content-Type", "text/xml");

outs = new PrintWriter(httpConn.getOutputStream());

outs.print(content);

outs.flush();

outs.close();

// 字节流 读取全部内容 包括换行符

returnStr = inputStreamToString(httpConn.getInputStream(), charset);

} catch (Exception e) {

logger.error( "执行HTTP Post请求" + strUrl + "时,发生异常!" , e);

if(outs != null){

outs.close();

outs = null;

}

return returnStr;

} finally {

if (httpConn != null)

httpConn.disconnect();

if(outs != null){

outs.close();

outs = null;

}

}

return returnStr;

}

//     封装读取请求响应的内容

public static String inputStreamToString(InputStream in,String encoding) throws Exception{

ByteArrayOutputStream outStream = new ByteArrayOutputStream();

byte[] data = new byte[1024];

int count = -1;

while((count = in.read(data,0, 1024)) != -1)

outStream.write(data, 0, count);

in.close();

data = null;

return new String(outStream.toByteArray(),encoding);

}

code2:

void((function() {

var cars=new Array();//定义了数组,最终返回的是列表

cars=document.getElementsByTagName("a");//获取对应对象

/*cars=$("a")*/

for(var i =0;i

var href_name;

item_name = cars[i].href;  //获取对应url地址

if(item_name.indexOf("***")!=-1){

console.info(item_name);

}

}

})())

var xmlhttp;

function loadXMLDoc(url)

{

xmlhttp=null;

if (window.XMLHttpRequest)

{// code for Firefox, Mozilla, IE7, etc.

xmlhttp=new XMLHttpRequest();

}

else if (window.ActiveXObject)

{// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

if (xmlhttp!=null)

{

xmlhttp.onreadystatechange=state_Change;

xmlhttp.open("GET",url,true);

xmlhttp.send(null);

}

else

{

alert("Your browser does not support XMLHTTP.");

}

}

function state_Change()

{

if (xmlhttp.readyState==4)

{// 4 = "loaded"

if (xmlhttp.status==200)

{// 200 = "OK"

document.getElementById('p1').innerHTML=xmlhttp.getAllResponseHeaders();

}

else

{

alert("Problem retrieving data:" + xmlhttp.statusText);

}

}

}

2. 表单测试

2.1 测试点:

默认值

必输项

输入验证:输入框的特殊文本控制(比如电话、邮箱、url地址等)、长字符、特殊字符、正负数、小数位数等。

上传测试:大小、格式类型等

表单操作:增删改查,完整性、正确性。

一般,配合下面的数据校验等方面一起测试的,故这里的测试点可能不全。

2.2  测试工具:

WinRunner(QTP)等

先手动检查,后可以用该工具回归了。

2.3 延伸代码:

可以写个简单的js实现

code:

void((function(){

var select = document.getElementsByTagName('select');

for(var jj=0;jj

selectedNode = select[jj].options;

/*取出select的所有选项值*/

for (var i=0;i

selectoption=selectedNode[i].innerHTML;

// console.info(selectoption);

}

/*随机赋值*/

/*随机赋值*/

$(select[jj]).get(0).selectedIndex=1;

var checkText= $(select[jj]).find("option:selected").text();

console.info(checkText);

$(select[jj]).click;

}

})())

//一般的文本框任意赋值

void((function() {

var i = document.getElementsByTagName('input');

for (var jj = 1; jj <= i.length-4; jj++) {

i[jj].value = "cs";

}

})())

也可以使用代码等,比如selenium等。

3. 数据校验

3.1 测试点:

配合2的测试,验证表单数据的正确及完整性:单页面、单系统或多系统。

数据的增删改查:比如代码任务的计算等

该方面的测试,与每个系统特异性有关,故不全。

3.2 测试工具:同上

3.3 代码延伸

4. cookies测试

4.1 测试点:

是否使用cookies:根据需求设计,确定是否使用了cookies。比如说需求需要将选择的类目保存到cookie,关闭浏览器然后再试;或者某些不能使用cookie等。

cookies其他使用需求验证:比如使用 cookie 来统计次数,需要验证次数累计正确。

该方面的测试,与每个系统特异性有关,故不全。

4.2 测试工具:

IECookiesView v1.50

Cookies Manager v1.1

5. 数据库测试

5.1 测试点

我目前测试接触到的数据是oracle、mysql。

主要测试数据库的经历是oracle,哎呀,但是换了工作后,好几年不碰了,下次整理了。

sql语句的性能及优化

5.2 测试工具

使用及测试的工具可能是1个,可能是多个联合

TOAD for Oracle(Mysql)

6. 应用程序特定的功能需求

深刻理解需求说明文档

比如:

与第三平台之间的交互等

session测试:同个浏览器打开两个页面,一个页面权限失效后,另一个页面是否可操作成功等。

7. 控件等技术应用测试

7.1 测试点

是否满足使用需求

界面显示是否正常

控件的正确性:多种操作后是否正常等

三、兼容测试

现在的操作系统,浏览器越来越多样性,导致软件兼容性测试在目前软件测试领域占有很重要的地位,我在测试项目经历中,以浏览器的兼容测试为主,平台、分辨率为辅。

(我的经验前提:我测试过3类的不同行业的web系统,一个面向医院服务行业,所以系统及浏览器也是我们定好的,兼容工作测试小;一类是面向淘宝用户的第三方服务,所以支持的浏览器、平台与淘宝一致,一般按我们内部使用的统计数据测试前5个浏览器,出现问题的平台及浏览器使用虚拟机重现问题;第三类就是纯面向web用户的了,主要方式也和第二类差不多)

1. 平台测试

测试工具:VMware Workstation,这个一直在用,感觉真的不错。

2.  浏览器测试

测试浏览器兼容性的一个方法是创建一个兼容性矩阵。在这个矩阵中,测试浏览器对某些构件和设置的适应性。

测试点:

一般的浏览器兼容测试(一般测试前几,按自己需求)

以下介绍一些平时的经验

IE浏览器:一般使用它的文档模式(F12)切换,来测试IE8~11的兼容。一般问题主要是IE8及IE9会对一些JS、控件等有兼容问题。

360浏览器:主要问题出在360(兼容)模式,有可能出现少了某个标签导致整个界面不加载的情况(但IE浏览器器显示又正常)。

火狐浏览器、chrome浏览器:有的前端使用chrome开发,有的使用火狐,有时候2个中一个也会出现不兼容,尤其是网站常用到的滚动、计时等功能。

QQ浏览器、搜狗浏览器:前面那个也容易出错,后面搜狗一般还好。

浏览器拦截功能

web网站,经常会投放一些自己的广告,或者会有一些弹窗,或者引导页等等。浏览器自带的拦截功能或者用户常用到的拦截插件也会是我们测试的一部分。

当然,这个一个系统测试一遍后基本就不会再动了。这里只是总结一下。

测试插件:adblock plus及adblock

测试的浏览器:IE8~11、360( 开启自带广告过滤)、QQ(开启自带广告过滤)、搜狗(开启自带广告过滤)、UC(开启自带广告过滤)、chrome、firefox

3. 分辨率测试

也是系统要求不同,测试的也不同,目前测试的经历,也就面向医院的系统会对这个要求高点,有个最低的限制;其他的,测试的不是很多,基本保障吧,O(∩_∩)O~,可能是限制公司要求没有的缘故,希望以后越做越完善越正规。

4. 打印机

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,577评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,789评论 0 11
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,479评论 25 707
  • 姚芊芊妈妈:旅途归来,是为了下一次出发 释迦牟尼说,无论你遇见谁,他都是在你生命中该出现的人。这意味,没有人是因为...
    波波读书阅读 319评论 0 0