- 1. 链接测试
1.1 测试点:
- 是否添加链接
- 链接页面是否存在
- 链接页面与需求是否一致:页面的正确性、打开方式 等
一般,该链接测试在集成测试阶段(页面均开发完成)的时候进行
1.2 测试工具:
-
Xenu Link Sleuth 免费 绿色免安装软件
-
HTML Link Validator 共享(30天试用)
1.3 延伸代码:
测试工具在实际应用时,其实是挺受限的。有时候,需要自己写点小代码去验证,主要用于系统回归。
比如:
1 // 封装判断web链接返回状态是否为2开头的 2 public static void ReadUrl(String surl){ 3 try { 4 URL url = new URL(surl); 5 URLConnection rulConnection = url.openConnection(); 6 HttpURLConnection httpUrlConnection = (HttpURLConnection) rulConnection; 7 httpUrlConnection.setConnectTimeout(300000); 8 httpUrlConnection.setReadTimeout(300000); 9 httpUrlConnection.connect(); 10 String code = new Integer(httpUrlConnection.getResponseCode()).toString(); 11 String message = httpUrlConnection.getResponseMessage(); 12 // System.out.println("getResponseCode code ="+ code); 13 // System.out.println("getResponseMessage message ="+ message); 14 if(!code.startsWith("2")){ 15 throw new Exception(surl+"ResponseCode is not begin with 2,code="+code); 16 } 17 // 打印链接返回状态码 18 // System.out.println(getDateTime()+"连接"+surl+"正常"); 19 }catch(Exception ex){ 20 // System.out.println(surl+ex.getMessage()); 21 } 22 } 23 24 // 封装模拟发起post请求一 25 public static String sendPost(String strUrl, String content, String charset) { 26 URL httpurl = null; 27 HttpURLConnection httpConn = null; 28 String returnStr = ""; 29 PrintWriter outs = null; 30 try { 31 httpurl = new URL(strUrl); 32 httpConn = (HttpURLConnection) httpurl.openConnection(); 33 httpConn.setRequestMethod( "POST"); // 默认是post 34 // 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在 http正文内,因此需要设为true, 默认情况下是false; 35 httpConn.setDoOutput( true); 36 // 设置是否从httpUrlConnection读入,默认情况下是true; 37 httpConn.setDoInput( true); 38 httpConn.setRequestProperty( "Content-Type", "text/xml"); 39 outs = new PrintWriter(httpConn.getOutputStream()); 40 outs.print(content); 41 outs.flush(); 42 outs.close(); 43 // 字节流 读取全部内容 包括换行符 44 returnStr = inputStreamToString(httpConn.getInputStream(), charset); 45 } catch (Exception e) { 46 logger.error( "执行HTTP Post请求" + strUrl + "时,发生异常!" , e); 47 if(outs != null){ 48 outs.close(); 49 outs = null; 50 } 51 return returnStr; 52 } finally { 53 if (httpConn != null) 54 httpConn.disconnect(); 55 if(outs != null){ 56 outs.close(); 57 outs = null; 58 } 59 } 60 return returnStr; 61 } 62 63 // 封装读取请求响应的内容 64 public static String inputStreamToString(InputStream in,String encoding) throws Exception{ 65 ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 66 byte[] data = new byte[1024]; 67 int count = -1; 68 while((count = in.read(data,0, 1024)) != -1) 69 outStream.write(data, 0, count); 70 in.close(); 71 data = null; 72 return new String(outStream.toByteArray(),encoding); 73 }
1 void((function() { 2 var cars=new Array();//定义了数组,最终返回的是列表 3 4 cars=document.getElementsByTagName("a");//获取对应对象 5 /*cars=$("a")*/ 6 for(var i =0;i<cars.length;i++){ 7 var href_name; 8 item_name = cars[i].href; //获取对应url地址 9 if(item_name.indexOf("***")!=-1){ 10 console.info(item_name); 11 } 12 } 13 14 })()) 15 var xmlhttp; 16 function loadXMLDoc(url) 17 { 18 xmlhttp=null; 19 if (window.XMLHttpRequest) 20 {// code for Firefox, Mozilla, IE7, etc. 21 xmlhttp=new XMLHttpRequest(); 22 } 23 else if (window.ActiveXObject) 24 {// code for IE6, IE5 25 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 26 } 27 if (xmlhttp!=null) 28 { 29 xmlhttp.onreadystatechange=state_Change; 30 xmlhttp.open("GET",url,true); 31 xmlhttp.send(null); 32 } 33 else 34 { 35 alert("Your browser does not support XMLHTTP."); 36 } 37 } 38 39 function state_Change() 40 { 41 if (xmlhttp.readyState==4) 42 {// 4 = "loaded" 43 if (xmlhttp.status==200) 44 {// 200 = "OK" 45 document.getElementById('p1').innerHTML=xmlhttp.getAllResponseHeaders(); 46 } 47 else 48 { 49 alert("Problem retrieving data:" + xmlhttp.statusText); 50 } 51 } 52 }
- 2. 表单测试
2.1 测试点:
- 默认值
- 必输项
- 输入验证:输入框的特殊文本控制(比如电话、邮箱、url地址等)、长字符、特殊字符、正负数、小数位数等。
- 上传测试:大小、格式类型等
- 表单操作:增删改查,完整性、正确性。
一般,配合下面的数据校验等方面一起测试的,故这里的测试点可能不全。
2.2 测试工具:
WinRunner(QTP)等
先手动检查,后可以用该工具回归了。
2.3 延伸代码:
可以写个简单的js实现
1 void((function(){ 2 var select = document.getElementsByTagName('select'); 3 for(var jj=0;jj<select.length;jj++){ 4 selectedNode = select[jj].options; 5 /*取出select的所有选项值*/ 6 for (var i=0;i<selectedNode.length;i++){ 7 selectoption=selectedNode[i].innerHTML; 8 // console.info(selectoption); 9 10 } 11 /*随机赋值*/ 12 /*随机赋值*/ 13 $(select[jj]).get(0).selectedIndex=1; 14 var checkText= $(select[jj]).find("option:selected").text(); 15 console.info(checkText); 16 $(select[jj]).click; 17 18 } 19 })()) 20 21 //一般的文本框任意赋值 22 void((function() { 23 var i = document.getElementsByTagName('input'); 24 for (var jj = 1; jj <= i.length-4; jj++) { 25 i[jj].value = "cs"; 26 } 27 })())
也可以使用代码等,比如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 测试点
- 是否满足使用需求
- 界面显示是否正常
- 控件的正确性:多种操作后是否正常等