Файл: Отладка и тестирование программ: основные подходы и ограничения (Метод черного ящика).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 460

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

В той же области исследований Абреу и ван Гемунд [40.] предлагают алгоритм приближения для решения задачи о минимальном множестве ударов. По сути, эта проблема очень близка к проблеме диагностики. Основное различие состоит в том, что рассматриваются зависимости данных произвольной длины. Таким образом, задача теории диагностики эквивалентна общей задаче с вложенным множеством. Более того, она преобразуется в ЦЛП, тогда как Абреу и ван Гемун непосредственно решают проблему множества ударов.

Болл и Ларус [41.] предлагают алгоритмы мониторинга кода для профилирования и трассировки программ: профилирование подсчитывает количество выполнений каждого основного блока в программе. Трассировка инструкций записывает последовательность основных блоков, пройденных при выполнении программы. Их алгоритмы принимают график потока управления данной программы в качестве входных данных и находят оптимальные контрольные точки для трассировки и профилирования. Напротив, в задаче абстрактной диагностики приходится иметь дело напрямую с исходным кодом и фактическими переменными. Болл и Ларус также отмечают, что профилирование вершин (что близко к задаче диагностики) является сложной проблемой, и их внимание сосредоточено на профилировании ребер.

Фудживара [42.] определяет наблюдаемость и управляемость для аппаратного обеспечения. Он рассматривает наблюдаемость как распространение значения всех сигнальных линий на выходные. Соответственно, управляемость приводит в исполнение определенное значение в сигнальной линии. Он отмечает, что, если наблюдаемость и управляемость не выполнены, в схему должны быть добавлены дополнительные выходы и входы. Это дополнение тесно связано с положением линии и типом схемы. Более того, в этой работе не рассматривается, как выбрать лучшую точку для добавления ножек микросхемы. Кроме того, каждый раз, когда меняется количество выводов, необходимо выполнить переоценку наблюдаемости/управляемости линий.

Фридман [36.], Воас и Миллер [37.] рассматривают наблюдаемость и управляемость с точки зрения тестирования черного ящика. Они считают функцию наблюдаемой, если вся внутренняя информация о состоянии, влияющая на вывод, доступна как ввод или вывод во время отладки и тестирования. Их метод влияет на временное поведение программного обеспечения и может предоставлять конфиденциальную информацию.

В контексте распределенных систем подход, используемый в работе Тейна [43., 44.], определяет поведение системы, которое должно наблюдаться, только если оно может быть однозначно определено набором параметров/условий. Целью данной работы является использование детерминированных инструментов с минимальными издержками для достижения наблюдаемости. Недостатком данной работы является то, что авторы не представляют методику поиска приборов с минимальными накладными расходами. Таким образом, Тейн считает поведение управляемым относительно набора переменных только тогда, когда набор является управляемым в любое время. Автор также предлагает операционную систему ​​в реальном времени для достижения автономной управляемости.


Шутц [35., 45.] рассматривает наблюдаемость и управляемость для систем, запускаемых по времени и по событию. Однако авторский метод использует специальное оборудование для предотвращения воздействия эффектов непреднамеренных изменений системы. Шутц утверждает, что системы, запускаемые по времени, предлагают альтернативную гибкость по сравнению с запускаемыми по событию системами при обработке эффектов непреднамеренных изменений, вызванных принудительной наблюдаемостью. Соответственно, Шутц показывает, что в отличие от запускаемых по событию систем, запускаемые по времени системы имеют меньшие подобные эффекты в управляемости, поскольку отсутствует недостающая информация относительно их поведения и, следовательно, для сбора информации необходим дополнительный подход.

Подход, предложенный в работе [46.], по духу похож на предлагаемый подход, но в другом контексте. Автор анализирует структуру потока данных системы и определяет наблюдаемость и управляемость на основе количества информации, потерянной от входа к выходу системы. Его расчеты основаны на теории информации на битовом уровне. Этот метод оценивает управляемость потока на основе битов, доступных на входах модуля со входов программного обеспечения через поток. Соответственно, они оценивают наблюдаемость как биты, доступные на выходах программного обеспечения с выходов модуля через поток. Стоит заметить, что теоретико-информационный подход на уровне битов не подходит для анализа больших приложений реального мира, поскольку предлагаемый метод игнорирует тип операций, создающих поток данных, в то время как он влияет на наблюдение и управление данными, а также потому, что потерянные или поврежденные распространяемые биты в потоке могут привести к противоречивым наблюдения. Кроме того, несмотря на то, что объем информации, распространяемой по потоку, имеет большое значение, количество битов является неподходящим фактором измерения.

Для будущей работы есть несколько открытых проблем. Одна важная проблема – это расширение используемой формулировки до случая, когда появляется возможность обрабатывать структуры данных указателей. Метрики, которые включают сетевой поток или вычисляют непересекающиеся пути вершин, подходят лучше, поскольку эти концепции основаны на свойствах пути, а не на свойствах вершины. Доступ к интеллектуальным метрикам также желателен для разработки преобразований, генерирующих программы, которые могут быть оснащены более эффективно. Еще одно интересное направление исследований – разработка настраиваемой эвристики, алгоритмов аппроксимации и преобразований для решения рассматриваемой задачи оптимизации. Одним из таких преобразований может быть переход от задачи оптимизации к проблеме выполнимости для использования SAT-решателей.


ЗАКЛЮЧЕНИЕ

Тестирование и отладка программного обеспечения являются наиболее часто используемыми методами проверки и подтверждения качества программного обеспечения. Отладка представляет собой процедуру, состоящую в том, чтобы найти и исправить код, нарушающий программную спецификацию. В данной работе рассмотрена общая методика отладки приложений, изучено современное состояние этой технологии.

Тестирование программного обеспечения – это процедура выполнения программы или программной системы с целью обнаружения неисправностей. Тестирование программного обеспечения является важной деятельностью жизненного цикла разработки программного обеспечения. Обе этих процедур помогают разработчику обрести уверенность в том, что программа делает именно то, для чего она предназначена, уменьшить риски и затраты на разработку и внедрение. Другими словами, можно сказать, что это процесс выполнения программы с намерением найти ошибки. Цели и задачи тестирования вместе с современным состоянием также рассмотрены в этой работе.

На языке верификации и валидации тестирование черного ящика часто используется для валидации, а тестирование белого ящика – для верификации программного обеспечения. Тестирование по методу черного ящика основано на предположении, что тестер не знает содержимого и алгоритмов программного обеспечения, подразумевая только набор входных данных и предсказуемые выходные данные. Тестирование белого ящика в основном сфокусировано на внутренней логике и структуре кода. Выполнение этого метода предполагает, что программист обладает методиками, полностью знающими структуру программы. Промежуточным звеном между двумя этими методами выступает тестирование серого ящика, которое подразумевает прямой подход к тестированию по методу черного ящика, но также использует некоторые ограниченные знания о внутренней работе приложения. В данной работе были подробно описаны и изучены все вышеперечисленные методы, а также рассмотрены техники (виды) тестирования, которые относятся к стратегиям каждого из этих методов.

Проблема абстрактной диагностики является одной из важнейших проблем, возникающих в процессе тестирования программного обеспечения, если речь заходит о наблюдаемости и управляемости логики этого ПО. В данной работе рассмотрены общие понятия о наблюдаемости и управляемости, а также показаны некоторые направления для решения задачи диагностики.


Таким образом, цели и задачи курсовой работы выполнены в полном объеме.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Tassey G. The economic impacts of inadequate infrastructure for software testing. National Institute of Standards and Technology, RTI Project, 2017.
  2. Anvik J. L. Hiew, and G. C. Murphy. Coping with an open bug repository. In Proceedings of the 2005 OOPSLA Workshop on Eclipse Technology eXchange, pages 35–39, 2005.
  3. Nikkei IT pro, Tokyo Stock Exchange New Derivative Selling System Restored, due to initialization [Электронный ресурс] / URL: http://itpro.nikkeibp.co.jp/article/NEWS/20080212/293526 (Дата обращения: 13.08.2019)
  4. Lieberman H., The Debugging Scandal and What to Do About It,” Communications of the ACM 40, No. 4, 26–29 (April 1997).
  5. Eisenstadt M., “My Hairiest Bug War Stories,” Communications of the ACM 40, No. 4, 31–37 (April 1997).
  6. Baecker R., DiGiano C., and Marcus A., “Software Visualization for Debugging,” Communications of theACM40, No. 4, 44–54 (April 1997), and other papers in the same issue.
  7. Pauw W. De, Sevitsky G., “Visualizing Reference Patterns for Solving Memory Leaks in Java,” Lecture Notes in Computer Science 1628, Springer-Verlag, Heidelberg (1999), pp. 116–134 (Proceedings, European Conference on Object-Oriented Programming, Lisbon, Portugal).
  8. Zweben S., Heym W., Kimmich J. Systematic testing of data abstractions based on software specifications. J. Software Testing, Verificationand Reliability, 1992, 1(4): 39-55.
  9. Beizer B., Software Testing Techniques.London: International Thompson Computer Press, 2018.
  10. Godefroid P., Compositional Dynamic Test Generation.In Proceedings of POPL’2007 (34th ACM Symposium on Principles of Programming Languages), pages 47–54,Nice, January 2007.
  11. Copeland L., A Practitioner's Guide to Software Test Design. Boston: Artech House Publishers, 2017.
  12. Korel B., A Dynamic Approach of Test Data Generation. In IEEE Conference on Software Maintenance, pages 11–317, San Diego, November 1990.
  13. Fagan M. E., “Design and Code Inspections to Reduce Errors in Program Development,” IBM Systems Journal 15, No.3 (1976).
  14. Pressman R. S., Software Engineering: A Practitioner’s Approach, McGraw-Hill, New York (2015).
  15. Myers G. J., Software Reliability: Principles and Practices, John Wiley & Sons, Inc., New York (2016).
  16. Myers G. J., The Art of Software Testing, John Wiley & Sons, Inc., New York (2016).
  17. Beizer B., Software Testing Techniques, Van Nostrand Reinhold, New York (2018).
  18. Dijkstra E. W., “Notes on Structured Programming,” Structured Programming, O.-J. Dahl, E. W. Dijkstra, and C. A. R. Hoare, Editors, Academic Press, London (1972), pp. 1–82.
  19. Hamlet D., “Foundations of Software Testing: Dependability Theory,” Software Engineering Notes 19, No. 5 (Proceedings of the Second ACM SIGSOFT Symposium on Foundations of Software Engineering), 128–139 (1994).
  20. Musa J., Software Reliability Engineering, McGraw-Hill, Inc., New York (1998).
  21. Kan S. H., Parrish J., and Manlove D., “In-Process Metrics for Software Testing,” IBM Systems Journal 40, No. 1, 220–241 (2001).
  22. Bassin K., Kratschmer T., and Santhanam P., “Evaluating Software Development Objectively,” IEEE Software 15, No.6, 66–74 (1998).
  23. Saglietti F., Oster N., and Pinte F., “White and grey-box verification and validation approaches for safety- and security-critical software systems,” Information Security Technical Report, vol. 13, no. 1, pp. 10–16, 2008.
  24. Brand D., “ASoftware Falsifier,” Proceedings, Eleventh IEEE International Symposium on Software Reliability Engineering, San Jose, CA (October 8–11, 2000), pp. 174–185.
  25. Poston R. M., Automating Specification-Based Software Testing, IEEE Computer Society Press, Los Alamitos,CA(1996).
  26. Lee D., Yannakakis M., “Principles and Methods of Testing Finite State Machines—A Survey,” Proceedings of the IEEE 84, No. 8, 1090–1123 (1996).
  27. Paradkar A., “SALT—An Integrated Environment to Automate Generation of Function Tests for APIs,” Proceedings, Eleventh IEEE International Symposium on Software Reliability Engineering, San Jose,CA(October 8–11, 2000), pp. 304–316.
  28. Williams C., “Toward a Test-Ready Meta-Model for Use Cases,” Proceedings, Workshop on Practical UML-Based Rigorous Development Methods, Toronto, Canada (October 1, 2001), pp. 270–287.
  29. Whittaker J.A., “What Is Software Testing? And Why Is It So Hard?” IEEE Software 17, No. 1, 70–79 (January/February 2000).
  30. Srinivas N., and Dondeti J. "Black box and white box testing techniques- A Literature." International Journal of Embedded Systems & Applications 2.2 (2012).
  31. Mitra P., Chatterjee S., and Ali N., “Graphical analysis of MC/DC using automated software testing,”in Electronics Computer Technology (ICECT), 2011 3rd International Conference on, 2011, vol. 3, pp. 145 –149.
  32. Saglietti F., Oster N., and Pinte F. “White and grey-box verification and validation approaches for safety- and security-critical software systems,” Information Security Technical Report, vol. 13, no. 1, pp. 10–16, 2008.
  33. Mohd Ehmer K., and Khan F. "A Comparative Study of White Box, Black Box and Grey Box Testing Techniques." International Journal of Advanced Computer Sciences and Applications 3, no. 6 (2012): 12-15.
  34. Binder R.V. Design for Testability in Object-Oriented Systems. Communications of the ACM, 37(9):87–101, 2015.
  35. Schutz W. The Testability of Distributed Real-Time Systems. Kluwer Academic Publishers, Norwell, MA, USA, 2017.
  36. Freedman R.S. Testability of Software Components. IEEE Transactions on Software Engineering, 17(6):553–564, 2011.
  37. Voas J.M. and Miller K.W. Semantic Metrics for Software Testability. Journal of Systems and Software, 20(3):207–216, 2003.
  38. Reiter R. A theory of diagnosis from first principles. Artificial Intelligence, 32(1):57–95, 1987.
  39. Fijany A. and Vatan F. New high-performance algorithmic solution for diagnosis problem. In IEEE Aerospace Conference (IEEEAC), 2018.
  40. Abreu R. and van Gemund A. J. C. A low-cost approximate minimal hitting set algorithm and its application to model-based diagnosis. In Abstraction, Reformulation, and Approximation (SARA), 2009.
  41. Ball T. and Larus J.R. Optimally profiling and tracing programs. ACM Transactions on Programming Languages and Systems (TOPLAS), 16(4):1319–1360, 2019.
  42. Fujiwara H. Computational Complexity of Controllability/Observability Problems for Combinational Circuits. IEEE Transactions on Computers, 39(6):762–767, 1990.
  43. Thane H. and Hansson H. Towards Systematic Testing of Distributed Real-Time Systems. In Proceedings of the 20th IEEE RealTime Systems Symposium, pages 360–369, Washington, DC, USA, 1999. IEEE Computer Society.
  44. Thane H., Sundmark D., Huselius J., and Pettersson A. Replay Debugging of Real-Time Systems Using Time Machines. In Proceedings of the 17th International Symposium on Parallel and Distributed Processing, page 8, Washington, DC, USA, 2003. IEEE Computer Society.
  45. Schutz W. Fundamental Issues in Testing Distributed Real-Time Systems. Real-Time Systems, 7(2):129–157, 1994.
  46. Lattner C., and Adve V. LLVM: A Compilation Framework for Lifelong Program Analysis and Transformation. In Proceedings of the International Symposium on Code Generation and Optimization: Feedback directed and runtime Optimization, page 75, 2004.