栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

在线OJ系统测试报告

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在线OJ系统测试报告

在线OJ系统测试报告

一、单元测试

初始界面展示1. 测试insert()方法2. 测试delete()方法3. 测试selectOne()方法4. 测试selectAll()方法 二、功能测试

1. 在线OJ系统的测试用例2. 一些功能测试3. 测试结果 三、自动化测试

1. 一些自动化测试脚本2. 测试结果 四、性能测试

1. 使用工具:LoadRunner2. 测试过程3. 分析报告

一、单元测试 初始界面展示

引入Juint依赖

初始数据库界面(包含两个题目)
1. 测试insert()方法

(1)给数据库里增添一条题目:本来数据库就存在两条题目,在此就添加id为2的题目

(2)测试代码如下:

public class ProblemDAOTest {

    @Test
    public void insert() {
        Problem problem1 = new Problem();
        problem1.setId(2);
        problem1.setTitle("各位相加");
        problem1.setLevel("简单");
        problem1.setDescription("给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。n" +
                "n" +
                "示例:n" +
                "n" +
                "输入: 38n" +
                "输出: 2 n" +
                "解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。n" +
                "n");
        problem1.setTemplateCode("public class Solution {n" +
                "    public int addDigits(int num) {n" +
                "n" +
                "    }n" +
                "}");
        problem1.setTestCode(
                "public static void main(String[] args) {n" +
                        "    Solution s = new Solution();n" +
                        "    if (s.addDigits(1) == 1 && s.addDigits(38) == 2) {n" +
                        "        System.out.println("Test OK");n" +
                        "    } else {n" +
                        "        System.out.println("Test Failed");n" +
                        "    }n" +
                        "}n");

        ProblemDAO problemDAO1 = new ProblemDAO();
        problemDAO1.insert(problem1);
    }
}

(3)操作结果:

进程退出码
数据库显示(两条记录变为了三条
前端页面(两条记录变为了三条

(4)经过上述测试,insert()方法操作正常

2. 测试delete()方法

(1)从列表页删除题目:在此删除id为3的题目

(2)测试代码如下:

    @Test
    public void delete() {
        ProblemDAO problemDAO = new ProblemDAO();
        problemDAO.delete(3);
    }

(3)预期结果:进程成功退出返回码 0;数据库和页面展示只有两条题目(分别是1和2)

进程退出码
数据库显示(删除第三个题目,只剩下1和2
前端页面(也只剩下了题目1和题目2)

(4)经过上述测试,delete()方法操作正常

3. 测试selectOne()方法

(1)验证查询一条记录,将指定题目的id打印在控制台,看结果是否能出现指定题目的详情页(在此验证id为2的题目信息)

(2)测试代码如下:

    @Test
    public void selectOne() {
        ProblemDAO problemDAO = new ProblemDAO();
        Problem problem = problemDAO.selectOne(2);
        System.out.println(problem);
    }

(3)预期结果:打印出id为2的那条题目的所有信息在控制台上,并且信息要和数据库中的第二条题目信息相对应



(4)经过上述测试,selectOne()方法操作正常,且得到预期结果,即控制台上的信息与数据库信息相符合

4. 测试selectAll()方法

(1)测试查找所有记录(也就是题目1和题目2)

(2)测试代码如下:

    @Test
    public void selectAll() {
        ProblemDAO problemDAO = new ProblemDAO();
        List problems = problemDAO.selectAll();
        System.out.println(problems);
    }

(3)预期结果:打印出所有题目的所有信息在控制台上(注意,详情设置的是null)


(4)经过上述测试,selectAll()方法操作正常

二、功能测试 1. 在线OJ系统的测试用例

2. 一些功能测试

点击Gitee链接,可以跳转到对应的地址
BUG:点击时偶尔会出现跳转不成功的情况,浏览器报错
原因分析:网络问题比如弱网、突然断网导致跳转不成功点击题目,可以跳转到相应的题目详情页编辑框能够正常编写代码、编辑代码自动缩进、关键字能够自动补全、关键字高亮显示、行号随着编辑的函数发生改变
可以在编辑代码时添加注释
代码块可以折叠
代码编辑错误时,提交有显示错误代码和错误原因
提交一段有异常的代码,会有提示错误代码,错误原因
提交能运行的代码,看是否通过

BUG:在LeetCode能正常运行,在OJ系统却出现了测试用例不通过的情况
分析原因:检查测试用例编写是否有问题 3. 测试结果

测试结果能完成基本功能,与所写测试用例几乎无差别

三、自动化测试 1. 一些自动化测试脚本

点击Gitee链接

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome()
url = "http://localhost:8080/javaoj/index.html"
driver.get(url)
time.sleep(3)

driver.find_element(By.XPATH, "/html/body/section[1]/div/div/div/a").click()
time.sleep(3)

driver.quit()

点击Gitee链接,之后点击题目,进入到题目详情页,找到代码编辑框

# 导入驱动
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 指定浏览器为Chrome,获取项目链接
driver = webdriver.Chrome()
url = "http://localhost:8080/javaoj/index.html"
driver.get(url)
time.sleep(3)
# 将浏览器窗口最大化
driver.maximize_window()
time.sleep(3)
# 点击Gitee链接,查看该链接是否可以点击,并进入指定的Gitee页面
driver.find_element(By.XPATH, "/html/body/section[1]/div/div/div/a").click()
time.sleep(4)
# 退出Gitee页面,回到项目首页
driver.back()
time.sleep(2)
# 将滚动条拖到最底端
js = "var q = document.documentElement.scrollTop = 1000"
driver.execute_script(js)
time.sleep(3)
# 找到题目列表,并点击第一个题目,进入到题目详情页
driver.find_element(By.XPATH, "//*[@id='tables']/div/div/table/tbody/tr[1]/td[2]").click()
time.sleep(4)
# 从题目详情页滑到最底端,找到代码编辑框即可编辑代码
js1 = "var q = document.documentElement.scrollTop = 1400"
driver.execute_script(js1)
time.sleep(4)

driver.quit()
2. 测试结果

测试结果能完成基本功能

四、性能测试 1. 使用工具:LoadRunner 2. 测试过程
    使用脚本录制工具进行录制
Action()
{

	web_add_cookie("Idea-1154e07a=3b8b69f9-0fcb-4ed4-b346-d067381f46dd; DOMAIN=localhost");

	web_url("index.html", 
		"URL=http://localhost:8080/javaoj/index.html", 
		"Targetframe=", 
		"Resource=0", 
		"Referer=", 
		"Snapshot=t8.inf", 
		"Mode=HTML", 
		EXTRARES, 
		"Url=problem", ENDITEM, 
		"Url=problem?id=1", ENDITEM, 
		LAST);

	lr_rendezvous("click");

	lr_start_transaction("click_transaction");

	lr_end_transaction("click_transaction",LR_AUTO);

	lr_start_transaction("push_transaction");

	web_custom_request("json", 
		"URL=http://update.googleapis.com/service/update2/json?cup2key=11:J5OM6ZyOE_yKYN11sMGAXX0upI63DviauHPnwVVBpPA&cup2hreq=5a46a3bfcfc5a24da72da2e4da34f4747bde344dae8366eaf7f728a03a64ddd5", 
		"Method=POST", 
		"Targetframe=", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=", 
		"Snapshot=t9.inf", 
		"Mode=HTML", 
		"EncType=application/json", 
		"Body={"request":{"@os":"win","@updater":"chrome","acceptformat":"crx3","app":[{"appid":"ihnlcenocehgdaegdmhbidjhnhdchfmm","brand":"GGLS","cohort":"1::","cohortname":"Win","enabled":true,"packages":{"package":[{"fp":"1.ab632f1172e9021366808c45b4f052d23e5bfaaf0c3a34e375eadc64856ae8f4"}]},"ping":{"ping_freshness":"{93367e15-2c7c-4c2b-a16d-4ca88c2e85de}","rd":5565},"updatecheck":{},"version":"1.3.36.121"},{"appid":""
		"oimompecagnajdejgnnjijobebaeigek","brand":"GGLS","cohort":"1::","enabled":true,"ping":{"ping_freshness":"{8b3bde24-6e38-4d14-aa93-0b1306dc82ee}","rd":5565},"updatecheck":{},"version":"4.10.2449.0"},{"appid":"hnimpnehoodheedghdeeijklkeaacbdc","brand":"GGLS","cohort":"1::","enabled":true,"packages":{"package":[{"fp":"1.6f6bc93dcd62dc251850d2ff458fda96083ceb7fbe8eeb11248b8485ef2aea23"}]},"ping":{"ping_freshness":""
		"{4b7599eb-610c-4175-b929-7bb8dd3ea024}","rd":5565},"updatecheck":{},"version":"0.57.44.2492"},{"appid":"cmahhnpholdijhjokonmfdjbfmklppij","brand":"GGLS","cohort":"1:wr3:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"packages":{"package":[{"fp":"1.b4ddbdce4f8d5c080328aa34c19cb533f2eedec580b5d97dc14f74935e4756b7"}]},"ping":{"ping_freshness":"{cfb74bec-376f-4128-904b-c3027032918a}","rd":5565},"updatecheck":{},"version":"1.0.6"},{"appid"
		"":"kiabhabjdbkjdpjbpigfodbdjmbglcoo","brand":"GGLS","cohort":"1:v3l:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"packages":{"package":[{"fp":"1.a1dbd992522087ec916f08a112434c240e6dda6764366666a4525e97378945a9"}]},"ping":{"ping_freshness":"{50d5c8f0-3268-4224-b977-e7ea65756e07}","rd":5565},"updatecheck":{},"version":"2022.3.24.2"},{"appid":"gcmjkmgdlgnkkcocmoeiminaijmmjnii","brand":"GGLS","cohort":"1:bm1:","cohorthint":""
		"M54AndUp","cohortname":"M54AndUp","enabled":true,"packages":{"package":[{"fp":"1.93823a4e71e764b932ee22dfcf84c24429867a440c5e480e55be527ac30de1ae"}]},"ping":{"ping_freshness":"{cefcd149-c12c-440c-9fe7-dee5e6d4a434}","rd":5565},"updatecheck":{},"version":"9.34.0"},{"_internal_experimental_sets":"false","_v2_format_plz":"true","appid":"gonpemdgkjcecdgbnaabipppbmgfggbe","brand":"GGLS","cohort":"1:13c9:","cohorthint":"V2 General release",""
		"cohortname":"V2 General release","enabled":true,"packages":{"package":[{"fp":"1.c51d23bc0653142853b0d9dc8ba00f504aaae8a2a5b290e539b8790d88c0dcbe"}]},"ping":{"ping_freshness":"{1bbc55b6-1fd1-4a6e-a89d-55f701232335}","rd":5565},"updatecheck":{},"version":"2022.2.15.1"},{"appid":"khaoiebndkojlmppeemjhbpbandiljpe","brand":"GGLS","cohort":"1:cux:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"packages":{"package":[{"fp":""
		"1.5f1c8af8a15da419e629cc50d85e7326cda080bd1f7df8ac38a16b98e0a2739b"}]},"ping":{"ping_freshness":"{c2a9b386-fade-4ca6-9806-cfab6991bec5}","rd":5565},"tag":"46","updatecheck":{},"version":"48"},{"appid":"llkgjffcdpffmhiakmfcdcblohccpfmo","brand":"GGLS","cohort":"1::","enabled":true,"packages":{"package":[{"fp":"1.ab8d70a60ce0fba1355fad4edab88fd4d1bccc566b230998180183d1d776992b"}]},"ping":{"ping_freshness":"{cb8b1638-07fa-4099-8531-5c19ce17c296}","rd""
		":5565},"updatecheck":{},"version":"1.0.0.13"},{"appid":"hfnkpimlhhgieaddgfemjhofmfblmnib","brand":"GGLS","cohort":"1:jcl:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"packages":{"package":[{"fp":"1.43bfd367fb483366559f9d176d76bfed089ccde3e00cd48cbb75b156d1aa4f53"}]},"ping":{"ping_freshness":"{00279559-a62b-4100-ac41-5abefd7a78d8}","rd":5565},"updatecheck":{},"version":"7242"},{"appid":"giekcmmlnklenlaomppkphknjmnnpneh","brand":""
		"GGLS","cohort":"1:j5l:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"packages":{"package":[{"fp":"1.fd515ec0dc30d25a09641b8b83729234bc50f4511e35ce17d24fd996252eaace"}]},"ping":{"ping_freshness":"{fa25c70a-357e-44a1-90d8-25bfd8945dfa}","rd":5565},"updatecheck":{},"version":"7"},{"appid":"laoigpblnllgcgjnjnllmfolckpjlhki","brand":"GGLS","cohort":"1:10zr:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"packages":{""
		"package":[{"fp":"1.db60fc5d4ab81e28fe58d82f3ad26622c4ca4cade28e2b636068ac91ca62224d"}]},"ping":{"ping_freshness":"{302f103f-ca36-4fa1-bf61-5d1c9f8adc3c}","rd":5565},"updatecheck":{},"version":"1.0.7.1642025427"},{"appid":"gkmgaooipdjhmangpemjhigmamcehddo","brand":"GGLS","cohort":"1:pw3:","cohorthint":"Stable","cohortname":"Stable","enabled":true,"packages":{"package":[{"fp":"1.f34e17cc90ce3e33fece88503070bc71be525c6a75d5a516addf758ae811eb5f"}]},""
		"ping":{"ping_freshness":"{0d305f87-37f1-427b-8c7a-5ce5d92e67ed}","rd":5565},"tag":"eset_exp_b","updatecheck":{},"version":"99.279.200"},{"appid":"ehgidpndbllacpjalkiimkbadgjfnnmc","brand":"GGLS","cohort":"1:ofl:","cohorthint":"stable64","cohortname":"stable64","enabled":true,"packages":{"package":[{"fp":"1.a8a79d350c2a5e3bc36226633a8e0bed0dfab184e77f38fc8f0820ebacf8eafc"}]},"ping":{"ping_freshness":"{6594f339-4691-4151-ad5d-de8014a4f75b}","rd""
		":5565},"updatecheck":{},"version":"2018.8.8.0"},{"accept_locale":"ZHCN500000","appid":"obedbbhbpmojnkanicioggnmelmoomoc","brand":"GGLS","cohort":"1:s6f:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"ping":{"ping_freshness":"{82c18c06-fadb-442b-8227-1c1489009989}","rd":5565},"updatecheck":{},"version":"0.0.0.0"},{"appid":"efniojlnjndmcbiieegkicadnoecjjef","brand":"GGLS","cohort":"1:142l:","cohorthint":"M99-M100.0.4896.46",""
		"cohortname":"M99-M100.0.4896.46","enabled":true,"packages":{"package":[{"fp":"1.63b7b7bec47e9a517fa1727871fa06d32a13579ba70e327b0009884f33f20527"}]},"ping":{"ping_freshness":"{c8f31d70-c929-4b9e-a472-32500fbafe0a}","rd":5565},"updatecheck":{},"version":"210"},{"appid":"jamhcnnkihinmdlkakkaopbjbbcngflc","brand":"GGLS","cohort":"1:wvr:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"packages":{"package":[{"fp":""
		"1.c0b071a10aeaf9068aaf624ce8527a79d9bea9ecb07eca43a442eaa0c362bc44"}]},"ping":{"ping_freshness":"{2f887873-1ada-48f3-818f-3bf538daec1a}","rd":5565},"updatecheck":{},"version":"102.0.4969.0"},{"appid":"dhlpobdgcjafebgbbhjdnapejmpkgiie","brand":"GGLS","cohort":"1:z9x:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"packages":{"package":[{"fp":"1.8b9dc2cd32d1b5f147a17377cef75ec160103d6c02faf4947978fb6d9a25983b"}]},"ping":{"ping_freshness":""
		"{6c698e9e-e4ee-46ce-a018-f9e488914d6b}","rd":5565},"updatecheck":{},"version":"20211020.1"},{"appid":"ojhpjlocmbogdgmfpkhlaaeamibhnphh","brand":"GGLS","cohort":"1:w0x:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"packages":{"package":[{"fp":"1.478aa915e78878e332a0b4bb4d2a6fb67ff1c7f7b62fe906f47095ba5ae112d0"}]},"ping":{"ping_freshness":"{82ab9465-fff8-4e40-abc8-8ad190b52556}","rd":5565},"updatecheck":{},"version":"1"},{"appid":""
		"imefjhfbkmcmebodilednhmaccmincoa","brand":"GGLS","cohort":"1:zor:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"packages":{"package":[{"fp":"1.c5d1f68a61e1a2ea56b08431b1e9de8bca675e76bed24772447af68d35436d50"}]},"ping":{"ping_freshness":"{60ff48a4-2dfb-4b0a-8c06-ebbcf2cedea5}","rd":5565},"tag":"default","updatecheck":{},"version":"27.8"},{"appid":"lmelglejhemejginpboagddgdfbepgmp","brand":"GGLS","cohort":"1:lwl:","cohorthint":""
		"Auto","cohortname":"Auto","enabled":true,"packages":{"package":[{"fp":"1.ca33735f84fd65b502ca0f70fc5e2184151a6dbbdbeb28043e6716f0985f5291"}]},"ping":{"ping_freshness":"{4e009235-5119-4d1c-9230-94f241cdae54}","rd":5565},"updatecheck":{},"version":"323"},{"appid":"jflookgnkcckhobaglndicnbbgbonegd","brand":"GGLS","cohort":"1:s7x:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"packages":{"package":[{"fp":""
		"1.a8c8806a418295d25a4fdd19d0c35c81165835fcd3d4f2b1f295ee535c320db1"}]},"ping":{"ping_freshness":"{6503bfc3-107d-4017-b3a0-b6fddf6d6d6b}","rd":5565},"updatecheck":{},"version":"2790"},{"appid":"pdafiollngonhoadbmdoemagnfpdphbe","brand":"GGLS","cohort":"1:vz3:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"packages":{"package":[{"fp":"1.54b93e249d02a0f9061e8f70866d4668a0260db9ae43483810ab78f97f3eaa2a"}]},"ping":{"ping_freshness":""
		"{0be49d88-406a-4b1a-a3f3-b0ccc345db4e}","rd":5565},"updatecheck":{},"version":"2021.8.17.1300"},{"appid":"ggkkehgbnfjpeggfpleeakpidbkibbmn","brand":"GGLS","cohort":"1:ut9:","cohorthint":"M80AndAbove","cohortname":"M80AndAbove","enabled":true,"packages":{"package":[{"fp":"1.bfa1a6198e6ca1d70da66818e4de60ea78606520ef33ece1433eb5a3402560e9"}]},"ping":{"ping_freshness":"{785691d4-2070-4992-ab2e-3193fb4beda4}","rd":5565},"updatecheck":{},"version":""
		"2022.3.14.1147"},{"appid":"eeigpngbgcognadeebkilcpcaedhellh","brand":"GGLS","cohort":"1:w59:","cohorthint":"Auto","cohortname":"Auto","enabled":true,"packages":{"package":[{"fp":"1.c64c9c1008f3ba5f6e18b3ca524bc98dcd8acfae0a2720a8f1f3ef0f8d643d05"}]},"ping":{"ping_freshness":"{50741965-29af-4a45-b6ee-9a63e53b0945}","rd":5565},"updatecheck":{},"version":"2020.11.2.164946"}],"arch":"x64","dedup":"cr","domainjoined":false,"hw":{"avx":true,""
		"physmemory":8,"sse":true,"sse2":true,"sse3":true,"sse41":true,"sse42":true,"ssse3":true},"ismachine":true,"lang":"zh-CN","nacl_arch":"x86-64","os":{"arch":"x86_64","platform":"Windows","version":"10.0.19044.1586"},"prodversion":"99.0.4844.82","protocol":"3.1","requestid":"{14375714-fe98-418a-94f2-c5548e62f0e3}","sessionid":"{7e2ae8df-8349-4af2-b3a2-04dc87b9a1fd}","updater":{"autoupdatecheckenabled":true,"ismachine":true,"laststarted":336"
		","name":"Omaha","updatepolicy":-1,"version":"1.3.36.122"},"updaterversion":"99.0.4844.82"}}", 
		LAST);

	web_custom_request("compile", 
		"URL=http://localhost:8080/javaoj/compile", 
		"Method=POST", 
		"Targetframe=", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=http://localhost:8080/javaoj/index.html", 
		"Snapshot=t10.inf", 
		"Mode=HTML", 
		"EncType=application/json; charset=UTF-8", 
		"Body={"id":1,"code":"class Solution {\n    public int[] twoSum(int[] nums, int target) {\n        \n    }\n}"}", 
		LAST);

	lr_end_transaction("push_transaction",LR_AUTO);

	return 0;
}

脚本录制成功

    设计场景并执行

设计3个虚拟用户,并发执行5分钟测试性能


事务响应时间、点击率等过程折线图如下:

3. 分析报告

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785098.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号