java開發經驗分享(四)

4、 關於測試

1. 在整個項目計劃中,測試時間安排的合理性,對測試階段的狀況應做充分預計,不可爲了趕發佈點而忽略質量。javascript

2. 務必清楚產品包、更新包、bug包的提交規範。具體請參照《開發規範手冊》。不要出現測試過程當中提交多個bug包,或者提交安裝包給測試人員更新的狀況。php

3. 提包時請先檢查,路徑是否正確、文件是否完整、配置文件是否應該提交,源代碼修改記錄描述是否完善。以前常常出現,提包不檢查就直接提交來測試,致使出錯後環境不斷地還原或者重建新的環境。CVS使用不熟悉,提交文件反覆出錯。html

4. 產品質量須要嚴格控制,本身認可是問題的狀況下,請不要試圖和測試商談但願能夠不被追究。java

5. 請注意提升修改bug的質量,目前,修改一個bug而引起更多的bug的狀況特別多。linux

6. bug修改完成後,在提交測試前請本身先驗證經過後再提交,請不要修改完成後不驗證就直接提交給測試人員,防止致使bug被反覆reopen的狀況。web

7. 原則上不容許不經過CVS而直接提交文件給測試人員調試問題、尋找緣由。若是確有必要,測試人員能夠協助調試,但次數不宜過多,防止測試環境版本難以控制。sql

8. bug是否存在的衡量標準以測試環境爲準,不建議出現「我這邊是好的」這樣的解釋。數據庫

9. 修改bug時請修改完整,可能會有多個小問題提交在一個BUG裏面,BUG修改時多個小問題的地方均需修改。數組

10. 更新文件必須經過配置發佈,不管是否通過測試都不容許直接發給項目或直接更新客戶服務器瀏覽器

 

5、 開發環境

1. Eclipse內存溢出、崩潰、無響應、啓動慢

1) 創建多個workspace

2) 將workspace中暫時不用的工程close

3) 修改eclipse配置文件eclipse.ini,參考知識庫:

-Xms512m

-Xmx512m

-XX:PermSize=96m

-XX:MaxPermSize=96m

2. Eclipse統一字符集爲UTF-8

1) 進入Eclipse->Window->Preferences->General->Workspace界面,在「Text file encoding」中選擇「other」並在下拉列表中選擇「UTF-8」,並點擊【Apply】後,點擊【OK】確認保存

 

2) 修改jsp文件頭部

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

將字符集改成「UTF-8」

3) 進入Eclipse->Window->Preferences->Web->JSP Files界面,將「Encoding」屬性修改成「ISO 10646/Unicode(UTF-8)」

 

4) 已創建的項目,右鍵點擊項目名稱,進入Properties->Resource界面,選擇「Text file encoding」編碼爲「UTF-8」

3. 打開Eclipse內存監視及回收插件

進入Eclipse->Window->Preferences->General界面,勾選「Show heap status」,點擊【Apply】後,點擊【OK】確認保存。Eclipse右下角,會顯示JVM內存使用狀況。

 

點擊垃圾桶圖標,可進行手動回收

4. 設置斷點,進行調試

1) 行斷點

行斷點是最普通的斷點。只要在Eclipse Java 編輯區的行頭雙擊就會獲得一個斷點,代碼會運行到此處時中止

 

2) 條件斷點

條件斷點,顧名思義就是一個有必定條件的斷點,只有知足了用戶設置的條件,代碼纔會在運行到斷點處時中止。

在斷點處點擊鼠標右鍵,選擇最後一個"Breakpoint Properties"

斷點的屬性界面及各個選項的意思以下圖,

3) 變量斷點

斷點不只能打在語句上,變量也能夠接受斷點

下圖就是一個變量的打的斷點,在變量的值初始化,或是變量值改變時能夠中止,固然變量斷點上也是能夠加條件的,和條件斷點的設置是同樣的

4) 方法斷點

方法斷點就是將斷點打在方法的入口處,方法斷點的特別之處在於它能夠打在 JDK的源碼裏,因爲 JDK 在編譯時去掉了調試信息,因此普通斷點是不能打到裏面的,可是方法斷點卻能夠,能夠經過這種方法查看方法的調用棧

5) 類型載入斷點

能夠查看何時載入的類

 

6) 異常斷點

當異常發生時,代碼會停在異常發生處,定位問題時應該比較有幫助

打開Breakpoints視圖,點擊按鈕,增長異常斷點

5. 修改代碼字體

進入Eclipse->Window->Preferences->General->Appearance->Colors and Fonts界面,選擇Basic->Text Font,點擊右側【Edit…】,選擇。點擊【Apply】後,點擊【OK】確認保存

 

6. Eclipse快捷鍵,見「附錄1—Eclipse快捷鍵」

 

6、 Linux

見《Linux_命令詳解》

經常使用命令:

cd 變換工做目錄

cd / 返回根目錄 cd ../ 返回上層目錄

ls 顯示指定工做目錄下的內容

mv 將一個檔案移至另外一個檔案,或將數個檔案移至另外一個目錄

mv /data/m3 /root 將/data/m3轉移到/root目錄下

mkdir 建立指定的目錄名

mkdir /root/temp 在root目錄下建立temp目錄

rm 刪除檔案及目錄

rm –rf 文件/文件夾 完全刪除文件/文件夾

rmdir 刪除空的目錄

kill 終止進程

kill -9 2342 殺掉進程標識號PID爲2342的進程

ps 報告進程情況

ps –ef|grep java 查看java進程

tail 從指定點開始將指定的文件寫到標準輸出

tail –f nohup.out 實時讀取日誌nohup.out的更新內容

su 變動爲其它使用者的身份

su – user1 切換到用戶user1

cp 複製

cp config.xml /data/ 將config.xml文件複製到/data/目錄下

reboot 重啓服務器

halt 關閉服務器

top 顯示目前正在系統中執行的程序

free 顯示系統內存與swap使用的狀況

java –version 查看JDK版本

chromd 777 /temp/runthread.sh 賦予用戶/temp/runthread.sh最大權限

cat /dev/null > nohup.out 清空日誌nohup.out文件內容

df –hl 查看磁盤空間與使用狀況

du 顯示目錄下全部文件並列出文件大小

pwd 查看當前所在路徑

export lang=zh_CN 修改環境變量lang值,解決linux亂碼

./startup.sh tomcat啓動

nohup ./startWeblogic.sh & weblogic啓動(不掛斷運行,防止註銷後weblogic中止)

./startServer.sh server1  websphere啓動

 

7、 常見問題

1. jsp出現getOutputStream() has already been called for this response

jsp中出現此錯誤通常都是在jsp中使用了輸出流(如輸出圖片驗證碼,文件下載等),沒有妥善處理好形成的。

jsp編譯成servlet以後在函數_jspService(HttpServletRequest request, HttpServletResponse response)的最後有一段這樣的代碼

finally {

    if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);

}

這裏是在釋放在jsp中使用的對象,會調用response.getWriter(),由於這個方法是和response.getOutputStream()相沖突的!因此會出現以上這個異常。

out.clear();

out = pageContext.pushBody();

2. xml加載錯誤

1) weblogic下,xml沒有以xml文檔方式加載,而是按照文本方式展示,致使出錯,例如高級編輯器或樹會出現加載錯誤

解決方法:在web.xml文件中增長

<mime-mapping>

    <extension>xml</extension>

    <mime-type>text/xml</mime-type>

</mime-mapping>

2) 網絡問題,致使沒法訪問DTD(文檔類型定義,做用是定義 XML 文檔的合法構建模塊)

解決方法:刪除DTD聲明,或者指向服務器本地DTD

3) XML 聲明一般在 XML 文檔的第一行出現。XML 聲明不是必選項,可是若是使用 XML 聲明,必須在文檔的第一行,前面不得包含任何其餘內容或空白。動態產生的xml文檔,開頭產生了空白行,形成錯誤。

解決方法:輸出xml內容以前,用 out.clear(); 清空緩存

3. 中文亂碼

1) jsp頁面亂碼,頭部指定字符集爲UTF-8

<%@page language="java" contentType="text/xml; charset=utf-8"%>

2) 數據庫亂碼,指定數據庫字符集爲UTF-8,同時dbconfig.xml的鏈接字符串中設置字符集爲UTF-8

3) 中文參數亂碼。tomcat下修改server.xml中HTTP的Connector的URIEncoding屬性爲UTF-8;js傳遞中文參數,用encodeURI() 進行編碼

4. jPage腳本錯誤,檢查proxyUrl指定的jsp頁面的輸出內容。輸出的內容爲腳本片斷,要符合javascript語法。

dataStore爲字符串數組,須要過濾dataStore中元素裏的單引號

replaceAll("\'","\\\\'").replaceAll("\r\n","");

輸出形式以下:

dataStore = ['第一條\'記錄\'內容', '第二條」記錄」內容', '第三條記錄內容'];

5. Apache與Tomcat整合,session丟失

參考知識庫:

http://km.hanweb.com/viewthread.php?tid=1515&highlight=tomcat%2B%E5%80%AA%E7%87%95%E9%9C%9E

http://km.hanweb.com/viewthread.php?tid=978&highlight=tomcat

http://km.hanweb.com/viewthread.php?tid=1127&highlight=%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

6. zip文件解壓錯誤,提示找不到方法

應用中的ant.jar同中間件自帶的文件衝突,將/WEB-INF/lib/ant-1.7.0.jar更名爲ant.jar 覆蓋到中間件的目錄下

weblogic:weblogic/bea/weblogic81/server/lib/ant

websphere:WebSphere/AppServer/lib

7. 腳本錯誤,使用瀏覽器調試工具

IE8及以上版本,使用瀏覽器自帶的開發人員工具,按F12進行腳本調試

FireFox使用Firebug插件進行調試,按F12進行腳本調試

8. 中間件報錯以下:java.sql.SQLException: IO異常:The Network Adapter could not establish the connection,前後重啓數據庫和中間件無效

1) 用「telnet 數據庫IP 數據庫端口」命令檢查網絡是否暢通

2) 檢查是否超過了數據庫最大鏈接數

參考http://km.hanweb.com/viewthread.php?tid=1448&highlight=%E8%BF%9E%E6%8E%A5%E6%95%B0

3) 檢查是否有防火牆

4) 數據庫監聽日誌大小是否超過2G(/data/oracle/product/版本號/network/log/listener.ora)

9. 日誌中報too many open files錯誤

linux默認打開文件的最大數是1024,解決方法:

用cat /proc/sys/fs/file-max 命令查看打開文件的最大限制數

用echo 65536 > /proc/sys/fs/file-max 命令修改

編輯/etc/sysctl.conf文件,編輯行fs.file-max=65536

編輯/etc/security/limits.conf,增長行* - nofile 65536

10. 導入XML文件失敗

Editplus檢查xml文件是不是UTF-8編碼

8、 附錄1(Eclipse快捷鍵)

快捷鍵

功能

Ctrl+1

快速修復

Ctrl+D

刪除當前行

Ctrl+Alt+↓

複製當前行到下一行(複製增長)

Ctrl+Alt+↑

複製當前行到上一行(複製增長)

Alt+↓

當前行和下面一行交換位置

Alt+↑

當前行和上面一行交換位置

Alt+←

前一個編輯的頁面

Alt+→

下一個編輯的頁面

Alt+Enter

顯示當前選擇資源的屬性

Shift+Enter

在當前行的下一行插入空行

Shift+Ctrl+Enter

在當前行插入空行

Ctrl+Q

定位到最後編輯的地方

Ctrl+L

定位到某行

Ctrl+M

最大化當前的Edit或View

Ctrl+/

註釋當前行,再按則取消註釋

Ctrl+O

快速顯示 OutLine

Ctrl+T

快速顯示當前類的繼承結構

Ctrl+W

關閉當前Editer

Ctrl+K

參照選中的Word快速定位到下一個

Ctrl+E

快速顯示當前Editer的下拉列表

Ctrl+/(小鍵盤)

摺疊當前類中的全部代碼

Ctrl+×(小鍵盤)

展開當前類中的全部代碼

Ctrl+Space

代碼助手完成一些代碼的插入(但通常和輸入法有衝突,能夠修改輸入法的熱鍵,也能夠暫用Alt+/來代替)

Ctrl+Shift+E

顯示管理當前打開的全部的View的管理器

Ctrl+J

正向增量查找(按下Ctrl+J後,你所輸入的每一個字母編輯器都提供快速匹配定位到某個單詞,若是沒有,則在stutes line中顯示沒有找到了,查一個單詞時,特別實用,這個功能Idea兩年前就有了)

Ctrl+Shift+J

反向增量查找

Ctrl+Shift+F4

關閉全部打開的Editer

Ctrl+Shift+X

把當前選中的文本所有變爲大寫

Ctrl+Shift+Y

把當前選中的文本所有變爲小寫

Ctrl+Shift+F

格式化當前代碼

Ctrl+Shift+P

定位到對應的匹配符(譬如{}) (從前面定位後面時,光標要在匹配符裏面,後面到前面,則反之)

Alt+Shift+R

重命名

Alt+Shift+M

抽取方法

Alt+Shift+C

修改函數結構

Alt+Shift+L

抽取本地變量(能夠直接把一些魔法數字和字符串抽取成一個變量,尤爲是多處調用的時候)

Alt+Shift+F

把Class中的local變量變爲field變量

Alt+Shift+I

合併變量

Alt+Shift+V

移動函數和變量

Alt+Shift+Z

重構的後悔藥

 

編輯

快捷鍵

功能

做用域

Ctrl+F

查找並替換

全局

Ctrl+Shift+K

查找上一個

文本編輯器

Ctrl+K

查找下一個

文本編輯器

Ctrl+Z

撤銷

全局

Ctrl+C

複製

全局

Alt+Shift+↓

恢復上一個選擇

全局

Ctrl+X

剪切

全局

Ctrl1+1

快速修正

全局

Alt+/

內容輔助

全局

Ctrl+A

所有選中

全局

Delete

刪除

全局

Alt+?

Alt+Shift+?

Ctrl+Shift+Space

上下文信息

全局

F2

顯示工具提示描述

Java編輯器

Alt+Shift+↑

選擇封裝元素

Java編輯器

Alt+Shift+←

選擇上一個元素

Java編輯器

Alt+Shift+→

選擇下一個元素

Java編輯器

Ctrl+J

增量查找

文本編輯器

Ctrl+Shift+J

增量逆向查找

文本編輯器

Ctrl+V

粘貼

全局

Ctrl+Y

重作

全局

查看

快捷鍵

功能

做用域

Ctrl+=

放大

全局

Ctrl+-

縮小

全局

窗口

快捷鍵

功能

做用域

F12

激活編輯器

全局

Ctrl+Shift+W

切換編輯器

全局

Ctrl+Shift+F6

上一個編輯器

全局

Ctrl+Shift+F7

上一個視圖

全局

Ctrl+Shift+F8

上一個透視圖

全局

Ctrl+F6

下一個編輯器

全局

Ctrl+F7

下一個視圖

全局

Ctrl+F8

下一個透視圖

全局

Ctrl+W

顯示標尺上下文菜單

文本編輯器

Ctrl+F10

顯示視圖菜單

全局

Alt+-

顯示系統菜單

全局

導航

快捷鍵

功能

做用域

Ctrl+F3

打開結構

Java編輯器

Ctrl+Shift+T

打開類型

全局

F4

打開類型層次結構

全局

F3

打開聲明

全局

Shift+F2

打開外部javadoc

全局

Ctrl+Shift+R

打開資源

全局

Alt+←

後退歷史記錄

全局

Alt+→

前進歷史記錄

全局

Ctrl+,

上一個

全局

Ctrl+.

下一個

全局

Ctrl+O

顯示大綱

Java編輯器

Ctrl+Shift+H

在層次結構中打開類型

全局

Ctrl+Shift+P

轉至匹配的括號

全局

Ctrl+Q

轉至上一個編輯位置

全局

Ctrl+Shift+↑

轉至上一個成員

Java編輯器

Ctrl+Shift+↓

轉至下一個成員

Java編輯器

Ctrl+L

轉至行

文本編輯器

搜索

快捷鍵

功能

做用域

Ctrl+Shift+U

出如今文件中

全局

Ctrl+H

打開搜索對話框

全局

Ctrl+G

工做區中的聲明

全局

Ctrl+Shift+G

工做區中的引用

全局

文本編輯

快捷鍵

功能

做用域

Insert

改寫切換

文本編輯器

Ctrl+↑

上滾行

文本編輯器

Ctrl+↓

下滾行

文本編輯器

文件

快捷鍵

功能

做用域

Ctrl+S

保存

全局

Ctrl+P

打印

全局

Ctrl+F4

關閉

全局

Ctrl+Shift+S

所有保存

全局

Ctrl+Shift+F4

所有關閉

全局

Alt+Enter

屬性

全局

Ctrl+N

新建

全局

項目

快捷鍵

功能

做用域

Ctrl+B

所有構建

全局

源代碼

快捷鍵

功能

做用域

Ctrl+Shift+F

格式化

Java編輯器

Ctrl+\

取消註釋

Java編輯器

Ctrl+/

註釋

Java編輯器

Ctrl+Shift+M

添加導入

Java編輯器

Ctrl+Shift+O

組織導入

Java編輯器

運行

快捷鍵

功能

做用域

F7

單步返回

全局

F6

單步跳過

全局

F5

單步跳入

全局

Ctrl+F5

單步跳入選擇

全局

F11

調試上次啓動

全局

F8

繼續

全局

Shift+F5

使用過濾器單步執行

全局

Ctrl+Shift+B

添加/去除斷點

全局

Ctrl+D

顯示

全局

Ctrl+F11

運行上次啓動

全局

Ctrl+R

運行至行

全局

Ctrl+U

執行

全局

重構

快捷鍵

功能

做用域

Alt+Shift+Z

撤銷重構

全局

Alt+Shift+M

抽取方法

全局

Alt+Shift+L

抽取局部變量

全局

Alt+Shift+I

內聯

全局

Alt+Shift+V

移動

全局

Alt+Shift+R

重命名

全局

Alt+Shift+Y

重作

全局

9、 附錄2(測試常見問題)

1. 表和觸發器的建立等sql語句更新執行問題,即sql語句不正確;

2. 新增、編輯信息時,對字段輸入的類型(數字、字母、日期等)、長度、範圍不做校驗,若是校驗不對須要在處理以前要有相關的提示信息;

3. 新增、編輯信息時,當某一字段輸入有問題,提交時,系統做出錯誤提示,可是其餘正確的字段信息均被清空;

4. 新增和編輯修改信息的要求不一致;例如添加要求必填的項,修改也應該必填;添加規定爲整型的項,修改也必須爲整型.

5. 對新建完成的信息記錄打開編輯時顯示不正確;

6. 新建信息時新增的空記錄錯誤地保存成功;

7. 新增信息列表後,信息列表排序沒有規律,如正序或者倒序,而是無序地插入;

8. 錄入後自動計算的字段要隨着別的字段修改更新(如單科成績變後,總成績也變);

9. 輸入較長的信息後,致使界面變形,瀏覽器分辨率大小撐大或者內容被遮擋

10. 信息輸入開頭、結尾的空格、null值判斷顯示;

11. 刪除信息時,勾選部分信息記錄進行刪除時,系統錯誤刪除了其餘未勾選的信息記錄;選擇性刪除一條信息記錄和刪除全部信息記錄效果同樣;

12. 刪除信息時,沒有「刪除確認」對話框直接刪除了全部信息記錄;

13. 沒有選擇記錄直接點擊刪除/修改按鈕須要提示「請先選擇記錄」;

14. 須要考慮刪除的關聯性,即刪除某一個內容須要同時刪除其關聯的某些內容;

15. 高級檢索中的條件檢索不管什麼條件都可以檢索出全部信息列表;

16. 高級檢索完成後條件仍然存在,影響了外面的空檢索不能正確檢索出全部信息;

17. 查詢條件名稱與信息列表及信息編輯頁面相應的字段名稱徹底統一;

18. 一個模塊的excel表格錯誤地被導入另外一個模塊;

19. 新增和導入的文件內容字段判斷不一致,或者導入時不做判斷;

20. 功能實現時,隱性需求未能實現,例如:用戶輸入四科成績後,總成績仍是須要用戶手動輸入; 

21. 返回按鈕不能實現返回功能;

22. 信息保存提交後系統給出「保存/提交成功」提示信息,可是系統不能自動更新列表顯示;

23. 上傳圖片、文件系統未正確更新;

24. 上傳文件、圖片時,對文件、圖片的類型、大小系統沒有正確做控制;

25. 對於範圍的查詢應該採用全閉的形式,例如選擇範圍是1-3,應該表示大於等於1而且小於等於3;

26. 操做完成後系統沒有正確提示,不知道是成功了仍是失敗了,不知道操做完成的狀況;

27. 系統顯示的提示信息描述不正確、與實際結果不一致;例如系統彈出錯誤提示信息可是操做成功;

28. 信息列表中若是某個字段顯示過長用「…」或者分行顯示;

29. 大文本框輸入應該能夠自動換行顯示、控制字數等;

30. 界面只讀的時候(查詢、統計、導入)等,應當不能編輯;

31. 對於添加的時間控件,未根據實際狀況做出控制,即選擇的時間應當符合實際條件;而且從**至**時間控件選擇時沒有前後順序;

32. 文本框等控件的控制禁止了鍵盤的輸入,可是沒有阻止鼠標及快捷鍵的操做,例如測試的時候能夠將一段代碼或非法輸入使用鼠標操做進行復制粘貼操做;

33. 用戶註銷或者cookie失效後,有頁面正常顯示致使的錯誤操做;

34. 與實際常識邏輯上不符合;例如:大小月、二月各自的實際天數;

35. 多種條件衝突而致使結果矛盾,例如:考勤系統中出現過的,又缺勤又遲到的狀況;

36. 調試信息遺留(後臺打印與文件開發環境配置,多餘文件等)

37. 用戶、機構與角色的關聯關係沒有控制正確,例如系統沒有給用戶a分配相應角色權限時,可是此用戶a在系統中錯誤地有操做權限;

38. 用戶登陸後本身能夠錯誤地刪除本身的帳號;

39. 時間控件需做判斷時以服務器時間爲基準界面顯示,字體樣式、對齊方式、按鈕風格和佈局,和公司其餘產品統一;

40. 界面風格、佈局和公司其餘產品保持統一,遵照如下規則:易用性、規範性、幫助設施、合理性、美觀與協調性、菜單位置、快捷鍵組合、安全性考慮

相關文章
相關標籤/搜索