莘縣網(wǎng)站建設電話一諾網(wǎng)絡推廣公司
目錄
1、測試概述
1.1、項目名稱
1.2、測試時間
1.3、編寫目的
1.4、測試范圍
2、測試計劃
2.1、測試用例
2.1.1、注冊/登錄模塊
2.1.2、個人中心模塊
2.1.3、找回密碼模塊
2.1.4、博客主列表模塊
2.1.5、個人博客列表模塊
2.1.6、個人草稿列表模塊
2.1.7、博客詳情模塊
2.1.8、博客編輯頁
2.2、bug等級劃分
2.3、測試環(huán)境與配置
3、測試執(zhí)行
4、自動化測試
4.1、準備工作
4.2、注冊自動化測試
4.3、登錄自動化測試
4.4、找回密碼自動化測試
4.5、個人中心自動化測試
4.6、博客列表頁自動化測試
4.7、個人博客列表頁自動化測試
4.8、草稿列表頁自動化測試
4.9、博客詳情頁自動化測試
4.10、博客編輯頁自動化測試
3、bug匯總
3.1、功能測試中發(fā)現(xiàn)的bug
?3.2、兼容性測試中發(fā)現(xiàn)的bug
4、總結(jié)
4.1、缺陷和限制
4.2、綜合評價
1、測試概述
1.1、項目名稱
????????博客系統(tǒng)測試
1.2、測試時間
? ? ? ? 2023年4月13日——2023年4月。。。。
1.3、編寫目的
? ? ? ? 對自己所編寫的博客系統(tǒng)項目中所有的軟件測試活動中,包括測試進度、資源問題、風險進行評估,總結(jié)測試活動的成功經(jīng)驗與不足,以便今后更好的開展測試工作
1.4、測試范圍
主體模塊 | 測試內(nèi)容 |
用戶 | 注冊新用戶、登錄系統(tǒng)、修改密碼、找回密碼、個人詳細信息 |
博客 | 博客主列表頁、個人博客列表頁、個人博客草稿頁、博客全文 |
2、測試計劃
2.1、測試用例
2.1.1、注冊/登錄模塊
?
2.1.2、個人中心模塊
?
2.1.3、找回密碼模塊
?
2.1.4、博客主列表模塊
?
2.1.5、個人博客列表模塊
?
2.1.6、個人草稿列表模塊
?
2.1.7、博客詳情模塊
?
2.1.8、博客編輯頁
2.2、bug等級劃分
- 崩潰:系統(tǒng)無法運行
- 嚴重:系統(tǒng)可以運行,但是不穩(wěn)定
- 一般:系統(tǒng)可以穩(wěn)定運行,但影響用戶使用及體驗感
- 次要:建議修改,即可優(yōu)化部分,不影響用戶使用和體驗
2.3、測試環(huán)境與配置
- 服務器:云服務器CentOS
- PC機:聯(lián)想yoga13s
- 平臺:Windows
- 移動端:OPPO A93 - Android?
- 瀏覽器:Chrome、FireFox、Edge
- 自動化測試工具:Selenium + Junit5
3、測試執(zhí)行
????????界面測試:使用手工測試,部分使用自動化測試
? ? ? ? 安全測試:使用手工測試
? ? ? ? 易用性測試:使用手工測試
????????兼容性測試:也是使用手工測試,由于本人只有一部手機、一臺電腦,所以除了在電腦上使用Chrome進行自動化測試以外,安卓的兼容性測試、電腦的不同瀏覽器:Edge、Firefox都是用手工測試
?????????功能測試:部分使用自動化測試,詳情繼續(xù)往下看~
????????所有的手工測試,在沒有bug的情況下,我就不寫在這上面了~
4、自動化測試
4.1、準備工作
創(chuàng)建一個maven項目,目錄:
引入依賴:
<dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.2.2</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.8.2</version><scope>test</scope></dependency><dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-suite</artifactId><version>1.8.2</version><scope>test</scope></dependency><!-- 保存屏幕截圖文件需要用到的包 --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-edge-driver</artifactId><version>4.2.2</version><scope>test</scope></dependency></dependencies>
?commom包下AutoTestUtils類【封裝一些公共方法,方便調(diào)用】:
package com.BlogAutoTest.commom;import org.apache.commons.io.FileUtils;
import org.openqa.selenium.*;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;import java.awt.*;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;/*** Created with IntelliJ IDEA.* Description:* User:龍寶* Date:2023-04-15* Time:13:02*/
public class AutoTestUtils {public static EdgeDriver driver;//創(chuàng)建驅(qū)動對象public static EdgeDriver createDriver() {if(driver == null) {EdgeOptions options = new EdgeOptions();options.addArguments("--remote-allow-origins=*");driver = new EdgeDriver(options);//創(chuàng)建隱式等待driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));}return driver;}//保存屏幕截圖public static void getScreenShot(String str) throws IOException {List<String> list = getTime();//dir+filename//./指的是當前的項目路徑下,也就是BlogAutoTest下//./src/test...相對路徑String filename = "./src/test/java/com/BlogAutoTest/"+list.get(0)+"/" + str + "_" + list.get(1)+".png";File srcFile = driver.getScreenshotAs(OutputType.FILE);//放到指定位置FileUtils.copyFile(srcFile,new File(filename));}public static List<String> getTime() {//文件按照天的維度按文件進行保存//文件格式 20230302-123244毫秒SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyMMdd-HHmmssSSS");SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyyMMdd");String filename = simpleDateFormat1.format(System.currentTimeMillis());String dirname = simpleDateFormat2.format(System.currentTimeMillis());List<String> list = new ArrayList<>();list.add(dirname);list.add(filename);return list;}}
4.2、注冊自動化測試
package com.BlogAutoTest.Tests;import org.junit.jupiter.api.*;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.edge.EdgeDriver;import java.awt.*;
import java.io.IOException;import static com.BlogAutoTest.commom.AutoTestUtils.*;/*** Created with IntelliJ IDEA.* Description:* User:龍寶* Date:2023-04-15* Time:12:55*/
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class RegTest {public static EdgeDriver driver = createDriver();//進入頁面@BeforeAllpublic static void baseControl() throws InterruptedException {driver.get("http://43.139.193.116:8085/blog/reg.html");}//1------檢查注冊頁面是否正常打開@Test@Order(1)void regPageLoadRight() throws InterruptedException {driver.findElement(By.cssSelector("body > div.login-container > div > h3"));driver.findElement(By.xpath("//*[@id=\"password2\"]"));driver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)"));}//2------用戶名/密碼為空是否有提示信息@Test@Order(2)void RegFail() throws IOException, InterruptedException, AWTException {//1、直接注冊driver.findElement(By.cssSelector("#username")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#password2")).clear();//2、輸入用戶名driver.findElement(By.cssSelector("#username")).sendKeys("cl");//3、輸入密碼driver.findElement(By.cssSelector("#password")).sendKeys("123");//4、輸入確認密碼driver.findElement(By.cssSelector("#password2")).sendKeys("123");getScreenShot(getClass().getName());driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);driver.switchTo().alert().accept();}//3-----正確注冊@Test@Order(3)void RegRight() throws IOException, InterruptedException, AWTException {driver.findElement(By.cssSelector("#username")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#password2")).clear();String username = String.valueOf(System.currentTimeMillis());String password = "123";driver.findElement(By.cssSelector("#username")).sendKeys(username);driver.findElement(By.cssSelector("#password")).sendKeys(password);driver.findElement(By.cssSelector("#password2")).sendKeys(password);getScreenShot(getClass().getName());driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);driver.switchTo().alert().accept();}}
4.3、登錄自動化測試
package com.BlogAutoTest.Tests;import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.edge.EdgeDriver;import java.awt.*;
import java.io.IOException;import static com.BlogAutoTest.commom.AutoTestUtils.*;/*** Created with IntelliJ IDEA.* Description:* User:龍寶* Date:2023-04-15* Time:12:55*/
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class LoginTest {public static EdgeDriver driver = createDriver();//打開頁面@BeforeAllstatic void baseControl() {driver.get("http://43.139.193.116:8085/blog/login.html");}//1-------檢查頁面是否正常打開@Test@Order(1)void loginPageLoadRight() {driver.findElement(By.cssSelector("body > div.login-container > div > div.msg > a.m"));driver.findElement(By.cssSelector("body > div.login-container > div > div.msg > a.ms"));driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)"));}//2-------登陸失敗@Order(2)@ParameterizedTest@CsvSource({"zhangsan,789","lisi,789"})void loginFail(String username,String password) throws InterruptedException, IOException, AWTException {driver.findElement(By.cssSelector("#username")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#username")).sendKeys(username);driver.findElement(By.cssSelector("#password")).sendKeys(password);driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);driver.switchTo().alert().accept();getScreenShot(getClass().getName());}//3--------登陸成功@Order(3)@ParameterizedTest@CsvSource({"cl,1118","zhangsan,123"})void loginSuc(String username,String password) throws IOException, InterruptedException, AWTException {driver.findElement(By.cssSelector("#username")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#username")).sendKeys(username);driver.findElement(By.cssSelector("#password")).sendKeys(password);driver.findElement(By.cssSelector("#submit")).click();//檢測是否到個人列表頁driver.findElement(By.cssSelector("body > div.container > div.container-left > div > div:nth-child(4) > span:nth-child(1)"));driver.findElement(By.cssSelector("body > div.nav > a:nth-child(7)"));getScreenShot(getClass().getName());driver.navigate().back();}
}
4.4、找回密碼自動化測試
package com.BlogAutoTest.Tests;import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.edge.EdgeDriver;import java.io.IOException;import static com.BlogAutoTest.commom.AutoTestUtils.createDriver;
import static com.BlogAutoTest.commom.AutoTestUtils.getScreenShot;/*** Created with IntelliJ IDEA.* Description:* User:龍寶* Date:2023-04-15* Time:13:00*/
public class FindPasswordTest {public static EdgeDriver driver = createDriver();@BeforeAllstatic void baseControl() {driver.get("http://43.139.193.116:8085/blog/find_password.html");}@Testvoid FPSWPageLoadRight() throws IOException {driver.findElement(By.cssSelector("body > div.login-container > div > div:nth-child(4) > span"));driver.findElement(By.cssSelector("body > div.login-container > div > div:nth-child(3)"));getScreenShot(getClass().getName());}
}
4.5、個人中心自動化測試
package com.BlogAutoTest.Tests;import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.edge.EdgeDriver;import java.io.IOException;import static com.BlogAutoTest.commom.AutoTestUtils.createDriver;
import static com.BlogAutoTest.commom.AutoTestUtils.getScreenShot;/*** Created with IntelliJ IDEA.* Description:* User:龍寶* Date:2023-04-15* Time:12:58*/
public class MyCenterTest {public static EdgeDriver driver = createDriver();@BeforeAllstatic void baseControl() {driver.get("http://43.139.193.116:8085/blog/mycenter.html");}@Testvoid MCPageLoadRight() throws IOException {driver.findElement(By.cssSelector("body > div.login-container > div > div:nth-child(5) > span"));driver.findElement(By.cssSelector("body > div.login-container > div > div:nth-child(3)"));getScreenShot(getClass().getName());}
}
4.6、博客列表頁自動化測試
package com.BlogAutoTest.Tests;import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.edge.EdgeDriver;import java.io.IOException;import static com.BlogAutoTest.commom.AutoTestUtils.createDriver;
import static com.BlogAutoTest.commom.AutoTestUtils.getScreenShot;/*** Created with IntelliJ IDEA.* Description:* User:龍寶* Date:2023-04-15* Time:12:58*/
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class BlogListTest {//未登錄狀態(tài) + 登錄狀態(tài)//登錄狀態(tài)下public static EdgeDriver driver = createDriver();@BeforeAllstatic void baseControl() {driver.get("http://43.139.193.116:8085/blog/blog_list.html");}@Testvoid BLPageLoadRight() throws IOException {driver.findElement(By.cssSelector("body > div.container > div > div.blog-pagnation-wrapper > button:nth-child(1)"));driver.findElement(By.cssSelector("body > div.container > div > div.blog-pagnation-wrapper > button:nth-child(2)"));getScreenShot(getClass().getName());}}
4.7、個人博客列表頁自動化測試
package com.BlogAutoTest.Tests;import org.junit.jupiter.api.*;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.edge.EdgeDriver;import java.awt.*;
import java.io.IOException;import static com.BlogAutoTest.commom.AutoTestUtils.createDriver;
import static com.BlogAutoTest.commom.AutoTestUtils.getScreenShot;/*** Created with IntelliJ IDEA.* Description:* User:龍寶* Date:2023-04-15* Time:12:58*/
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class MyBlogListTest {public static EdgeDriver driver = createDriver();@BeforeAllstatic void baseControl() {driver.get("http://43.139.193.116:8085/blog/myblog_list.html");}//1------檢查頁面加載@Test@Order(1)void mListPageLoadRight() throws IOException {driver.findElement(By.cssSelector("body > div.container > div.container-left > div > div:nth-child(4) > span:nth-child(1)"));driver.findElement(By.cssSelector("#username"));driver.findElement(By.cssSelector("body > div.nav > a:nth-child(7)"));getScreenShot(getClass().getName());}//2------檢查文章內(nèi)容是否顯示過長@Test@Order(2)void lengthMore() {String artCount = driver.findElement(By.cssSelector("#artCount")).getText();if(artCount.equals("0")) {String expect = "暫無文章";String actual = driver.findElement(By.cssSelector("#artDiv > h3:nth-child(1)")).getText();Assertions.assertEquals(expect,actual);}else {String content = driver.findElement(By.cssSelector("#artDiv > div:nth-child(1) > div.desc")).getText();if(content.length() > 200) {Assertions.assertEquals(200,content.length());}}}//3------刪除博客操作@Test@Order(3)void delRight() throws InterruptedException, AWTException {String artCount = driver.findElement(By.cssSelector("#artCount")).getText();if(artCount.equals("0")) {//刪除driver.findElement(By.cssSelector("#artDiv > div:nth-child(1) > a:nth-child(6)")).click();Thread.sleep(2000);driver.switchTo().alert().accept();//檢查頁面是否還存在當前文章Thread.sleep(500);String artCount1 = driver.findElement(By.cssSelector("#artCount")).getText();if(Integer.parseInt(artCount1) == (Integer.parseInt(artCount)-1)) {Assertions.assertTrue(true);} else {Assertions.assertTrue(false);}}}//4------修改博客@Test@Order(4)void ModRight() {String artCount = driver.findElement(By.cssSelector("#artCount")).getText();if(artCount.equals("0")) {String artTitleFirst = driver.findElement(By.cssSelector("#artDiv > div:nth-child(1) > div.title")).getText();//修改driver.findElement(By.cssSelector("#artDiv > div:nth-child(1) > a:nth-child(5)")).click();//檢查當前修改頁面是否為當前文章driver.findElement(By.cssSelector("body > div.blog-edit-container > div.title > button:nth-child(4)"));
// String title = driver.findElement(By.cssSelector("#title")).getAttribute("value");Assertions.assertEquals(title,artTitleFirst);
// if(title.equals(artTitleFirst)) {
// Assertions.assertTrue(true);
// } else {
// Assertions.assertTrue(false);
// }driver.navigate().back();}}//5-------查看全文@Test@Order(5)void lookArt() {String artCount = driver.findElement(By.cssSelector("#artCount")).getText();if(artCount.equals("0")) {
// String artTitleFirst = driver.findElement(By.cssSelector("#artDiv > div:nth-child(1) > div.title")).getText();//查看全文driver.findElement(By.cssSelector("#artDiv > div:nth-child(1) > a:nth-child(4)")).click();//檢查文章詳情頁是否是當前文章//先檢查頁面是否加載出來了driver.findElement(By.cssSelector("body > div.container > div.container-right > div.upvote > button"));driver.findElement(By.cssSelector("body > div.container > div.container-right > div:nth-child(3) > div.textarea-comment > button"));
// String title = driver.findElement(By.cssSelector("#title")).getText();
// Assertions.assertEquals(title,artTitleFirst);}}}
4.8、草稿列表頁自動化測試
package com.BlogAutoTest.Tests;import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.edge.EdgeDriver;import java.io.IOException;import static com.BlogAutoTest.commom.AutoTestUtils.createDriver;
import static com.BlogAutoTest.commom.AutoTestUtils.getScreenShot;/*** Created with IntelliJ IDEA.* Description:* User:龍寶* Date:2023-04-15* Time:12:57*/public class DraftListTest {public static EdgeDriver driver = createDriver();@BeforeAllstatic void baseControl() {driver.get("http://43.139.193.116:8085/blog/mydraft_list.html");}@Testvoid BDraftPageLoadRight() throws IOException {driver.findElement(By.cssSelector("#username"));driver.findElement(By.cssSelector("body > div.container > div.container-left > div > a"));getScreenShot(getClass().getName());}}
4.9、博客詳情頁自動化測試
package com.BlogAutoTest.Tests;import org.junit.jupiter.api.*;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.edge.EdgeDriver;import java.awt.*;
import java.io.IOException;import static com.BlogAutoTest.commom.AutoTestUtils.createDriver;
import static com.BlogAutoTest.commom.AutoTestUtils.getScreenShot;/*** Created with IntelliJ IDEA.* Description:* User:龍寶* Date:2023-04-15* Time:13:01*/
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class BlogDetailTest {public static EdgeDriver driver = createDriver();@BeforeAllstatic void baseControl() {driver.get("http://43.139.193.116:8085/blog/blog_content.html?id=1");}@Order(1)@Testvoid BDetailPageLoadRight() throws IOException {driver.findElement(By.cssSelector("body > div.container > div.container-right > div.upvote > button"));driver.findElement(By.cssSelector("body > div.container > div.container-right > div:nth-child(3) > div.textarea-comment > button"));getScreenShot(getClass().getName());}//點贊@Order(2)@Testvoid VoteRight() throws InterruptedException, AWTException {String voteCount = "0";String NewVote = "0";try {voteCount = driver.findElement(By.cssSelector("#tag")).getText();//原始點贊數(shù)} catch (NumberFormatException e) {e.printStackTrace();}//點贊driver.findElement(By.cssSelector("body > div.container > div.container-right > div.upvote > button")).click();Thread.sleep(2500);driver.switchTo().alert().accept();try {NewVote = driver.findElement(By.cssSelector("#tag")).getText();//當前點贊數(shù)if(Integer.parseInt(voteCount) >= 0 && Integer.parseInt(NewVote) >= 0) {if ((Integer.parseInt(NewVote) + 1) == Integer.parseInt(voteCount) ||(Integer.parseInt(NewVote) - 1) == Integer.parseInt(voteCount)) {Assertions.assertTrue(true);} else {Assertions.assertTrue(false);}} else {Assertions.assertTrue(false);}} catch (NumberFormatException e) {e.printStackTrace();}}//評論@Order(3)@Testvoid CommentRight() throws InterruptedException, AWTException {String comment = "很棒!";//評論driver.findElement(By.cssSelector("#text-comment")).sendKeys(comment);driver.findElement(By.cssSelector("body > div.container > div.container-right > div:nth-child(3) > div.textarea-comment > button")).click();Thread.sleep(2000);Alert alert = driver.switchTo().alert();alert.accept();//檢查String comment1 = driver.findElement(By.cssSelector("#comment-list > div > div.comment-content")).getText();if(comment.equals(comment1)) {Assertions.assertTrue(true);} else {Assertions.assertTrue(false);}}
}
4.10、博客編輯頁自動化測試
package com.BlogAutoTest.Tests;import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.edge.EdgeDriver;import java.awt.*;
import java.io.IOException;import static com.BlogAutoTest.commom.AutoTestUtils.createDriver;
import static com.BlogAutoTest.commom.AutoTestUtils.getScreenShot;/*** Created with IntelliJ IDEA.* Description:* User:龍寶* Date:2023-04-15* Time:13:01*/
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class BlogEditTest {public static EdgeDriver driver = createDriver();@BeforeAllstatic void baseControl() {driver.get("http://43.139.193.116:8085/blog/blog_add.html");}@Test@Order(1)void BEditPageLoadRight() throws IOException {driver.findElement(By.cssSelector("#day"));driver.findElement(By.cssSelector("body > div.blog-edit-container > div.title > button:nth-child(4)"));getScreenShot(getClass().getName());}@Test@Order(2)void addArt() throws InterruptedException, AWTException {String title = "周一";driver.findElement(By.cssSelector("#title")).sendKeys(title);driver.findElement(By.cssSelector("#editorDiv > div.editormd-toolbar > div > ul > li:nth-child(21) > a")).click();driver.findElement(By.cssSelector("#editorDiv > div.editormd-toolbar > div > ul > li:nth-child(5) > a")).click();driver.findElement(By.cssSelector("body > div.blog-edit-container > div.title > button:nth-child(6)")).click();Thread.sleep(2000);driver.switchTo().alert().accept();String t = driver.findElement(By.cssSelector("#artDiv > div:nth-child(1) > div.title")).getText();if(t.equals(title)) {Assertions.assertTrue(true);} else {Assertions.assertTrue(false);}}
}
3、bug匯總
3.1、功能測試中發(fā)現(xiàn)的bug
模塊 | 測試版本 | 測試環(huán)境 | 測試步驟 | 實際結(jié)果 | 預期結(jié)果 | 其他附件 |
博客主/個人/草稿列表頁 | Test003 | Chrome- 113.0.5668.0 | 輸入主頁url | 文章簡介只含正文,不包括MarkDown編輯器的某些特殊字符 | 文章簡介只含正文,不包括MarkDown編輯器的某些特殊字符 | ![]() |
草稿箱模塊 | Test003 | Chrome-?113.0.5668.0 | 登錄-進入草稿箱 | 個人信息欄下的文章數(shù)與草稿箱的文章數(shù)不對應 | 個人信息欄下的文章數(shù)與草稿箱的文章數(shù)對應 | ![]() |
博客詳情頁 | Test003 | Chrome-?113.0.5668.0 | 登錄-查看某文章的詳情頁-評論 | 評論列表無評論者的頭像 | 評論列表有評論者的頭像 | ![]() |
?3.2、兼容性測試中發(fā)現(xiàn)的bug
模塊 | 測試版本 | 測試環(huán)境 | 測試步驟 | 實際結(jié)果 | 預期結(jié)果 | 其他附件 |
登錄模塊 | Test003 | OPPPA93-QQ瀏覽器13.8.0.0039 | 輸入url-回車 | ![]() | ||
個人博客列表模塊 | Test003 | OPPPA93-QQ瀏覽器13.8.0.0039 | 登錄-進入個人博客列表頁 | ![]() | ||
博客主列表頁 | Test003 | OPPPA93-QQ瀏覽器13.8.0.0039 | 輸入url-回車 | ![]() | ||
草稿箱 | Test003 | OPPPA93-QQ瀏覽器13.8.0.0039 | 登錄-進入草稿箱 | ![]() | ||
博客編輯頁 | Test003 | OPPPA93-QQ瀏覽器13.8.0.0039 | 登錄-進入寫博客頁 | ![]() | ||
個人中心 | Test003 | OPPPA93-QQ瀏覽器13.8.0.0039 | 登錄-進入個人中心 | ![]() | ||
博客詳情頁 | Test003 | OPPPA93-QQ瀏覽器13.8.0.0039 | 通過url-進入某篇文章 | ![]() |
?????????結(jié)論:界面設計不兼容移動端,但功能支持?
4、總結(jié)
4.1、缺陷和限制
? ? ? ? 該博客系統(tǒng)只滿足了最基本的功能,吸引用戶量,還需要拓展更多的功能,例如:登陸的驗證碼、用戶頭像、關注、粉絲、用戶周排名、月排名、總排名、主頁皮膚等等;另外性能方面也存在不足,還需要繼續(xù)優(yōu)化~
4.2、綜合評價
? ? ? ?可以上線~