import SparkApi
import os
from dotenv import load_dotenv, find_dotenv
#Следующая ключевая информация получается из консоли
_=load_dotenv(find_dotenv())
appid = os.getenv("SPARK_APP_ID")
api_secret=os.getenv("SPARK_APP_SECRET")
api_key=os.getenv("SPARK_APP_KEY")
#Используется для настройки большой версии модели, значение по умолчанию — «general/generalv2».
# domain = "general" # версия v1.5
domain = "generalv2" # версия v2.0
#CloudEnvironmentиз Адрес сервиса
# Spark_url = "ws://spark-api.xf-yun.com/v1.1/chat" # v1.5 среда из адреса
Spark_url = "ws://spark-api.xf-yun.com/v2.1/chat" # Среда v2.0 по адресу ws(s)://spark-api.xf-yun.com/v2.1/chat
text =[]
def getText(role,content):
jsoncon = {}
jsoncon["role"] = role
jsoncon["content"] = content
text.append(jsoncon)
return text
def getlength(text):
length = 0
for content in text:
temp = content["content"]
leng = len(temp)
length += leng
return length
def checklen(text):
while (getlength(text) > 8000):
del text[0]
return text
if __name__ == '__main__':
text.clear
# разделитель
delimiter = "####"
# Метод разделения классов эквивалентности изChain of Thought из prompt
ep_message=f"""{delimiter}Метод создания тестового примера класса эквивалентности заключается в разделении входных данных из области параметров на классы эквивалентности. Эти классы эквивалентности включают в себя действительные классы эквивалентностии Неверный класс эквивалентности,
действительные классы эквивалентность означает, что входные данные представляют собой набор, который является разумным и значимым для спецификации программы, используя действительные данные. классы эквивалентности позволяет проверить, реализует ли программа функции, указанные в спецификации.
Неверный класс эквивалентность относится к необоснованным и бессмысленным входным данным, которые составляют набор для спецификации программы, используя Неверный класс эквивалентность позволяет проверить, действительна ли программа, и избегать функций, отличных от тех, которые указаны в спецификации.
Затем выберите несколько репрезентативных значений из каждого класса эквивалентности в качестве тестовых примеров. Репрезентативные значения каждого класса в тесте эквивалентны другим значениям в этом классе.
Обратите особое внимание на то, что один тестовый пример может охватывать несколько тестов. классы эквивалентности, один тестовый пример может охватывать только один Неверный класс эквивалентности{delimiter}
Использование метода проектирования тестового примера класса эквивалентности требует выполнения следующих шагов: {delimiter}
шаг 1: {delimiter} делит входные параметры на классы эквивалентности. При разделении классов эквивалентности следует соблюдать следующие принципы: {delimiter}.
Когда входное условие обуславливает набор входных значений или предусматривает, что условие из должно быть выполнено, может быть установлено действительное классы эквивалентностииодин Неверный класс эквивалентности。
Когда входное условие является булевой величиной, можно определить действительное значение. классы эквивалентностииодин Неверный класс эквивалентность. Boolean — это двоичный тип перечисления, Логическая величина имеет два состояния: true и false 。
Когда задан набор входных значений (при условии n), и программе необходимо обрабатывать каждое входное значение отдельно, n действительно может быть установлено. классы эквивалентностииодин Неверный класс Пример эквивалентности: Входной символ описания условия: один из трех типов: китайский, английский, арабский, затем примите эти три значения как три действительные. классы эквивалентности, кроме того, любой символ, кроме трех символов из, рассматривается как Неверный. класс эквивалентности。
Истинное может быть установлено, когда предусмотрено, что входные данные должны соответствовать из правил. классы эквивалентности (соответствуют правилам) и несколько Неверный класс эквивалентности (Нарушение правил с разных сторон).
Когда известно, что элементы разделенного класса эквивалентности обрабатываются программой по-разному, класс эквивалентности следует дополнительно разделить на более мелкие классы эквивалентности {delimiter}
шаг 2: {delimiter} преобразует класс эквивалентности в тестовый пример в соответствии с [входными условиями][действительные классы эквивалентности][Неверный класс эквивалентности] Создайте таблицу классов эквивалентности. Таблица классов эквивалентности может быть предоставлена в виде уценки. В ней перечислены все разделенные классы эквивалентности и указан уникальный номер для каждого класса эквивалентности.
{delimiter}дизайн Тестовый пример охватывает действующие классы эквивалентности, вам нужно, чтобы этот тестовый пример охватил как можно больше вопросов, которые еще не были покрыты действующими веществами. классы эквивалентности, повторите этот шаг. Пока все издействительные классы эквивалентности, пока все не будут покрыты.
{delimiter}Разработать новый из тестовых случаев так, чтобы он покрывал только один из Неверный, который еще не был рассмотрен класс эквивалентности, повторяйте этот шаг, пока все не из Неверный класс Пока не будет рассмотрена эквивалентность, используйте уценку для тестовых примеров. изиз табличного формата вывода. {разделитель}
Вывод выводится следующим образом: {delimiter}
step1:{delimiter} <step 1 reasoning >
step2:{delimiter} <step 2 reasoning >
Тестовый пример: {delimiter} <response to customer>
"""
system_message = f"Вы старший инженер по тестированию. Ниже вы будете использовать тестовый пример класса эквивалентности. Метод тестового примера дизайна {ep_message}, {delimiter}. Введите параметры в соответствии со следующими параметрами интерфейса дизайна описания бизнеса: {delimiter}"
user_message = f"""Тестируемая система соответствует требованиям к системе программного обеспечения для самостоятельной покупки билетов на метро. Система получает только Одновременно можно использовать только одну банкноту номиналом 5 или 10 юаней, а билеты имеют только два номинала. 5 юаней или 10 Юань. в:
нравиться Вставьте купюру номиналом 5 юаней и выберите покупку билета номиналом 5 юаней., выдача билетов после завершения, Подскажите,что покупка билета прошла успешно。
нравиться Вставьте купюру номиналом 5 юаней и выберите покупку билета номиналом 10 юаней.,Он подскажет, что суммы недостаточно и купюра в 5 юаней будет возвращена.。
нравиться Вставьте купюру номиналом 10 юаней и выберите покупку билета номиналом 5 юаней., выдача билетов после завершения, Подскажите, что покупка билета прошла успешно и дайте сдачу в размере 5 юаней.
нравиться Вставьте купюру номиналом 10 юаней и выберите покупку билета номиналом 10 юаней.,После завершения покупки билет будет выдан, что свидетельствует об успешной покупке.。
нравиться Кнопка невыбора типа билета в течение указанного времени после ввода банкнот, возврат банкнот, Ошибка подсказки。
нравиться Не вставляйте купюры после выбора кнопки покупки билета,Ошибка подсказки."""
question = checklen(getText("user",system_message+user_message))
SparkApi.main(appid,api_key,api_secret,Spark_url,domain,question)
Согласно описанию бизнеса мы можем разделить входные параметры на следующие классы эквивалентности:
действительные классы эквивалентности | Неверный класс эквивалентности |
---|---|
Вставьте купюру номиналом 5 юаней и выберите покупку билета номиналом 5 юаней. | Вставьте купюру номиналом 5 юаней и выберите покупку билета номиналом 10 юаней. |
Вставьте купюру номиналом 5 юаней и выберите покупку билета номиналом 10 юаней. | Вставьте купюру номиналом 10 юаней и выберите покупку билета номиналом 5 юаней. |
Вставьте купюру номиналом 10 юаней и выберите покупку билета номиналом 5 юаней. | Вставьте купюру номиналом 10 юаней и выберите покупку билета номиналом 10 юаней. |
Кнопка невыбора типа билета в течение указанного времени после ввода банкнот | Не нажимайте кнопку покупки билета |
Не вставляйте купюры после выбора кнопки покупки билета | Кнопка невыбора типа билета в течение указанного времени после ввода банкнот |
Далее мы разрабатываем тестовые примеры на основе класса эквивалентности:
Номер варианта использования | входные параметры | ожидаемые результаты |
---|---|---|
1 | Вставьте купюру номиналом 5 юаней и выберите покупку билета номиналом 5 юаней. | Подскажите, что покупка билета прошла успешно |
2 | Вставьте купюру номиналом 5 юаней и выберите покупку билета номиналом 10 юаней. | Он подскажет, что суммы недостаточно и купюра в 5 юаней будет возвращена. |
3 | Вставьте купюру номиналом 10 юаней и выберите покупку билета номиналом 5 юаней. | Выдача билетов после завершения,Подскажите, что покупка билета прошла успешно и дать сдачу 5 юаней |
4 | Вставьте купюру номиналом 10 юаней и выберите покупку билета номиналом 10 юаней. | После завершения покупки билет будет выдан, что свидетельствует об успешной покупке. |
5 | Кнопка невыбора типа билета в течение указанного времени после ввода банкнот | Ошибка подсказки |
6 | Не вставляйте купюры после выбора кнопки покупки билета | Ошибка подсказки |