JP2023000907A - ソースコード修正支援装置及びソースコード修正支援方法 - Google Patents

ソースコード修正支援装置及びソースコード修正支援方法 Download PDF

Info

Publication number
JP2023000907A
JP2023000907A JP2021101977A JP2021101977A JP2023000907A JP 2023000907 A JP2023000907 A JP 2023000907A JP 2021101977 A JP2021101977 A JP 2021101977A JP 2021101977 A JP2021101977 A JP 2021101977A JP 2023000907 A JP2023000907 A JP 2023000907A
Authority
JP
Japan
Prior art keywords
source code
code
template
evaluation
evaluator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021101977A
Other languages
English (en)
Inventor
直人 佐藤
Naoto Sato
ティタン フエン ファン
Huyen Thi Thanh Phan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2021101977A priority Critical patent/JP2023000907A/ja
Priority to US17/833,518 priority patent/US11960862B2/en
Publication of JP2023000907A publication Critical patent/JP2023000907A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】修正後のソースコードを適宜に評価し、修正の漏れや誤り等を効率良く回避するソースコード修正支援装置及び方法を提供する。【解決手段】ソースコード修正支援装置が、ネットワークを介して開発者端末及び評価者端と通信可能に接続しているソースコード修正支援システムにおいて、ソースコード修正支援装置100は、更新済みソースコードを保持する外部記憶装置101と、更新済みソースコードの評価コードひな型として、入力条件の成否の各ケースに関する条件分岐文を含むひな型を生成し、評価者端末に対し、ひな型に基づく評価コードの作成依頼を通知し、評価者による更新済みソースコードへのアクセスを制御し、ひな型における条件分岐文に対し評価者による編集を受け付け、編集を経た評価コードの全制御パスを実行する入力値のリストを生成し、当該入力値を入力に評価コードを自動実行する評価コードドライバを生成する演算装置104と、を含む。【選択図】図2

Description

本発明は、ソースコード修正支援装置及びソースコード修正支援方法に関するものである。
ソフトウェアの不具合を検出するための手段としてテストが一般的である。しかし、入力パラメータの数が多く、各パラメータの取り得る値の範囲が広いソフトウェアの場合、あらゆる入力値の組合せを網羅的にテストすることは困難である。これは、いわゆる組合せ爆発と呼ばれる状況に該当する。
そのため、稀な条件下で発生する不具合をソフトウェアに作り込んでしまった場合、その稼働前のテストでは検出できず、本番稼働後に不具合が発現することがある。本番稼働後に不具合が発生すると、原因分析の手がかりとなる情報を十分に取得できないケースが多い。その場合、不具合発生条件の特定に時間がかかることがある。
その結果、不具合の修正が遅れ、長期間のシステム停止や、大規模なリコールに繋がりうるという問題がある。
こうした問題に対応する従来技術としては、例えば、プログラムの修正前のテスト資産を利用して、プログラム修正後のテストのコストを削減する技術(特許文献1参照)などが提案されている。
この技術は、不具合の発生をログから検知した場合に、その不具合が発生する入力条件とその際の実行パスを提示する方法を示している。これにより、ソフトウェア開発者は、不具合が発生した場所と条件を認識して、修正方針の検討が可能となる。また、そのことで、不具合の修正にかかる時間を短縮可能とされている。
また他にも、誤判定の疑いがあるテスト結果の検出効率の向上を図る情報処理装置(特許文献2参照)なども提案されている。
この情報処理装置は、第1のプログラムおよび前記第1のプログラムが変更された第2のプログラムから共に期待値が返される入力値を前記第1のプログラムに与えた場合の第1の実行経路に関する条件式の系列を示すパスコンディションと、前記第1の実行経路に関する返値を示す数式と、を含む第1のシンボリック実行結果を取得する第1の取得部と、前記入力値を前記第2のプログラムに与えた場合の第2の実行経路に関する条件式の系列を示すパスコンディションと、前記第2の実行経路に関する返値を示す数式と、を含む第2のシンボリック実行結果を取得する第2の取得部と、前記第1の取得部によって取得された第1のシンボリック実行結果内のパスコンディションに、前記第2の取得部によって取得された第2のシンボリック実行結果内のパスコンディションが包含されているか否か、または、前記第1および第2のシンボリック実行結果内の数式が一致するか否か、に基づいて、前記入力値による前記第2のプログラムのテスト結果に関する信頼性の高さの指標になる信頼度を決定する決定部と、前記決定部によって決定された信頼度を出力する出力部と、有するものである。
また、Webアプリケーションのテスト工数を削減することのできるテストデータ生成装置、テストデータ生成方法及びプログラムを提供する技術(特許文献3参照)なども提案されている。
この技術は、Webアプリケーションが提供する画面遷移に関するテストのテストデータを生成するテストデータ生成装置であって、前記画面遷移のうち、1以上の画面遷移の選択を受け付ける選択受付手段と、前記Webアプリケーションのフレームワークで規定又は定義されている制約の記述仕様を用いて、前記Webアプリケーションのソースコードを解析し、該ソースコードから制約を抽出する抽出手段と、前記選択された画面遷移の遷移元の画面に含まれる入力フォームの前記制約を用いて、同値分割及び境界値分析のテスト観点を満たす複数のテストデータを生成する生成手段と、
を有するテストデータ生成装置に関するものである。
特開2014-21686号公報 特開2013-196350号公報 特開2020-67859号公報
上記先行技術を適用することで、本番稼働中に発生した不具合の特定を効率的に行うことができるようになる。しかし、不具合の修正は人手で行うため、修正の間違いや漏れ、またはリグレッションの可能性がある。
これらの修正誤りを防止するためには、修正後のソフトウェアをテストすることが重要である。ところが、稼働前のテストでは当該不具合を検出できなかったことを考えると、既存のテストコードは有効ではない。
そのため、新たなテストコードを作成する必要がある。一方、ソースコードの修正を行った開発者がテストコード作成も担当する場合、ソースコードと同様の誤りをテストコードに埋め込む可能性が高い。
そのため通常は、評価者によるソースコードレビューを行う。しかし、評価者は既に誤りが埋め込まれたソースコードをレビューするため、開発者と同じ思考に陥り、誤りを見逃す可能性がある。
特にソフトウェアの仕様が複雑あるいは曖昧で、仕様を実装する方法が複数考えられる場合、開発者は、ソースコードの実行速度向上や可読性向上などの観点から、不具合に直接関係する箇所だけでなく、ソースコード全体の構造を修正することがある。
その結果、修正後のソースコードが、「不具合が発生する入力条件」(特許文献1の技術により特定されうる)とは異なる条件で分岐するような制御フローで構成されるケースがある。すると評価者は、上記「不具合が発生する入力条件」に関わる処理を過不足なく修正できているか正しく確認できず、誤りを見逃す可能性がある。
また従来は、開発者がテストコードを作成した後、評価者によるコードレビューを行うため、ソースコードの修正が完了するまで時間がかかる問題もある。
そこで本発明の目的は、修正後のソースコードを適宜に評価し、修正の漏れや誤り等を効率良く回避可能とする技術を提供することにある。
上記課題を解決する本発明のソースコード修正支援装置は、不具合が発生する入力条件に基づき開発者によって更新された更新済みソースコードを保持する記憶装置と、前記更新済みソースコードを評価するための評価コードのひな型として、前記入力条件の成否の各ケースに関する条件分岐文を含むひな型を生成する処理と、所定の評価者の端末に対し、前記ひな型に基づく前記評価コードの作成依頼を通知する処理と、前記作成依頼に応じた前記評価者による、前記更新済みソースコードへのアクセスを制御する処理と、前記ひな型における前記条件分岐文の本文に対して、前記評価者による編集を受け付ける処理と、前記編集を経た前記評価コードの全ての制御パスを実行する入力値のリストを生成し、当該入力値を入力に前記評価コードを自動実行する評価コードドライバを生成する処理を実行する演算装置と、を含むことを特徴とする。
また、本発明のソースコード修正支援方法は、情報処理装置が、不具合が発生する入力条件に基づき開発者によって更新された更新済みソースコードを保持する記憶装置を備えて、前記更新済みソースコードを評価するための評価コードのひな型として、前記入力条件の成否の各ケースに関する条件分岐文を含むひな型を生成する処理と、所定の評価者の端末に対し、前記ひな型に基づく前記評価コードの作成依頼を通知する処理と、前記作成依頼に応じた前記評価者による、前記更新済みソースコードへのアクセスを制御する処理と、前記ひな型における前記条件分岐文の本文に対して、前記評価者による編集を受け付ける処理と、前記編集を経た前記評価コードの全ての制御パスを実行する入力値のリストを生成し、当該入力値を入力に前記評価コードを自動実行する評価コードドライバを生成する処理と、を実行することを特徴とする。
本発明によれば、修正後のソースコードを適宜に評価し、修正の漏れや誤り等を効率良く回避可能となる。
本実施形態のソースコード修正支援装置を含むネットワーク構成図である。 本実施形態におけるソースコード修正支援装置のハードウェア構成例を示す図である。 本実施形態におけるソースコード修正支援装置のブロック構成例を示す図である。 本実施形態におけるソースコード修正・評価の流れを示す概念図である。 本実施形態におけるソースコード修正支援方法のフロー例を示す図である。 本実施形態における評価者アドレスの構成例を示す図である。 本実施形態におけるソースコード修正支援方法のフロー例を示す図である。 本実施形態における不具合発生したソースコードの例を示す図である。 本実施形態における更新済みソースコードの例を示す図である。 本実施形態における不具合が発生する入力条件の例を示す図である。 本実施形態における更新前後のソースコードの概念例を示す図である。 本実施形態における評価コードひな型の意義を示す図である。 本実施形態における評価コードひな型の例を示す図である。 本実施形態のソースコード修正支援方法のフロー例を示す図である。 本実施形態における評価コードドライバの例を示す図である。 本実施形態のソースコード修正支援方法のフロー例を示す図である。 本実施形態における評価コードひな型への追記例を示す図である。 本実施形態における分岐条件結合レビューの例を示す図である。 本実施形態における分岐条件結合レビューの例を示す図である。 本実施形態における分岐条件結合レビューの例を示す図である。
<システム構成>
以下に本発明の実施形態について図面を用いて詳細に説明する。図1は、本実施形態のソースコード修正支援装置100を含むネットワーク構成例を示す図である。図1に示すソースコード修正支援装置100は、修正後のソースコードを適宜に評価し、修正の漏れや誤り等を効率良く回避可能とするコンピュータである。
本実施形態のソースコード修正支援装置100は、図1で示すように、ネットワーク1を介して、開発者端末200及び評価者端300と通信可能に接続されている。よって、これらを総称して、ソースコード修正支援システム10としてもよい。
なお、開発者端末200は、ソフトウェアの開発者が操作する端末である。具体的には、スマートフォン、タブレット端末、パーソナルコンピュータなどを想定できる。この開発者は、不具合が発生する入力条件に関して修正するとともに、当該修正箇所以外についてもソースコードを更新する者である。開発者端末200で更新されたソースコードすなわち更新済みソースコードは、ネットワーク1を介してソースコード修正支援装置100に提供される。
また、評価者端末300は、本実施形態のソースコード修正支援装置100からの依頼に応じた評価者が操作する端末である。この依頼は、上述の更新済みソースコードを評価するための評価コードのひな型に基づく、評価コードの作成依頼である。なお、評価者は、上述の開発者とは異なる人物である。また、評価者は、評価者端末300を操作し、上述のひな型における条件分岐文の本文に対して編集を実行する。評価者端末300は、こうした評価者による編集内容についてソースコード修正支援装置100に提供する。
<ハードウェア構成>
また、本実施形態のソースコード修正支援装置100のハードウェア構成は、図2に以下の如くとなる。すなわちソースコード修正支援装置100は、外部記憶装置101、メモリ103、CPU104、入力装置105、表示装置106、通信装置107、及び外部媒体入出力装置108、を備える。
このうち外部記憶装置101は、SSD(Solid State Drive)やハードディスクドライブなど適宜な不揮発性記憶素子で構成される。
また、メモリ103は、RAMなど揮発性記憶素子で構成される。
また、CPU104は、外部記憶装置101に保持されるプログラム102をメモリ103に読み出すなどして実行し装置自体の統括制御を行なうとともに各種判定、演算及び制御処理を行なう演算装置である。
また、入力装置105は、ユーザからのキー入力や音声入力を受け付けるキーボードやマウス、マイクなどを想定する。
また、表示装置106は、CPU104による処理データの表示を行うディスプレイを想定する。
また、通信装置107は、ネットワーク1と接続して開発者端末200及び評価者端末300との通信処理を担うネットワークインターフェイスカード等を想定する。
また、外部媒体入出力装置108は、DVDやUSBメモリなどの外部記憶媒体とデータの授受可能に接続するインターフェイスを想定する。
また、外部記憶装置101には、本実施形態のソースコード修正支援装置として必要な機能を実装する為のプログラム102に加えて、評価者アドレス125が少なくとも記憶されている(後述)。また、外部記憶装置104ないしメモリ103は、不具合発生条件126、更新済みソースコード127、更新前ソースコード128、及び評価コード129、を少なくとも処理に必要な時間に応じて一時的に保持する。
<機能構成>
続いて、本実施形態のソースコード修正支援装置100の備える構成について説明する。図3は、本実施形態におけるソースコード修正支援装置100のブロック構成例を示す図である。また、図4は、本実施形態におけるソースコード修正・評価の流れを示す概念図である。
本実施形態のソースコード修正支援装置100は、評価リクエスト機能110、更新済みソースコードアクセス制御機能111、評価コードひな型生成機能112、評価コード編集機能113、評価コード編集支援機能114、及び評価コードドライバ生成機能115の各機能を備える。これら各機能は、CPU104がプログラム102を実行することで実装される。
また、ソースコード修正支援装置100は、上述の各機能における処理に伴い、評価者アドレス125、不具合発生入力条件126、更新済みソースコード127、更新前ソースコード128、及び評価コード129の各データを、外部記憶装置101ないしメモリ103で保持するものとする。
このうち評価リクエスト機能110は、評価者アドレス125に基づき特定した評価者の評価者端末300に対し、ひな型に基づく評価コード129の作成依頼を通知する。このひな型は、更新済みソースコード127を評価するための評価コードのひな型である。また、更新済みソースコード127は、不具合が発生する入力条件126に基づき開発者によって修正、更新されたソースコードである。
なお、更新済みソースコード127は、不具合ソースコードすなわち更新前ソースコードに関して発生した不具合発生箇所とその入力条件に基づいて、開発者が不具合解消のための修正やそれに伴うソースコード全体の記載見直しを行った結果である。この更新済みソースコード127は、開発者端末200でからソースコード修正支援装置100に登録される。
こうしたソースコード修正支援装置100が備える機能のうち、更新済みソースコードアクセス制御機能111は、更新済みソースコード127に対してアクセス可能な者を、開発者のみに制御する。この制御は、例えば、予め保持する開発者の識別情報に基づき実行することを想定できる。
また、評価コードひな型生成機能112は、更新済みソースコード127を評価するための評価コードのひな型として、上述の入力条件126の成否の各ケースに関する条件分岐文を含むひな型を生成する。
また、評価コード編集機能113は、上述のひな型における条件分岐文の本文に対して、評価者による編集を受け付ける。
また、評価コード編集支援機能114は、上述の評価者による、更新済みのソースコード127に関して得られるパス制約条件を構成する節、及び当該節を構成する変数の境界値に基づく条件分岐文を踏まえた、変数の境界値に基づく特定の条件分岐文が不要との判断に対応し、当該条件分岐文を結合する入力を受け付けて、当該条件分岐文を結合した結果を画面表示する。また、評価コード編集支援機能114は、この画面表示において、条件分岐文の本文に対して、評価者による編集を受け付け、当該編集の結果を上述のひな型に反映する。
また、評価コードドライバ生成機能115は、上述の評価者による編集を経た評価コードの全ての制御パスを実行する入力値のリストを生成し、当該入力値を入力に評価コードを自動実行する評価コードドライバを生成する。また、評価コードドライバ生成機能115は、上述のひな型に関して作成した条件分岐文の分岐条件の充足可能性を判定し、充足不能の場合、当該分岐条件を削除する。
<フロー例:評価リクエスト機能>
以下、本実施形態におけるソースコード修正支援方法の実際手順について図に基づき説明する。以下で説明するソースコード修正支援方法に対応する各種動作は、ソースコード修正支援装置100がメモリ等に読み出して実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
図5は、本実施形態における修正支援方法のフロー例を示す図である。この場合、修正支援装置100の評価リクエスト機能110は、開発者端末200からの更新済みソースコード127の送信を受け付けて、これを検知する(s1)。
続いて、上述の評価リクエスト機能110は、更新済みソースコード127と対応する更新前ソースコード128、及び不具合発生入力条件126を取得する(s2)。
この処理のため、ソースコード修正支援装置100は、外部記憶装置101において、更新済みソースコード127と送信前ソースコード128を対応付けて保持しているものとする。また、不具合発生入力条件126は、後述する記号実行により得られるものとする。
続いて、上述の評価リクエスト機能110は、外部記憶装置101から評価者アドレス125を取得する(s3)。なお、上述の評価者アドレス125は、図6で示すように、評価者を一意に特定するIDをキーとして、当該評価者のアドレスを紐付けレコードの集合体となっている。なお、この場合のアドレスは、評価者端末300に付与されたメールアドレスやIPアドレスを想定する。
また、上述の評価リクエスト機能110は、評価コードひな型生成機能112を実行することで、評価コードひな型を取得する(s4)。この評価コードひな型生成機能112における処理の詳細は後述する。
また、上述の評価リクエスト機能110は、評価者端末300に対して、更新前ソースコード128、不具合発生入力条件126、およびs4で得た評価コードひな型を送信し(s5)、処理を終了する。
<フロー例:評価コードひな型生成機能>
続いて、上述の評価コードひな型生成機能112における処理フローについて、図7~図13に基づき説明する。この場合、ソースコード修正支援装置100の評価コードひな
型生成機能112は、不具合発生入力条件126の成否に基づく条件分岐文を作成する(s10)。
また、評価コードひな型生成機能112は、不具合発生入力条件126、更新前ソースコード128の分岐条件、または更新済みソースコード127の分岐条件に含まれる変数の境界条件を取得する(s11)。
なお、上述の更新前ソースコード128の具体的な例を図8にて示す。この更新前ソースコード128は、不具合が発生したソースコードである。図8で示す例では、x=0、y=0の時は、「high」になるべきところ、「low」になってしまうという不具合(仕様不一致)が発生しているソースコードとなっている。
また、更新済みソースコード127の具体的な例を図9に示す。この更新済みソースコード127は、開発者が上述の不具合に関して該当箇所を修正し、また可読性などを踏まえた全体として見直しをかけて更新したソースコードである。ここでは、x==0 an
d y==0の時の誤りは開発者により修正されたが、(x<0 and y==0)
or (x>0 and y==0)の時に、いわゆるゼロ割が発生する。つまり、新たな不具合が内在した状態となっている。
この場合、評価コードひな型生成機能112は、この更新済みソースコード127に関して記号実行を実施し、不具合が発生する入力条件すなわち不具合発生入力条件126(図10参照)を取得する。
図8~図10で示す更新前後のソースコードそれぞれにおける不具合について、図11にてxy座標面での領域別に示した。更新前ソースコード128における不具合発生入力条件126は、既に述べたように、x=0、y=0のケースであり、原点座標上の点がこの不具合に対応する。一方、更新済みソースコード127における不具合発生入力条件126は、(x<0 and y==0) or (x>0 and y==0)のケースで
あり、y軸線上におけるx=0以外の線分領域に対応する。
また、評価コードひな型生成の意義について、図12に示す。図12で示すように、更新前ソースコード128を記号実行して得た不具合発生入力条件126が、「パス制約α」、「パス制約β」、「パス制約γ」、だったとする。
この不具合発生入力条件126を解消すべく、開発者がソースコードの修正や更新を行った結果、この更新後のソースコード上では不具合発生入力条件126の境界が埋没する。そのため、更新済みソースコード127のみをレビューすると、開発者による修正や更新の誤りを見逃す可能性が高い。そこで、評価コードひな型によって、そのような修正誤りの見逃しを低減することに意義がある。
また、評価コードひな型生成機能112は、不具合発生入力条件126を構成する任意の2変数について、それら2変数の関係式を作成する(s12)。図13に示す評価コードひな型の例では、変数x、変数yの関係(x==y)について、分岐条件に採用している。
なお、図13にて示す評価コードひな型の例では、こうした2変数の関係式の具体例の他、不具合発生入力条件の成否それぞれにケースに関して、不具合発生入力条件126での分岐を規定する分岐条件、変数xに関する境界条件で規定した分岐条件、変数yに関する境界条件で規定した分岐条件、更新前ソースコード128の境界条件で既定した分岐条件、などについても生成し、記述した状態を示している。
続いて、評価コードひな型生成機能112は、上述のs10で作成した条件分岐文のうち、上述の関係式を未作成の分岐条件があるか判定する(s13)。
上述の判定の結果、関係式未作成の分岐条件がない場合(s13:No)、評価コードひな型生成機能112は、処理をs18に遷移させる。
一方、上述の判定の結果、関係式未作成の分岐条件がある場合(s13:Yes)、評価コードひな型生成機能112は、上述の境界条件および関係式を用いて任意の分岐条件を作成する(s14)。
続いて、評価コードひな型生成機能112は、作成した分岐条件は充足可能か判定する(s15)。この判定は既知のソルバーを用いて実施すればよい。
また、評価コードひな型生成機能112は、上述の判定の結果、作成した分岐条件は充足可能でない場合(s15:No)、充足不能な分岐条件を削除し(s16)、処理をs17に遷移させる。
一方、上述の判定の結果、作成した分岐条件は充足可能である場合(s15:Yes)、
評価コードひな型生成機能112は、上述の不具合発生入力条件126の成否に基づく条件分岐文の本文に、s10で作成した分岐条件を用いた条件分岐文を作成し(s17)、処理をs13に戻す。
また、評価コードひな型生成機能112は、上述の不具合発生入力条件126が成立する条件分岐文の本文に、更新前ソースコード128の出力結果を返す手続きを記入し(s18)、処理を終了する。
<フロー例:評価コードドライバ生成機能>
続いて、上述の評価コードドライバ生成機能115における処理フローについて、図14及び図15に基づき説明する。この場合、ソースコード修正支援装置100の評価コードドライバ生成機能115は、評価コードに対して記号実行を行う(s20)。これにより、評価コードドライバ生成機能115は全てのパスを取得し、そのパスを通るテスト入力値を作成する(図15)。
また、評価コードドライバ生成機能115は、上述の記号実行(図15:「symbolicExec(spec)」)によって得られたパス制約条件に対して、充足可能性チェックを行うことで充足解を求める(s21)。
続いて、評価コードドライバ生成機能115は、s21の結果、充足解が得られたか判定する(s22)。
上述の判定の結果、充足解が得られなかった場合(s22:No)評価コードドライバ生成機能115は、処理をs24に遷移させる。
一方、上述の判定の結果、充足解が得られた場合(s22:Yes)、評価コードドライバ生成機能115は、上述の充足解をテスト入力値(図15:m)として与え、評価コ
ード(図15:「spec」)をオラクルに、更新済みソースコード127(図15:main_updated(m[x],m[y]))のテストを実行するソースコードを作成し(s23)、処理を終了
する。
続いて、評価コードドライバ生成機能115は、充足解のない実行パスを、評価コードから削除し(s24)、処理を終了する。
<フロー例:評価コード編集支援機能>
続いて、上述の評価コード編集支援機能114における処理フローについて、図16~図20に基づき説明する。この場合、評価コード編集支援機能114は、評価コードの表示画面において、評価者端末300から、複数の分岐条件の指定を受け付ける(s30)。図18で例示するビューでは、「if y==0」、「else」について指定を受け、また、「結合」ボタンが押下されている。
また、評価コード編集支援機能114は、上述の指定および結合指示に応じて、指定された分岐条件を論理和で結合した式の充足可能性を、既知のソルバーによってチェックする(s31)。
続いて、評価コード編集支援機能114は、上述の充足可能性のチェックの結果、結合した式が充足可能ではない場合(s32:No)、評価コード編集支援機能114は、処理を終了する。
一方、上述の判定の結果、充足可能である場合(s32:Yes)、評価コード編集支援機能114は、評価コードの表示画面において、指定された分岐条件を結合した条件分岐文を表示する(s33)。図19にて例示するビューでは、上述のs30で指定された分岐条件をマージして、これを評価者端末300にて表示させている。
続いて、評価コード編集支援機能114は、上記条件分岐文の本文に対して、評価者からの、期待する出力値の入力を受け付ける(s34)。ここで受け付けた出力値は、例えば、「return“x is high”」であるとする。
また、評価コード編集支援機能114は、評価コードにおいて、上記期待する出力値を、結合対象となった条件分岐文の本文に追記し(s35)、処理を終了する。図19にて例示するビューでは、上述のマージされた条件分岐文に、評価者端末300から入力された出力値(期待するもの)である、「return“x is high”」を追記している。なお、図20で示すように、評価コード編集支援機能114は、上述のマージはあくまでビュー上でのことで、実コード上ではマージをしない運用とする。
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
こうした本実施形態によれば、開発者とは別のユーザが、先入観を持たずに修正後のソースコードを評価するため、修正誤りを見逃す可能性が低くなる。また、不具合が発生する入力条件に関して、その論理境界および数値境界を漏れなく評価できるため、修正漏れ、修正間違い、リグレッション(以降、まとめて修正誤りと呼ぶ)を見逃す可能性が低くなる。さらには、従来はテストコード作成とコードレビューの2ステップで行っていた評価作業を、評価コード作成の1ステップに短縮できるため、ソースコード修正にかかる時間を短縮できる。
すなわち、修正後のソースコードを適宜に評価し、修正の漏れや誤り等を効率良く回避可能となる。
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態のソースコード修正支援装置において、前記演算装置は、前記ひな型の生成に際し、前記入力条件が成立しない場合の前記条件分岐文の本文において、更新前のソースコードの出力結果と前記更新済みのソースコードの出力結果が一致するかを評価する手続きを記述するものである、としてもよい。
これによれば、更新前後でのソースコード間の整合性を出力値から効率良く検証可能となる。ひいては、修正後のソースコードを適宜に評価し、修正の漏れや誤り等をより効率良く回避可能となる。
また、本実施形態のソースコード修正支援装置において、前記演算装置は、前記ひな型の生成に際し、前記入力条件の成否の各ケースについて、更新前のソースコードに対して記号実行を行うことで得られるパス制約条件を構成する節、及び当該節を構成する変数の境界値に基づく条件分岐文を記述するものである、としてもよい。
これによれば、更新前の、例えば不具合発生条件が成立しない場合も、不具合発生条件の境界条件での条件分岐を記述し、リグレッションテストを不具合発生の境界値で行うことが可能となる。ひいては、修正後のソースコードを適宜に評価し、修正の漏れや誤り等をより効率良く回避可能となる。
また、本実施形態のソースコード修正支援装置において、前記演算装置は、前記ひな型の生成に際し、前記入力条件の成否の各ケースについて、前記更新済みのソースコードに対して記号実行を行うことで得られるパス制約条件を構成する節、及び当該節を構成する変数の境界値に基づく条件分岐文を記述するものである、としてもよい。
これによれば、不具合が発生する入力条件に関して、その論路境界及び数値境界を漏れなく評価して、修正漏れ等を的確に回避しやくなる。ひいては、修正後のソースコードを適宜に評価し、修正の漏れや誤り等をより効率良く回避可能となる。
また、本実施形態のソースコード修正支援装置において、前記演算装置は、前記ひな型の生成に際し、前記入力条件の成否の各ケースについて、前記入力条件を構成する任意の2変数間の関係式に基づく条件分岐文を記述するものである、としてもよい。
これによれば、変数間の関係についても踏まえた条件分岐を記述し、修正漏れ等を的確に回避しやくなる。ひいては、修正後のソースコードを適宜に評価し、修正の漏れや誤り等をより効率良く回避可能となる。
また、本実施形態のソースコード修正支援装置において、前記演算装置は、前記評価者による、更新済みのソースコードに関して得られるパス制約条件を構成する節、及び当該節を構成する変数の境界値に基づく条件分岐文を踏まえた、前記変数の境界値に基づく特定の条件分岐文が不要との判断に対応し、当該条件分岐文を結合する入力を受け付けて、当該条件分岐文を結合した結果を画面表示する処理と、前記画面表示において、前記条件分岐文の本文に対して、前記評価者による編集を受け付け、前記編集の結果を、前記ひな型に反映する処理を実行するものである、としてもよい。
これによれば、不要な条件分岐文の削除に関して的確かつ効率的に対処可能となる。ひいては、修正後のソースコードを適宜に評価し、修正の漏れや誤り等をより効率良く回避可能となる。
また、本実施形態のソースコード修正支援装置において、前記演算装置は、前記ひな型
に関して作成した条件分岐文の分岐条件の充足可能性を判定し、充足不能の場合、当該分岐条件を削除するものである、としてもよい。
これによれば、ひな型およびそれに基づく評価コードの品質を効率的に維持可能となる。ひいては、修正後のソースコードを適宜に評価し、修正の漏れや誤り等をより効率良く回避可能となる。
1 ネットワーク
10 ソースコード修正支援システム
100 ソースコード修正支援装置
101 外部記憶装置
102 プログラム
103 メモリ
104 CPU(演算装置)
105 入力装置
106 表示装置
107 通信装置
108 外部媒体入出力装置
110 評価リクエスト機能
111 更新済みソースコードアクセス制御機能
112 評価コードひな型生成機能
113 評価コード編集機能
114 評価コード編集支援機能
115 評価コードドライバ生成機能
125 評価者アドレス
126 不具合発生入力条件
127 更新済みソースコード
128 更新前ソースコード
129 評価コード
200 開発者端末
300 評価者端末

Claims (8)

  1. 不具合が発生する入力条件に基づき開発者によって更新された更新済みソースコードを保持する記憶装置と、
    前記更新済みソースコードを評価するための評価コードのひな型として、前記入力条件の成否の各ケースに関する条件分岐文を含むひな型を生成する処理と、所定の評価者の端末に対し、前記ひな型に基づく前記評価コードの作成依頼を通知する処理と、前記作成依頼に応じた前記評価者による、前記更新済みソースコードへのアクセスを制御する処理と、前記ひな型における前記条件分岐文の本文に対して、前記評価者による編集を受け付ける処理と、前記編集を経た前記評価コードの全ての制御パスを実行する入力値のリストを生成し、当該入力値を入力に前記評価コードを自動実行する評価コードドライバを生成する処理を実行する演算装置と、
    を含むことを特徴とするソースコード修正支援装置。
  2. 前記演算装置は、
    前記ひな型の生成に際し、前記入力条件が成立しない場合の前記条件分岐文の本文において、更新前のソースコードの出力結果と前記更新済みのソースコードの出力結果が一致するかを評価する手続きを記述するものである、
    ことを特徴とする請求項1に記載のソースコード修正支援装置。
  3. 前記演算装置は、
    前記ひな型の生成に際し、前記入力条件の成否の各ケースについて、更新前のソースコードに対して記号実行を行うことで得られるパス制約条件を構成する節、及び当該節を構成する変数の境界値に基づく条件分岐文を記述するものである、
    ことを特徴とする請求項1に記載のソースコード修正支援装置。
  4. 前記演算装置は、
    前記ひな型の生成に際し、前記入力条件の成否の各ケースについて、前記更新済みのソースコードに対して記号実行を行うことで得られるパス制約条件を構成する節、及び当該節を構成する変数の境界値に基づく条件分岐文を記述するものである、
    ことを特徴とする請求項1に記載のソースコード修正支援装置。
  5. 前記演算装置は、
    前記ひな型の生成に際し、前記入力条件の成否の各ケースについて、前記入力条件を構成する任意の2変数間の関係式に基づく条件分岐文を記述するものである、
    ことを特徴とする請求項1に記載のソースコード修正支援装置。
  6. 前記演算装置は、
    前記評価者による、更新済みのソースコードに関して得られるパス制約条件を構成する節、及び当該節を構成する変数の境界値に基づく条件分岐文を踏まえた、前記変数の境界値に基づく特定の条件分岐文が不要との判断に対応し、当該条件分岐文を結合する入力を受け付けて、当該条件分岐文を結合した結果を画面表示する処理と、
    前記画面表示において、前記条件分岐文の本文に対して、前記評価者による編集を受け付け、前記編集の結果を、前記ひな型に反映する処理を実行するものである、
    ことを特徴とする請求項1に記載のソースコード修正支援装置。
  7. 前記演算装置は、
    前記ひな型に関して作成した条件分岐文の分岐条件の充足可能性を判定し、充足不能の場合、当該分岐条件を削除するものである、
    ことを特徴とする請求項1に記載のソースコード修正支援装置。
  8. 情報処理装置が、
    不具合が発生する入力条件に基づき開発者によって更新された更新済みソースコードを保持する記憶装置を備えて、
    前記更新済みソースコードを評価するための評価コードのひな型として、前記入力条件の成否の各ケースに関する条件分岐文を含むひな型を生成する処理と、所定の評価者の端末に対し、前記ひな型に基づく前記評価コードの作成依頼を通知する処理と、前記作成依頼に応じた前記評価者による、前記更新済みソースコードへのアクセスを制御する処理と、前記ひな型における前記条件分岐文の本文に対して、前記評価者による編集を受け付ける処理と、前記編集を経た前記評価コードの全ての制御パスを実行する入力値のリストを生成し、当該入力値を入力に前記評価コードを自動実行する評価コードドライバを生成する処理と、
    を実行することを特徴とするソースコード修正支援方法。
JP2021101977A 2021-06-18 2021-06-18 ソースコード修正支援装置及びソースコード修正支援方法 Pending JP2023000907A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021101977A JP2023000907A (ja) 2021-06-18 2021-06-18 ソースコード修正支援装置及びソースコード修正支援方法
US17/833,518 US11960862B2 (en) 2021-06-18 2022-06-06 Source code correction assistance apparatus and source code correction assistance method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021101977A JP2023000907A (ja) 2021-06-18 2021-06-18 ソースコード修正支援装置及びソースコード修正支援方法

Publications (1)

Publication Number Publication Date
JP2023000907A true JP2023000907A (ja) 2023-01-04

Family

ID=84489259

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021101977A Pending JP2023000907A (ja) 2021-06-18 2021-06-18 ソースコード修正支援装置及びソースコード修正支援方法

Country Status (2)

Country Link
US (1) US11960862B2 (ja)
JP (1) JP2023000907A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240004623A1 (en) * 2022-07-01 2024-01-04 Microsoft Technology Licensing, Llc Syntax subtree code strengthening

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8479169B1 (en) * 2008-10-20 2013-07-02 Google Inc. Code analysis via ranged values
JP5825163B2 (ja) 2012-03-19 2015-12-02 富士通株式会社 情報処理装置、情報処理方法、および情報処理プログラム
JP5900212B2 (ja) 2012-07-18 2016-04-06 富士通株式会社 テストデータ生成装置、該プログラム、及び該方法
US9753843B2 (en) * 2014-11-20 2017-09-05 Accenture Global Services Limited Automated testing of web-based applications
JP7070328B2 (ja) 2018-10-25 2022-05-18 日本電信電話株式会社 テストデータ生成装置、テストデータ生成方法及びプログラム
US20230028595A1 (en) * 2019-10-11 2023-01-26 Nippon Telegraph And Telephone Corporation Analysis function imparting device, analysis function imparting method, and analysis function imparting program

Also Published As

Publication number Publication date
US20220405063A1 (en) 2022-12-22
US11960862B2 (en) 2024-04-16

Similar Documents

Publication Publication Date Title
US10127141B2 (en) Electronic technology resource evaluation system
US8756460B2 (en) Test selection based on an N-wise combinations coverage
US9213625B1 (en) Method and apparatus for performing automated user-interface layout testing
US20080295085A1 (en) Integrated code review tool
TW201405306A (zh) 測試用例創建系統及方法
KR20130135271A (ko) 코드 복제 통지 및 아키텍처 변경 가시화
US11138097B2 (en) Automated web testing framework for generating and maintaining test scripts
WO2019056720A1 (zh) 自动化测试用例管理方法、装置、设备及存储介质
CN111897727A (zh) 软件测试方法、装置、计算机设备及存储介质
CN111078568A (zh) 代码规范方法、装置、计算机设备和存储介质
CN112433944A (zh) 业务测试方法、装置、计算机设备和存储介质
CN103186463B (zh) 确定软件的测试范围的方法和系统
CN112241370B (zh) 一种api接口类的校验方法、系统及装置
CN114201408A (zh) 回归测试方法、装置、计算机设备及存储介质
US8887112B2 (en) Test validation planning
US11960862B2 (en) Source code correction assistance apparatus and source code correction assistance method
CN115599683A (zh) 自动化测试方法、装置、设备及存储介质
WO2023277802A2 (en) Device and method for identifying errors in a software application
US11392371B2 (en) Identification of a partial code to be refactored within a source code
CN114661615A (zh) 一种fpga软件测试方法和设备
CN114968751A (zh) 一种无代码开发平台的程序调试方法和程序调试装置
JP6016623B2 (ja) ソフトウェア実行結果の成果物収集装置及び方法
JP2016126700A (ja) プログラム検証装置、プログラム検証方法及びプログラム検証プログラム
US11995146B1 (en) System and method for displaying real-time code of embedded code in a browser-window of a software application
CN117076312A (zh) 测试方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240201