軟件工程(2018)第三次做業

1、題目

一、題目背景

  問題: 給定n個整數(可能爲負數)組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。當所給的整數均爲負數時定義子段和爲0,依此定義,所求的最優值爲: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n 例如,當(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)時,最大子段和爲20。c++

二、題目要求

  從語句覆蓋、斷定覆蓋、條件覆蓋、斷定/條件覆蓋、條件組合覆蓋五個覆蓋標準中任選擇一個標準測試用例,並用自動測試工具對程序進行測試,並將測試結果和自動測試分析結果截圖附到博客中。git


2、解題

一、解題思路

  這次做業編程我採用了c++編程,首先定義一個變量S來記錄當前子段的和,定義變量Maxi和變量Maxj來記錄和最大的子段的下標範圍,定義變量Sum記錄最大子段和,子段從第一個數開始,判斷是否爲負數,如果負數跳過,若不是負數,再比較S與Sum的大小,若S大於Sum,則將S的值賦給Sum,循環遍歷所有整數,求得最大子段和。流程圖以下: 編程

二、測試

  (1)語句覆蓋、斷定覆蓋、條件覆蓋、斷定/條件覆蓋、條件組合覆蓋和路徑覆蓋發現錯誤的能力呈由弱至強的變化。語句覆蓋每條語句至少執行一次。斷定覆蓋每一個斷定的每一個分支至少執行一次。條件覆蓋每一個斷定的每一個條件應取到各類可能的值。斷定/條件覆蓋同時知足斷定覆蓋條件覆蓋。條件組合覆蓋每一個斷定中各條件的每一種組合至少出現一次。路徑覆蓋使程序中每一條可能的路徑至少執行一次。   (2)本次做業測試用例採用斷定/條件覆蓋,因爲對Java測試工具使用不熟練,多以本次測試的測試工具選擇用codeblocks配置Googletest進行單元測試,測試結果以下: 由上圖能夠看出我用了三個測試用例,知足斷定/條件覆蓋,而且測試結果徹底正確。編程語言


3、小結

  本次做業題目較簡單,可是因爲我對Java語言的學習不到位,對Java測試工具的使用不熟練,因此選擇用C++語言進行編程,而且使用codeblocks測試工具進行測試,因此深深感覺到多掌握一門編程語言的重要性。工具

Codig代碼連接:https://coding.net/u/yunshuinu/p/123/git/blob/master/1.cpp?public=true單元測試

相關文章
相關標籤/搜索