1、測試工做安排java
數據庫模塊測試:50九、530android
PHP模塊測試:502數據庫
界面模塊測試:51七、530(這塊主要是手工測試)app
模塊整合測試:530框架
2、測試工具的運用與選擇ide
Android studio 有自帶的單元測試 instrumentation,咱們能夠直接使用;工具
3、測試用例文檔單元測試
咱們此次是在開發一個教師報課系統,就在這個教師報課系統作測試工做;測試
如今咱們先來熟悉一下instrumentation;spa
instrumentation是單個activity測試,主要用於白盒測試和UI測試;
新建一個測試類繼承InstrumentationTestCase類,測試類以Test爲後綴;
接下來就能夠建測試方法了,測試方法以test爲前綴,以下圖:
測試方法testAdd中assertEquals()中第一個參數是預期值,第二個參數是實際值,顯然5不會等於2+5,結果會報錯;運行該類後結果以下圖:
咱們也能夠重寫setUp()、tearDown()方法,setUp()主要用來初始設置,如啓動一個Activity,初始化資源等,tearDown()用於垃圾處理和資源回收;
1.數據庫模塊測試
上面咱們簡單演示了測試類的用法,如今開始測試教師報課系統的數據庫操做,咱們的數據庫操做採用afinal框架,實現數據庫、表建立,以及增刪改查操做,相關代碼以下:
package com.ftd.schaepher.coursemanagement.db; import android.content.Context; import com.ftd.schaepher.coursemanagement.pojo.TableCourseMultiline; import com.ftd.schaepher.coursemanagement.pojo.TableTaskInfo; import com.ftd.schaepher.coursemanagement.pojo.TableUserDepartmentHead; import com.ftd.schaepher.coursemanagement.pojo.TableUserTeacher; import com.ftd.schaepher.coursemanagement.pojo.TableUserTeachingOffice; import net.tsz.afinal.FinalDb; import java.util.List; public class CourseDBHelper { public FinalDb db; public CourseDBHelper(Context context) { db = FinalDb.create(context, "teacherclass.db"); } public CourseDBHelper() { } // 建立數據庫 public void createDataBase(Context context) { db = FinalDb.create(context, "teacherclass.db"); } public void createTableTeacher() { TableUserTeacher teacher = new TableUserTeacher(); db.save(teacher); } public void createTableTeachingDepartment() { TableUserTeachingOffice tableTeachingDepartmentr = new TableUserTeachingOffice(); db.save(tableTeachingDepartmentr); } public void createTableSystemLeader() { TableUserDepartmentHead tableUserDepartmentHead = new TableUserDepartmentHead(); db.save(tableUserDepartmentHead); } public void createTableClass() { TableCourseMultiline tableCourseMultiline = new TableCourseMultiline(); db.save(tableCourseMultiline); } public void createTableTask() { TableTaskInfo tableTaskInfo = new TableTaskInfo(); db.save(tableTaskInfo); } // 插入數據 public void insert(Object entity) { db.save(entity); } // 刪除數據,class爲id爲表的主鍵 public void delete(Class<?> clazz, String id) { db.deleteById(clazz, id); } // 改 public void update(Object entity) { db.update(entity); } // 查 public Object findById(String id, Class<?> clazz) { return db.findById(id, clazz); } public List findall(Class<?> clazz) { return db.findAll(clazz); } public FinalDb getDb() { return db; } }
接下來咱們新建類CourseDBHelper的測試類CourseDBHelperTest,開始測試工做:
(1) 類TestCourseDBHelper繼承於類InstrumentationTestCase,咱們首先重寫setUp()方法,在裏面完成數據庫建表操做等初始化操做,接下來開始寫測試方法testInsert(),插入一個教師信息,驗證插入操做,代碼以下:
package com.ftd.schaepher.coursemanagement.db; import android.content.Context; import android.test.InstrumentationTestCase; import com.ftd.schaepher.coursemanagement.pojo.TableUserTeacher; /** * Created by Administrator on 2015/11/13. */ public class CourseDBHelperTest extends InstrumentationTestCase { CourseDBHelper dbHelper; Context context; @Override public void setUp() throws Exception { super.setUp(); context= getInstrumentation().getTargetContext(); dbHelper = new CourseDBHelper(); dbHelper.createDataBase(context); dbHelper.createTableTeacher(); } public void testInsert()throws Exception{ //建一個測試數據 TableUserTeacher teacher = new TableUserTeacher(); teacher.setWorkNumber("3443"); teacher.setName("王五"); dbHelper.insert(teacher); } }
運行這個測試類,運行結果會顯示出來,綠色表明正確,紅色表明錯誤,結果以下,說明咱們已經插入成功了;
(2)接下來咱們新建測試方法testFindById(),看是否能根據教師號查詢教師,咱們前面已經插入了一個工號爲「3443」的教師,如今就來測試這個工號;
因爲咱們代碼還不完善,重複插入會報錯,所以咱們先把前面的testInsert()註釋掉,代碼以下
package com.ftd.schaepher.coursemanagement.db; import android.content.Context; import android.test.InstrumentationTestCase; import com.ftd.schaepher.coursemanagement.pojo.TableUserTeacher; /** * Created by Administrator on 2015/11/13. */ public class CourseDBHelperTest extends InstrumentationTestCase { CourseDBHelper dbHelper; Context context; @Override public void setUp() throws Exception { super.setUp(); context= getInstrumentation().getTargetContext(); dbHelper = new CourseDBHelper(); dbHelper.createDataBase(context); dbHelper.createTableTeacher(); } /* public void testInsert()throws Exception{ //建一個測試數據 TableUserTeacher teacher = new TableUserTeacher(); teacher.setWorkNumber("3443"); teacher.setName("王五"); dbHelper.insert(teacher); } */ public void testFindById(){ TableUserTeacher teacher2; String number = "3443"; teacher2 =(TableUserTeacher)dbHelper.findById(number,TableUserTeacher.class); assertEquals("張三", teacher2.getName().toString()); } }
咱們已經知道工號爲「3443」的教師名爲「王五」,咱們故意寫成「張三」,看結果會如何;
果真運行後報錯,並給出錯誤提示:「expected:<[張三]> but was :<[王五]>」,說明查詢結果就是「王五」;
2.PHP模塊測試
待補充。。。。
3.界面模塊測試
這塊主要是手工解決的,即在實際操做中發現bug才加以解決,通過測試,界面大致符合要求;
5.模塊整合測試
模塊整合測試主要是經過實際操做來實現,通過測試,這個app已經能實現數據基本的增刪改查,以及綁定數據到界面上;
固然,在測試中也出現了一些bug,好比說同一數據屢次插入,程序就會崩潰;
這些bug咱們會在這幾天解決;
4、測試體會
測試工做是很是重要的,好比在前期作好單元測試工做,就能減小後期查找bug工做量,其實花在單元測試的時間會遠遠小於後期查找並解決bug的時間;固然,養成作好單元測試工做的習慣也是很困難的,在這方面咱們小組就作的很差,咱們常常沒有寫測試類,而是在實際運行中解決出現的bug,多是咱們的項目經驗太少,還沒法深入體會到測試工做的重要性。
五,項目測試評述
整體而言,咱們已經完成了教師報課系統的基本功能,在測試中還未解決的bug咱們會在這幾天內解決的。