第三次作业
第一题
采用JUnit软件测试框架进行测试程序编程,实现对下面java程序进行单元测试,找出其中缺陷。然后修改缺陷,直到通过单元测试,给出测试程序脚本和运行结果界面。
public class getMax {public int get_max(int x, int y, int z) {int max;if (x >= y) max = x;else max = y;if (z >= x)max = z;return max;}
}
答:
测试程序脚本:
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import junit.framework.TestCase;public class getMaxTest extends TestCase {@Testpublic void test(){getMax Max=new getMax();int max= Max.get_max(7,9,8);Assert.assertEquals(9,max);}@Beforepublic void setUp() throws Exception {}@Afterpublic void tearDown() throws Exception {}
}
以下是运行结果,发现代码有缺陷:z如果比x大,但比y小,程序会输出z,而实际情况是y最大。
修改缺陷,以下是修改后的源程序:
public class getMax {public int get_max(int x, int y, int z) {int max;if (x >= y) max = x;else max = y;if (z >= max)max = z;return max;}
}
其实就是将其中一个x改成max
以下是单元测试通过的界面:
缺陷修改成功。
第二题
采用Postman接口测试软件对百度百科https://baike.baidu.com/搜索引擎进行接口测试。如对词条“软件工程”返回页面内容进行测试验证,给出请求参数设置、Tests脚本、Body响应结果、Test Results结果说明及运行界面。
以下是笔者的分析过程:
在百度百科页面搜索软件工程,得到的网址如下:
https://baike.baidu.com/item/软件工程/25279?fromModule=lemma_search-box
如果是常规的get请求(大多数项目开发者会这样设置),在url里面应该有?word=软件工程的字符串(不一定是word这个单词,举这个例子表示形如这个url),但是该链接并不如此。
于是猜测是post请求,F12打开开发者工具对输入框进行分析,发现它在form表单里,初步断定是post请求,但是这个表单不是向当前网址提交的,表单的action属性是/seach/word,所以请求的url应该是其对应的绝对路径(还得拐个弯🥺),为https://baike.baidu.com/search/word
还要注意到表单的method是GET方法,于是我大胆的猜测get方法也可以,经过postman测试,用get方法向https://baike.baidu.com/search也可以达到预期目标。
答:
请求参数设置
URL:https://baike.baidu.com/search/word
Method: post
Body:
键:word 值:软件工程
或者
URL:https://baike.baidu.com/search
Method:GET
参数:
键:word 值:软件工程
Tests脚本
pm.test("Status code is 200", function () {pm.response.to.have.status(200);
});pm.test("Response body is not empty", function () {pm.response.to.have.body();
});pm.test("The response contains the word '软件工程'", function () {pm.expect(pm.response.text()).to.include("软件工程");
});
Body响应结果
把你操作界面的body复制下来就可以啦~内容有很多(毕竟是百度的程序员😎)
Test Results结果
可以看到Status code is 200,Response body is not empty,The response contains the word ‘软件工程’,三次测试全部通过。
运行界面
但是为了图方便感觉用get直接向https://baike.baidu.com/item/软件工程发请求也得行(这样子就少了很多分析啦~)