Fitness使用シリーズ8

3009 ワード

終了編:
Fitnesseは非常に良いアイデアを持つソフトウェアです.開発者とユーザーの距離を近づけようとしています.前の紹介を通して、皆さんも見たかもしれませんが、実は最終的にはコード(fixture)に実行しなければなりません.これらのコードは一般的にテスト担当者が書きます.私の考えを引き起こしました
一、すべての需要に対してすべて検収の“表”を制定する必要がありますか.そうすれば、非常に多くのfixtureを書くことを意味します.これらのコードを書くにはかなりの時間がかかりますが、時間は高価なコストです.ほぼ同じ効果が得られる場合、コストがもっと少ない方法はありませんか?
二、これらのコード自体にバグがあるかどうか、これらのコードをデバッグし、後でこれらのコードを維持するには、より多くのコストがかかりますか?――私は自動化テストの推進に熱中していましたが、自動化テストコードが何回か書かれていると、この自動化はまったく意味がないと思います.
三、だから、私の観点は自動化は大量の回帰、機能の固定、相対的な下層のテストだけでいいので、テストコードはできるだけ簡単にしなければなりません.できるだけ複雑な論理を増やさないでください.利用率を高めるためにできるだけ通用する.かかる時間はできるだけ少なくしなければならない.
以上の理解に基づいて、ここでは一般的なfixtureとfitnesseテーブルを提供します.このテーブルは当社では主にインタフェーステストに使用されています.もちろん、一般的なページチェックにも使用できます.実際の運行は2年近くになりましたが、効果はまあまあです.fitnesseに内蔵されているfixtureには似たような機能があるはずですが、自分で書くよりも検索して勉強する時間が長くなるかもしれないと思い、自分で書きました.
package calis.http;

import org.apache.http.impl.client.*;
import org.apache.http.client.methods.*;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;

public class Exist {
	private String url=null;
	private String key=null;
	private String keys[]=null;
	private String reponseStr;
	private String result="NotExist";
	
	public void setStartUrl(String url){
		this.url=url;
	}
	public void setKeyWords(String s){
		key=s;
		if(key.charAt(0)!='/'){
			key="/"+key;
		}
		keys=key.split("/");
	}
	public String verify(){
		return result;
	}
	public void execute(){
		DefaultHttpClient httpclient = new DefaultHttpClient();
		HttpGet httpget = new HttpGet(url);
		try{
			HttpResponse response = httpclient.execute(httpget);
			HttpEntity entity = response.getEntity();
			if (entity != null) {
				reponseStr=EntityUtils.toString(entity,"UTF-8");
				if(keys.length>1){
					boolean judge=true;
					for(int i=1;i<keys.length;i++){
						if(reponseStr.contains(keys[i])){
							judge=judge&&true;
						}else judge=false;
					}
					if(judge){
						result="ok";
					}
				}
			}
		}catch(Exception e){
			result="NoExist";
		}finally{
			httpclient.getConnectionManager().shutdown();
		}
	}
	public void reset(){
		result="NoExist";
	}
}

表は次のとおりです.
calis.http.Exist
start url
key words
verify?
http://cn.bing.com/search?q=%E4%B8%AD%E5%9B%BD
中国/中華人民共和国
ok
http://www.126.com
メールアドレスアカウントログイン/動的パスワードログイン
ok
……
……
ok
使用も簡単で、start urlにアドレスを入力し、返された文字列にkey wordsが指定した文字列がすべて含まれているかどうかを確認します.各文字列は/で区切られます.戻りOKがすべて含まれている場合、戻りNoExistはすべて含まれていません.簡単ですが、getリクエストをサポートして返されるhtml、xml、jsonなど多くのフォーマットデータを検出するのに非常に一般的です.
上記のコードで既知の問題は次のとおりです.
1.utf-8以外のフォーマットへの戻りはサポートされていません
2.ANDチェックのみをサポートし、キーワードのその他の論理関係はサポートしない
3.html上のエスケープ文字を処理していません.例えば、ページに<と表示されますが、符号化は<です.では、<ではなく<をチェックする必要があります.
4.キーワードが/によって区切られているため、戻り値に/が含まれているかどうかを検出することはできません.
私がずっと堅持してきた観点に鑑みて――テストコードはできるだけ簡単で、私はこれらの内容を改善するつもりはありません.
本文は“空っぽです”のブログから出て、転載して作者と連絡してください!