一.用户界面测试
如果有设计稿,当然按照设计稿进行测试;没有设计稿,就参考原型;如果都没有,就按照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. 打印机