『壹』 計算機2級C語言,考些什麼
全國計算機C語言程序設計,,要考的內容是:
一、
基本數據結構與演算法
1.
演算法的基本概念;演算法復雜度的概念和意義(時間復雜度與空間復雜度)。
2.
數據結構的定義;數據的邏輯結構與存儲結構;數據結構的圖形表示;線性結構與非線性結構的概念。
3.
線性表的定義;線性表的順序存儲結構及其插入與刪除運算。
4.
棧和隊列的定義;棧和隊列的順序存儲結構及其基本運算。
5.
線性單鏈表、雙向鏈表與循環鏈表的結構及其基本運算。
6.
樹的基本概念;二叉樹的定義及其存儲結構;二叉樹的前序、中序和後序遍歷。
7.
順序查找與二分法查找演算法;基本排序演算法(交換類排序,選擇類排序,插入類排序)。
二、
程序設計基礎
1.
程序設計方法與風格。
2.
結構化程序設計。
3.
面向對象的程序設計方法,對象,方法,屬性及繼承與多態性。
三、
軟體工程基礎
1.
軟體工程基本概念,軟體生命周戎概念,軟體工具與軟體開發環境。
2.
結構化分析方法,數據流圖,數據字典,軟體需求規格說明書。
3.
結構化設計方法,總體設計與詳細設計。
4.
軟體測試的方法,白盒測試與黑盒測試,測試用例設計,軟體測試的實施,單元測試、集成測試和系統測試。
5.
程序的調試,靜態調試與動態調試。
四、
資料庫設計基礎
1.
資料庫的基本概念:資料庫,資料庫管理系統,資料庫系統。
2.
數據模型,實體聯系模型及E-R圖,從E-R圖導出關系數據模型。
3.
關系代數運算,包括集合運算及選擇、投影、連接運算,資料庫規范化理論。
4.
資料庫設計方法和步驟:需求分析、概念設計、邏輯設計和物理設計的相關策略。
考試方式
1、
公共基礎的考試方式為筆試,與C語言(VisualBASIC、Visual
FoXPro、Java、Access、Visual
C++)的筆試部分合為一張試卷。公共基礎部分佔全卷的30分。
2、
公共基礎知識有10道選擇題和5道填空題。
C語言程序設計
基本要求
1.熟悉TURBO
C集成環境。
2.熟練掌握結構化程序設計的方法,具有良好的程序設計風格。
3.掌握程序設計中簡單的數據結構和演算法。
4.TURBO
C的集成環境下,能夠編寫簡單的C程序,並具有基本的糾錯和調試程序的能力。
考試內容
一、C語言的結構
1.程序的構成,MAIN函數和其他函數。
2.頭文件,數據說明,函數的開始和結束標志。
3.源程序的書寫格式
4.C語言的風格。
二、數據類型及其運算
1.C的數據類型(基本類型,構造類型,指針類型,空類型)及其定義方法。
2.C運算符的種類、運算優先順序和結合性。
『貳』 單元測試的測試工具
現在開始介紹單元測試工具,分別按編程語言進行分組介紹。 CppUnit
首先是CppUnit,這是C++單元測試工具的鼻祖,免費的開源的單元測試框架。由於已有一眾高人寫了不少關於CppUnit的很好的文章,老納就不現丑了,想了解CppUnit的朋友,建議讀一下Cpluser 所作的《CppUnit測試框架入門》,。該文也提供了CppUnit的下載地址。
C++Test
然後介紹C++Test,這是Parasoft公司的產品。[C++Test是一個功能強大的自動化C/C++單元級測試工具,可以自動測試任何C/C++函數、類,自動生成測試用例、測試驅動函數或樁函數,在自動化的環境下極其容易快速的將單元級的測試覆蓋率達到100%]。[]內的文字引自,這是華唐公司的網頁。老納想寫些介紹C++Test的文字,但發現無法超越華唐公司的網頁上的介紹,所以也就省點事了,想了解C++Test的朋友,建議訪問該公司的網站。華唐公司代理C++Test,想要購買或索取報價、試用版都可以找他們。
Visual Unit
最後介紹Visual Unit,簡稱VU,這是國產的單元測試工具,據說申請了多項專利,擁有一批創新的技術,不過老納只關心是不是有用和好用。[自動生成測試代碼 快速建立功能測試用常式序行為一目瞭然 極高的測試完整性 高效完成白盒覆蓋 快速排錯 高效調試 詳盡的測試報告]。[]內的文字是VU開發商的網頁上摘錄的,。前面所述測試要求:完成功能測試,完成語句覆蓋、條件覆蓋、分支覆蓋、路徑覆蓋,用VU可以輕松實現,還有一點值得一提:使用VU還能提高編碼的效率,總體來說,在完成單元測試的同時,編碼調試的時間還能大幅度縮短。算了,不想再講了,老納顯擺理論、介紹經驗還是有興趣的,因為可以滿足老納好為人師的虛榮心,但介紹工具就覺得索然無味了,畢竟工具好不好用,合不合用,要試過才知道,還是自己去開發商的網站看吧,可以下載演示版,還有演示課件。
gtest
gtest測試框架是在不同平台上(Linux,Mac OS X,Windows,Cygwin,Windows CE和Symbian)為編寫C++測試而生成的。它是基於xUnit架構的測試框架,支持自動發現測試,豐富的斷言集,用戶定義的斷言,death測試,致命與非致命的失敗,類型參數化測試,各類運行測試的選項和XML的測試報告。需要詳細了解的朋友可以參閱《玩轉Google單元測試框架gtest系列》該篇文章。 JUnit
JUnit 是 Java 社區中知名度最高的單元測試工具。它誕生於 1997 年,由 Erich Gamma 和 Kent Beck 共同開發完成。其中 Erich Gamma 是經典著作《設計模式:可復用面向對象軟體的基礎》一書的作者之一,並在 Eclipse 中有很大的貢獻;Kent Beck 則是一位極限編程(XP)方面的專家和先驅。JUnit 設計的非常小巧,但是功能卻非常強大。JUnit ——是一個開發源代碼的Java測試框架,用於編寫和運行可重復的測試。他是用於單元測試框架體系xUnit的一個實例(用於java語言)。主要用於白盒測試,回歸測試。
JUnit的好處和JUnit單元測試編寫原則:
好處:可以使測試代碼與產品代碼分開;針對某一個類的測試代碼通過較少的改動便可以應用於另一個類的測試;易於集成到測試人員的構建過程中,JUnit和Ant的結合可以實施增量開發;JUnit是公開源代碼的,可以進行二次開發;可以方便地對JUnit進行擴展;
編寫原則:是簡化測試的編寫,這種簡化包括測試框架的學習和實際測試單元的編寫;是使測試單元保持持久性;是可以利用既有的測試來編寫相關的測試;
JUnit使用幫助
1、junit3.x版本,我們通常使用junit 3.8
(1)、使用junit3.x版本進行單元測試時,測試類必須要繼承於TestCase父類;
(2)、測試方法需要遵循的原則:
A、public的
B、void的
C、無方法參數
D、方法名稱必須以test開頭
(3)、不同的Test Case之間一定要保持完全的獨立性,不能有任何的關聯。
(4)、我們要掌握好測試方法的順序,不能依賴於測試方法自己的執行順序。
dome:
public class TestMyNumber extends TestCase {
private MyNumber myNumber;
public TestMyNumber(String name) {
super(name);
}
// 在每個測試方法執行 [之前] 都會被調用
@Override
public void setUp() throws Exception {
// System.out.println(歡迎使用Junit進行單元測試…);
myNumber = new MyNumber();
}
// 在每個測試方法執行 [之後] 都會被調用
@Override
public void tearDown() throws Exception {
// System.out.println(Junit單元測試結束…);
}
public void testDivideByZero() {
Throwable te = null;
try {
myNumber.divide(6, 0);
Assert.fail(測試失敗);
} catch (Exception e) {
e.printStackTrace();
te = e;
}
Assert.assertEquals(Exception.class, te.getClass());
Assert.assertEquals(除數不能為 0 , te.getMessage());
}
}
2、junit4.x版本
(1)、使用junit4.x版本進行單元測試時,不用測試類繼承TestCase父類,因為,junit4.x全面引入了Annotation來執行我們編寫的測試。
(2)、junit4.x版本,引用了註解的方式,進行單元測試;
(3)、junit4.x版本我們常用的註解:
A、@Before 註解:與junit3.x中的setUp()方法功能一樣,在每個測試方法之前執行;
B、@After 註解:與junit3.x中的tearDown()方法功能一樣,在每個測試方法之後執行;
C、@BeforeClass 註解:在所有方法執行之前執行;
D、@AfterClass 註解:在所有方法執行之後執行;
E、@Test(timeout = xxx) 註解:設置當前測試方法在一定時間內運行完,否則返回錯誤;
F、@Test(expected = Exception.class) 註解:設置被測試的方法是否有異常拋出。拋出異常類型為:Exception.class;
G、@Ignore 註解:注釋掉一個測試方法或一個類,被注釋的方法或類,不會被執行。
dome:
package com.an.junit;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class TestMyNumber {
private MyNumber myNumber;
@BeforeClass
// 在所有方法執行之前執行
public static void globalInit() {
System.out.println(init all method...);
}
@AfterClass
// 在所有方法執行之後執行
public static void globalDestory() {
System.out.println(destory all method...);
}
@Before
// 在每個測試方法之前執行
public void setUp() {
System.out.println(start setUp method);
myNumber = new MyNumber();
}
@After
// 在每個測試方法之後執行
public void tearDown() {
System.out.println(end tearDown method);
}
@Test(timeout=600)// 設置限定測試方法的運行時間 如果超出則返回錯誤
public void testAdd() {
System.out.println(testAdd method);
int result = myNumber.add(2, 3);
assertEquals(5, result);
}
@Test
public void testSubtract() {
System.out.println(testSubtract method);
int result = myNumber.subtract(1, 2);
assertEquals(-1, result);
}
@Test
public void testMultiply() {
System.out.println(testMultiply method);
int result = myNumber.multiply(2, 3);
assertEquals(6, result);
}
@Test
public void testDivide() {
System.out.println(testDivide method);
int result = 0;
try {
result = myNumber.divide(6, 2);
} catch (Exception e) {
fail();
}
assertEquals(3, result);
}
@Test(expected = Exception.class)
public void testDivide2() throws Exception {
System.out.println(testDivide2 method);
myNumber.divide(6, 0);
fail(test Error);
}
public static void main(String[] args) {
}
}
有興趣的朋友可以下下來仔細研究下,也可以到安安DIY創作室博客一起討論一下。
JUnit-addons
對JUnit的一些補充,比如設置、獲取被測試對象的私有屬性的值,調用被測試對象的私有方法等。
常用類:junitx.util.PrivateAccessor
Spring 測試框架
可以測試基於Spring的應用,通過配置文件和註解自動組裝需要的單元測試對象。
提供了一些常用的J2EE Mock對象,比如HttpSession的Mock類等。
可以支持資料庫自動回滾,以防止對資料庫的單元測試(插入,刪除等)不可重復執行,防止修改資料庫狀態等。
DJUnit
通過代碼自動產生Mock對象,省去了自己手動編寫N多的Mock類。
此外,它的Eclipse插件還可以做到測試覆蓋率、分支統計。
EasyMock
功能同DJUnit,也是通過編程自動Mock掉與測試對象無關的類,方法。