搜索引擎模块划分:

  1. 索引模块:扫描本地 API 文档,分析内容并构建正排+倒排索引(使用 Ansj 分词技术);
  2. 搜索模块:根据输入查询词,基于倒排索引进行检索,合并文档,设置分词权值,返回检索结果;
  3. 前端模块:编写简单页面,展示搜索结果,点击搜索结果跳转对应 API 文档;

搜索结果展示:

Java 实现文档内容检索 java实现搜索框搜索文本_搜索

测试

一.简单搜索输入框测试用例

1:不输入任何字符,点击搜索按钮;

测试结果:无任何显示,保持原有界面;

2:输入全角/半角中文字符(一个字符、超长字符)

测试结果:输入中文字符串,显示空白页面;点击上一页,无明显反应;点击下一页,出现空白异常;

Java 实现文档内容检索 java实现搜索框搜索文本_Java 实现文档内容检索_02

 

Java 实现文档内容检索 java实现搜索框搜索文本_Java 实现文档内容检索_03

3:输入全角/半角英文字符(一个字符、超长字符)

测试结果:输入Java语言中非专有字符串,无查询结果;

#不好区分字符串拼接形成的专业字符和非专业字符;

例如:可以查询str(string),到那时无法查询ch(char);

Java 实现文档内容检索 java实现搜索框搜索文本_字符串_04

 

Java 实现文档内容检索 java实现搜索框搜索文本_搜索引擎_05

 

Java 实现文档内容检索 java实现搜索框搜索文本_搜索引擎_06

 4:输入全角/半角特殊字符~!@#$%^&*()_+|{}:"<>?.,;'[]\=-等;

测试结果:英文特殊字符均可得到查询结果,中文符合无查询结果;

Java 实现文档内容检索 java实现搜索框搜索文本_Java 实现文档内容检索_07

 

Java 实现文档内容检索 java实现搜索框搜索文本_Java 实现文档内容检索_08

 5:输入全角/半角中英文空格

测试结果:中英文空格均无查询结果;

6:输入特殊字符串NULL、null、 空格的转义字 符;<scrīpt></scrīpt>;<br>;<tr>;<td>;< /tr>;</td>;</html>;</body>;</table>

测试结果:均有查询结果,结果并不准确;

Java 实现文档内容检索 java实现搜索框搜索文本_搜索_09

 

Java 实现文档内容检索 java实现搜索框搜索文本_搜索_10

 7:回车键搜索

测试结果:不支持回车键搜索;

class JavaSearch(unittest.TestCase):
    
    # 测试固件
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.url = "http://127.0.0.1:8080/index.html"
        self.driver.maximize_window()
        time.sleep(3)

    def tearDown(self):
        print("------tearDown------")
        self.driver.quit()

    # 简单搜索框输入测试用例

    # 输入正确的搜索内容
    def test_simple0(self):
        driver = self.driver
        url = self.url
        driver.get(url)
        driver.find_element_by_id("ssk").send_keys("String")
        time.sleep(3)
        driver.find_element_by_id("ss").click()
        time.sleep(3)

    # 输入空格
    def test_simple1(self):
        driver = self.driver
        url = self.url
        driver.get(url)
        driver.find_element_by_id("ssk").send_keys(" ")
        time.sleep(3)
        driver.find_element_by_id("ss").click()
        time.sleep(3)

    # 输入中文字符串
    def test_simple2(self):
        driver = self.driver
        url = self.url
        driver.get(url)
        driver.find_element_by_id("ssk").send_keys("通信工程")
        time.sleep(3)
        driver.find_element_by_id("ss").click()
        time.sleep(3)

    # 输入无效长字符串
    def test_simple3(self):
        driver = self.driver
        url = self.url
        driver.get(url)
        driver.find_element_by_id("ssk").send_keys("abcdefgh")
        time.sleep(3)
        driver.find_element_by_id("ss").click()
        time.sleep(3)

    # 输入特殊字符
    def test_simple4(self):
        driver = self.driver
        url = self.url
        driver.get(url)
        driver.find_element_by_id("ssk").send_keys("@#")
        time.sleep(3)
        driver.find_element_by_id("ss").click()
        time.sleep(3)

        if __name__ == "__main__":
            unittest.main()

二.性能测试

1:在网络情况良好的前提下,页面的跳转需要多少时间;

2:在网络状况不好的情况下,页面的跳转需要多少时间;

a.  从输入完成到敲击回车到页面正常返回所花费的时间,是否符合用户的预期(在一定的时间内返回)
b. 从输入开始是否用数据返回(AJAX)异步返回数据(在一定的时间内返回)
c.   在不同的网络条件下能否正常的使用(在一定的时间内是否有数据返回)
i. 有线网络:

  1. 从拨号上网到1000M带宽,服务器响应速度如何,对于信号不好的地方是否有优化

ii. 无线网络(有强到弱,对应用的影响以实际接收数据为准)

  1.  信号1格到满格对搜索的影响

三.兼容性测试

1:不同的平台:windows系统,mac系统

2:不同的浏览器:Firefox浏览器、Chrome浏览器、IE

3:不同的移动平台:android、ios

四.界面测试

1:查看UI是否显示正确,布局是否美观

2:页面上是否有错别字

3:查看错误提示信息的位置是否合理、是否有错别字

4:搜索结果的页面是否美观

5:搜索结果数量庞大的时候,是否分页处理,分页是否和需求说明书的要求保持一致

6:光标的定焦是否准确